**写在前面:
本人一直“奉行授人以鱼不如授人以渔”,本文主要是起一个引导的作用,注意一些很坑的地方。
微信支付,本人菜鸟花了2天时间弄出来,也算是有点成就感,所以特此做个记录
**
分割线—————————————————————————
正文开始:
先来看看微信官方流程图:
总结起来就是四个步骤:
- 点击支付按钮
- 微信拉起支付,输入密码
- 完成支付
- 通知微信服务器
下面就是我做测试支付的图:
点击支付按钮(后台一大堆业务逻辑处理,后面会讲):
微信拉起支付(这个调用微信自动完成的):
完成支付,通知微信(这个需要我们自己完成业务逻辑,后面会讲到)
流程就是这样,其实总结出来,我们需要做的就是2步:
流程图中
4:统一下单
5:调用统一下单api
6:生成下单签名
(4 5 6)可以并为一步
11:告知微信通知处理结果
开始编码实现:
查阅文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_3
获取到统一下单接口:
统一下单接口:https://api.mch.weixin.qq.com/pay/unifiedorder
文档中说明,统一下单必须获取openid,各位客官别急,待我带你们一起查阅官方文档:
https://mp.weixin.qq.com/wiki?action=doc&id=mp1421140842&t=0.003036260317902828#1
这里一大堆说的就是获取openid,文档讲的十分清楚。
先放下prepay_id,我们来说说如何获取open_id(因为没有open_id,我们也没法去获取prepay_id)
获取这个分为4步:
- 用户同意授权,获取code
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE
我来解释下后面附带参数的意思:
appid: 用户唯一凭证,就是微信公众号的应用id
redirect_uri: 这个就是回调url,注意这个url 会附带着 code过去,就是第一步中的code。
scope: 有两种 snsapi_base 和 snsapi_userinfo 具体请参照文档
state: 随意填写
其他参数 照写 - 通过code换取网页授权access_token
请求以下链接获取access_token: https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
参数说明:
appid:这个参数使用都是一样的
secret: 这个参数在位置支付基本配置中可以查看
code: 第一步获取的code
grant_type:不变
请求这个就能返回如下json
{
"access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE"
}
解析上述json字符就可以获取到openid了。各位客官,可以喝杯茶休息休息啦!
接着来:有了openid,开始获取prepay_id
继续文档:
查阅文档: