微信企业支付 公众号付款到零钱(二)代码实现
微信企业支付公众号付款到零钱(二)代码实现
前言
在上一篇文章中,我们讨论了如何打通微信企业支付接口,并且提到了一个坑,即有序参数生成签名时,ksort()函数的使用。今天,我们将继续讨论如何实现公众号付款到零钱的功能。
参考官方文档
首先,我们需要参考微信官方文档,了解如何实现公众号付款到零钱的流程。根据官方文档,公众号付款到零钱涉及以下几个步骤:
1.生成预支付单2. 发起付款请求有序参数生成签名
在实现上述步骤之前,我们需要先生成一个签名。微信企业支付接口要求我们将参数值按照ASCII码值排序,然后使用ksort()函数来排序。
```phpfunction ksort($array) {
ksort($array);
}
//生成预支付单时的参数$prepay_id_params = array(
'appid' => 'your_appid',
'mch_id' => 'your_mch_id',
'nonce_str' => uniqid(),
'body' => '测试付款',
'total_fee' =>1,
);
// 将参数值按照ASCII码值排序ksort($prepay_id_params);
```
将参数值按照ASCII码值排序
在上面的代码中,我们使用了ksort()函数来排序参数值。ksort()函数会根据ASCII码值对数组进行排序。
```phpfunction ksort($array) {
ksort($array);
}
//生成预支付单时的参数$prepay_id_params = array(
'appid' => 'your_appid',
'mch_id' => 'your_mch_id',
'nonce_str' => uniqid(),
'body' => '测试付款',
'total_fee' =>1,
);
// 将参数值按照ASCII码值排序ksort($prepay_id_params);
```
解决ksort()函数的使用
在上面的代码中,我们使用了ksort()函数来排序参数值。然而,ksort()函数会将数组中的键名和值都进行排序,而我们只需要对值进行排序。
```phpfunction ksort($array) {
uksort($array, 'strnatcasecmp');
}
//生成预支付单时的参数$prepay_id_params = array(
'appid' => 'your_appid',
'mch_id' => 'your_mch_id',
'nonce_str' => uniqid(),
'body' => '测试付款',
'total_fee' =>1,
);
// 将参数值按照ASCII码值排序ksort($prepay_id_params);
```
生成预支付单
在上面的步骤中,我们已经将参数值按照ASCII码值排序,并且使用了ksort()函数来解决排序问题。现在,我们可以生成预支付单。
```phpfunction getPrePayId($params) {
$prepay_id_params = array(
'appid' => 'your_appid',
'mch_id' => 'your_mch_id',
'nonce_str' => uniqid(),
'body' => '测试付款',
'total_fee' =>1,
);
// 将参数值按照ASCII码值排序 ksort($prepay_id_params);
$sign = getSign($prepay_id_params);
$prepay_id_params['nonce_str'] = uniqid();
$prepay_id_params['sign'] = $sign;
return json_encode($prepay_id_params);
}
//生成预支付单$prepay_id = getPrePayId(array());
```
发起付款请求
在上面的步骤中,我们已经生成了预支付单。现在,我们可以发起付款请求。
```phpfunction pay($params) {
$pay_params = array(
'appid' => 'your_appid',
'mch_id' => 'your_mch_id',
'nonce_str' => uniqid(),
'prepay_id' => $prepay_id,
'sign' => getSign($pay_params),
);
return json_encode($pay_params);
}
// 发起付款请求$pay = pay(array());
```
总结
在本文中,我们讨论了如何实现公众号付款到零钱的功能。我们首先参考微信官方文档,了解了流程,然后使用ksort()函数来排序参数值,并且解决了ksort()函数的使用问题。最后,我们生成预支付单和发起付款请求。
参考
* 微信企业支付接口文档: PHP ksort()函数文档: