微信支付接口开发之---微信支付之JSSDK(公众号支付)步骤
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信支付接口开发之---微信支付之JSSDK(公众号支付)步骤相关的知识,希望对你有一定的参考价值。
1、准备
1.1、公众号为服务号,开通微信支付功能
1.2、为了方便调试微信后台的回调URL(必须为外网),我用了nat123软件来做一个映射
1.3、官方微信开发的示例WxPayApi(.net版本)
2、业务流程图
![技术分享](https://image.cha138.com/20200617/5d33e30dc01f48229516797a51b09572.jpg)
![技术分享](file:///C:/Users/Administrator/AppData/Local/YNote/data/qq61012E0BD9B754EC7A421AC75AC654E6/1e4bed3705a0457b8103a9cb971eba70/chapter7_4_1.png)
3、步骤
3.1、用户访问商户的链接,商户链接地址调用【网页授权获取用户信息】接口获取用户的openid和access_token
参考:网页授权获取用户基本信息
3.1.1、第一步,用户同意授权,获取code,调用接口如下
如:redirect_uri填:http://edoec.com/EdoecPayWeb/Views/WxPay/ProductPage.aspx,redirect_uri网址的域名(这里是edoec.com)要先在公众号的“网页授权获取用名基本信息”的“授权回调域名地址”里设置好,如下图:
这个接口要调用成功的条件是要在公众号的“网页授权获取用户基本信息”填写“授权回调页面域名”否则微信公众号支付jsapi,打开网页后,出错如下错误:redirect_uri错误
![技术分享](https://image.cha138.com/20200617/e8c24e89095445eaa7ac5d0a53ab1a8e.jpg)
![技术分享](https://image.cha138.com/20200617/31d4c350221d4805a3080ee85fc1c4a5.jpg)
![技术分享](file:///C:/Users/Administrator/AppData/Local/YNote/data/qq61012E0BD9B754EC7A421AC75AC654E6/f6fbece895b2485c85adc9fb4cb7c10c/clipboard.png)
![技术分享](file:///C:/Users/Administrator/AppData/Local/YNote/data/qq61012E0BD9B754EC7A421AC75AC654E6/f48fa69c051a4f398a787892ad62a1e8/clipboard.png)
授权回调页面的域名是上面:redirect_uri的域名,即:edoec.com
![技术分享](https://image.cha138.com/20200617/0fcbd280bfe344889432e86dc9d847c2.jpg)
![技术分享](file:///C:/Users/Administrator/AppData/Local/YNote/data/qq61012E0BD9B754EC7A421AC75AC654E6/f8eca0b136eb4688ad17699d23186fb6/clipboard.png)
![技术分享](file:///C:/Users/Administrator/AppData/Local/YNote/data/qq61012E0BD9B754EC7A421AC75AC654E6/c25f6936d57548eebd96e6e40661a306/clipboard.png)
![技术分享](https://image.cha138.com/20200617/2948c89a544c48ebae87a51374653a60.jpg)
3.1.2、第二步,通过回调地址redirect_uri收到code值,通过code换取网页授权access_token和openid
请求格式如:
![技术分享](https://image.cha138.com/20200617/e138349010ee437082097d096205ade8.jpg)
![技术分享](https://image.cha138.com/20200617/5ff16e9b16c74a73895ddf5bba9d7571.jpg)
![技术分享](file:///C:/Users/Administrator/AppData/Local/YNote/data/qq61012E0BD9B754EC7A421AC75AC654E6/1ec5130a233c488cb89529813b85b4a0/clipboard.png)
![技术分享](file:///C:/Users/Administrator/AppData/Local/YNote/data/qq61012E0BD9B754EC7A421AC75AC654E6/277441581eda4c519e0415005c126ef2/clipboard.png)
![技术分享](file:///C:/Users/Administrator/AppData/Local/YNote/data/qq61012E0BD9B754EC7A421AC75AC654E6/11ba1f91af4d4e95837f17dc2e2ba82b/clipboard.png)
在WxPayApi示例里第二步出错:
请求格式:
出错如下:
![技术分享](https://image.cha138.com/20200617/66288caf7f6444fb848a48dc1918fc98.jpg)
![技术分享](file:///C:/Users/Administrator/AppData/Local/YNote/data/qq61012E0BD9B754EC7A421AC75AC654E6/32ed147e38764471810522688b63b211/clipboard.png)
原因:在HttpService.cs的get方法里用了代理,我代理里的ip写成了空,不要用代理
![技术分享](https://image.cha138.com/20200617/2a38d914f93041408450bcda03866ae0.jpg)
![技术分享](file:///C:/Users/Administrator/AppData/Local/YNote/data/qq61012E0BD9B754EC7A421AC75AC654E6/1b616dbaf2a44cd8b8134426afd61b25/clipboard.png)
3.2、用3.1中获取到openid调用统一下单api,代码如下
![技术分享](file:///C:/Users/Administrator/AppData/Local/YNote/data/qq61012E0BD9B754EC7A421AC75AC654E6/fd2b3e265b68410482296efef300fc14/clipboard.png)
通过调用url:https://api.mch.weixin.qq.com/pay/unifiedorder,来在微信支付系统下单,生成账单,这里会返回生成账单的账单号prepay_id
3.3、最终在html5界面调用支付JSAPI(对应业务流程图的“JSAPI接口请求支付”流程):
需要:
1、在3.2步骤里微信支付系统通过统一下单已经产生的单号:prepay_id,和paySign
2、发起支付的HTML5界面必须在微信公众号——>微信支付——〉开发配置——〉支付授权目录里,如下图
![技术分享](https://image.cha138.com/20200617/20280bbf83534dd7b983b217cf4270c6.jpg)
![技术分享](https://image.cha138.com/20200617/acb897eab3d145028ab70be9427b46ec.jpg)
![技术分享](file:///C:/Users/Administrator/AppData/Local/YNote/data/qq61012E0BD9B754EC7A421AC75AC654E6/0c9dc962157746eeb6b6941a418de42a/clipboard.png)
![技术分享](file:///C:/Users/Administrator/AppData/Local/YNote/data/qq61012E0BD9B754EC7A421AC75AC654E6/396138a3278c40c0a920b18e2f2af599/clipboard.png)
![技术分享](file:///C:/Users/Administrator/AppData/Local/YNote/data/qq61012E0BD9B754EC7A421AC75AC654E6/3ae9bce9646a49449d9b25706083a835/clipboard.png)
格式如下:
"{\"appId\":\"wxa842e8005c427e2d\",\"nonceStr\":\"1f2f9eda959b468e8c98c100e5e3b755\",\"package\":\"prepay_id=wx201602291402363c9dbefb210900648129\",\"paySign\":\"94AB6A4E818266C0338A4A28E08D016C\",\"signType\":\"MD5\",\"timeStamp\":\"1456725741\"}"
![技术分享](file:///C:/Users/Administrator/AppData/Local/YNote/data/qq61012E0BD9B754EC7A421AC75AC654E6/5a9d21fe8a9349cea42b536b79c38246/clipboard.png)
![技术分享](https://image.cha138.com/20200617/9e323df98f6c4a328332d9f07ecc698c.jpg)
以上是关于微信支付接口开发之---微信支付之JSSDK(公众号支付)步骤的主要内容,如果未能解决你的问题,请参考以下文章