$this->config['org_id'], //客户编号 'orgMerCode' => $this->config['org_mercode'], //交易商户号 'orgTermNo' => $this->config['org_termno'], //交易终端号 'orgTrace' => $ledger_bind_number, //外部系统订单号(确保唯一,前后不允许带空格) 交易流水号 'signType' => 'RSA', //签名方式 'bizData' => [ //业务请求数据,签名数据 'orgMercode' => $org_mercode, 'orgTermno' => $org_termno ], ]; $data['sign'] = $this->getSign($data['bizData']); //签名 $this->setUrl($this->baseUrlLedger); $result = $this->actionApi($data, '/ledger/mposbind'); // 记录日志 $uid = defined('UID') ? UID : ''; platformLog($data, $result, 'yisheng_ledger_bind_uid_' . $uid); return $result; } /** * 请求分账 * @param string $ledger_number 分账订单号 * @param string $ori_order_number 原订单号 * @param array $data_list 分账列表,org_mercode--交易商户号 org_termno--交易终端号,org_sub_trace--交易订单号,trans_amt--分账金额,fee_cost_amt--子订单成本金额 * @date 2022-06-07 */ public function ledger($ledger_number, $ori_order_number, $data_list = []) { //请求参数 $data = [ 'orgId' => $this->config['org_id'], //客户编号 'orgMercode' => $this->config['org_mercode'], //交易商户号 'orgTermNo' => $this->config['org_termno'], //交易终端号 'orgTrace' => $ledger_number, //外部系统订单号(确保唯一,前后不允许带空格) 交易流水号 'signType' => 'RSA', //签名方式 'bizData' => [ //业务请求数据,签名数据 'oriOrgTrace' => $ori_order_number, 'transCount' => (string)count($data_list), //子订单总笔数 字符串 'transAmt' => (string)(array_sum(array_column($data_list, 'trans_amt')) * 100), //子订单总金额 字符串 ], ]; foreach ($data_list as $k => $v) { $orderSubDetails[] = [ // 子商户号 'orgMercode' => $v['org_mercode'], // 子终端号 'orgTermno' => $v['org_termno'], // 子交易流水 'orgSubTrace' => $v['org_sub_trace'], // 子订单分账金额 'transAmt' => (string)($v['trans_amt'] * 100), // 子订单成本金额 'feeCostAmt' => (string)($v['fee_cost_amt'] * 100) ]; } //生成32位对称秘钥 $key = $this->getKey(); //使用对称密钥, 按照AES256_ECB算法对敏感信息加密 $data['bizData']['orderSubDetails'] = $this->encrypt($orderSubDetails, $key); //子订单明细,加密后 //使用接收方的公钥,对32位对称秘钥进行加密 $data['bizData']['dgtlEnvlp'] = $this->encryptWithPKCS1($key); $data['sign'] = $this->getSign($data['bizData']); //签名 $this->setUrl($this->baseUrlLedger); $result = $this->actionApi($data, '/ledger/mpos'); // 记录日志 $uid = defined('UID') ? UID : ''; platformLog($data, $result, 'yisheng_ledger_uid_' . $uid); return $result; } /** * 分账请求结果查询 * @param string $ledger_query_number 分账查询编号 * @param string $ori_ledger_number 原订单号 * @date 2022-06-30 */ public function ledgerQuery($ledger_query_number, $ori_ledger_number) { //请求参数 $data = [ // 客户编号 'orgId' => $this->config['org_id'], // 交易商户号 'orgMerCode' => $this->config['org_mercode'], // 交易终端号 'orgTermNo' => $this->config['org_termno'], // 分账查询编号 'orgTrace' => $ledger_query_number, // 产品代码 'prodCode' => 'W04', // 签名方式 'signType' => 'RSA ', // 业务请求数据,签名数据 'bizData' => [ // 原分账订单编号 'oriOrgTrace' => $ori_ledger_number ], ]; // 签名 $data['sign'] = $this->getSign($data['bizData']); $this->setUrl($this->baseUrlLedger); $result = $this->actionApi($data, '/ledger/mposfind'); // 记录日志 $uid = defined('UID') ? UID : ''; platformLog($data, $result, 'yisheng_ledger_query_uid_' . $uid); return $result; } }