|
|
<?php
|
|
|
|
|
|
namespace yisheng\account;
|
|
|
|
|
|
|
|
|
use yisheng\Base;
|
|
|
|
|
|
class Ledger extends Base
|
|
|
{
|
|
|
|
|
|
/**
|
|
|
* 分账接收方请求绑定
|
|
|
* @param string $ledger_bind_number 绑定订单号
|
|
|
* @param string $org_mercode 子商户-交易商户号
|
|
|
* @param string $org_termno 子商户-交易终端号
|
|
|
* @date 2022-06-07
|
|
|
*/
|
|
|
public function bind($ledger_bind_number, $org_mercode, $org_termno)
|
|
|
{
|
|
|
//请求参数
|
|
|
$data = [
|
|
|
'orgId' => $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;
|
|
|
}
|
|
|
|
|
|
} |