前提:商户号,各种授权域名 ,app_id api_key 证书 等,都已配置好了。
不会配置的参考官方文档:
https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter2_1.shtml
主要流程
-
前端:用户点购买按钮
-
前端:初始化jssdk
-
前端:调用后端接口,尝试生成预支付订单。
-
后端:生成预支付订单(比如订单的金额,编号,商品)。调用微信统一下单接口,成功后返回给前端
-
前端:收到后端返回的参数。使用这些参数,发起支付,此时出现支付的界面
-
用户输入密码,支付成功
-
微信回调后端接口,后端接收到微信的回调后,处理业务,比如修改订单状态为已支付。
代码截图,上面的每一步流程,都标注在代码中了:
前端代码(uniapp uviewui)
后端代码:laravel+easyWechat
后端接口:…/jssdk-config,用于返回给前端,初始化jssdk的参数
后端接口:…/buy-card (我这个业务场景就购买会员卡,所以起的这个名字)
WxPay类中的 unipay方法
支付成功后的回调
微信会以post方式,发来一段xml,只要拿到了这个返回数据,一切就很好办了。
注意是post,是post!之前我写成get了,导致一直收不到回调,折腾了好久!
在laravel中,是这样获取的:
$content = request()->getContent();//得到xml字符串。看业务需要,easyWechat是已帮我们处理好了的。
我的业务代码,仅供参考
WxPay 的 callBack方法