最近在做跨平台小程序,所以涉及到了各平台的支付功能。
首先看一下百度小程序提供的参数组装:
接下来就是自己对这些参数进行组装,代码如下:
/**
* 构造参数
* @param array $post 订单数据
* @return mixed
* @throws Exception
*/
public function createParam($post = []){
if (empty($post)) return false;
$data['dealId'] = 'dealId(百度收银台的财务结算凭证)'; // 跳转百度收银台支付必带参数之一,是百度收银台的财务结算凭证,与账号绑定的结算协议一一对应,每笔交易将结算到dealId对应的协议主体
$data['appKey'] = 'appKey(表示应用身份的唯一ID)'; // 支付能力开通后分配的支付appKey,用以表示应用身份的唯一ID,在应用审核通过后进行分配,一经分配后不会发生更改,来唯一确定一个应用
$data['totalAmount'] = 'totalAmount(订单总金额,以分为单位)'; // 订单总金额,以分为单位
$data['tpOrderId'] = 'tpOrderId(商户平台自己记录的订单ID)'; // 商户平台自己记录的订单ID
$data['rsaSign'] = $this->genSignWithRsa($data,$config['bd_pri_key']); // 对appKey+dealId+tpOrderId+totalAmount进行RSA加密后的签名,防止订单被伪造
$data['dealTitle'] = $post['title']; // 订单的名称
$data['signFieldsRange'] = 1; // 固定值1
$data['bizInfo'] = ''; // 订单详细信息,需要是一个可解析为JSON Object的字符串
return $data;
}
参考百度提供的PHP生成签名的工具类
/**
* @desc 私钥生成签名字符串
* @param array $assocArr
* @param string $priKey
* @param bool $rsaPriKeyStr
* @return bool|string
* @throws Exception
*/
public function genSignWithRsa(array $assocArr,$priKey, $rsaPriKeyStr = true)