记录微信支付遇到的问题

Kbone 微信小程序 + php微信支付

后台

php编写统一下单接口和调取微信支付接口

easyWechat 4.0

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public function test()
{
$config = [
// 必要配置
'app_id' => 'app_id',
'mch_id' => 'mch_id',
'key' => 'key', // API 密钥
// 如需使用敏感接口(如退款、发送红包等)需要配置 API 证书路径(登录商户平台下载 API 证书)
'cert_path' => 'path/to/your/cert.pem', // XXX: 绝对路径!!!!
'key_path' => 'path/to/your/key', // XXX: 绝对路径!!!!
'notify_url' => '微信支付回调接口'
];
$payment = Factory::payment($config);
$result = $payment->order->unify([
'body' => '商品名称',
'out_trade_no' => date("Y") . date("m") . date("d") . date("H") . date("s"),
'total_fee' => 金额(分),
'notify_url' => '微信支付回调接口', // 支付结果通知网址,如果不设置则会使用配置里的默认地址
'trade_type' => 'JSAPI', // 请对应换成你的支付方式对应的值类型
'openid' => "openid",
]);
$jssdk = $payment->jssdk;
$config = $jssdk->bridgeConfig($result["prepay_id"], false); // 返回数组
$this->success("返回成功",$config);
}

前端

编写支付方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
miniProgramPay() { 
return new Promise((resolve, reject) => {
getWxzfData().then(res => {
if (res.data.code === 0) {
reject(res['data']['msg']);
return;
}
let priObj = res['data']['data'];
wx.requestPayment({
timeStamp: priObj.timeStamp,
nonceStr: priObj.nonceStr,
package: priObj.package,
paySign: priObj.paySign,
signType:priObj.signType,
success(res) {
resolve(res)
},
fail(res) {
reject(res );
}
})
}).catch(err=>{
reject(JSON.stringify(err))
})
})
}

在确认授权后调用支付即可。

  1. 商户号和小程序需要关联

  2. 在开发过程中,开发者必须有运营者和开发者的权限,否则无法调起微信支付,提示支付签名验证失败。