公众号,小程序微信支付基于PHP后端,附完整流程【小白教程,大神绕道,附支付错误解决办法】
我可以帮助你描述完整的流程。
前端配置
首先,我们需要在前端配置微信支付相关的代码。在这个例子中,我们使用微信自定义的一个方法:WeixinJSBridge.invoke()。这个函数只在微信中生效,其他浏览器会报错。
```javascript// 前端配置WeixinJSBridge.invoke('getBrandWCPayStatus', {
'appId': '你的APPID',
'timeStamp': '时间戳',
'nonceStr': '随机字符串',
'package': '包信息'
}, function(res) {
if (res.err_msg == "get_brand_wcpay_status:ok") {
// 支付成功 }
});
```
参数配置
在上面的代码中,我们需要填写几个参数:
* `appId`:你的微信公众号的APPID。
* `timeStamp`:时间戳,使用`Date.now()`函数获取。
* `nonceStr`:随机字符串,使用`Math.random()`函数生成。
* `package`:包信息,具体格式见下文。
后端配置
接下来,我们需要在后端配置支付相关的代码。在这个例子中,我们使用YII框架写一个PHP脚本来处理支付请求。
```php// 后端配置public function actionPay()
{
// 获取微信支付参数 $appId = Yii::$app->params['wechatAppId'];
$timeStamp = Yii::$app->request->post('timeStamp');
$nonceStr = Yii::$app->request->post('nonceStr');
$package = Yii::$app->request->post('package');
// 验证签名 $sign = WeChat::verifySign($appId, $timeStamp, $nonceStr);
if ($sign) {
// 支付成功 return $this->redirect(['success']);
} else {
// 支付失败 return $this->redirect(['error']);
}
}
```
支付错误解决办法
如果支付过程中出现错误,需要根据具体的错误信息进行处理。在这个例子中,我们使用YII框架提供的`ErrorAction`类来处理支付错误。
```php// 支付错误解决办法public function actionError()
{
// 获取错误信息 $error = Yii::$app->request->post('error');
// 处理错误信息 switch ($error) {
case 'PARAM_ERROR':
// 参数错误 return $this->redirect(['param-error']);
case 'SIGN_ERROR':
// 签名错误 return $this->redirect(['sign-error']);
default:
// 其他错误 return $this->redirect(['other-error']);
}
}
```
完整流程
综合上述内容,我们可以得到一个完整的支付流程:
1. 前端配置微信支付相关的代码。
2. 用户点击支付按钮,触发前端配置的函数。
3. 函数验证签名并将参数传递给后端。
4. 后端接收参数并进行验证。
5. 如果验证成功,则执行支付逻辑。
6. 如果验证失败,则跳转到错误页面。
以上就是一个完整的支付流程。