微信、支付宝二维码支付集成

先来几个网址:

微信支付商户平台:https://pay.weixin.qq.com/

微信支付API接口:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_1

微信支付签名生成:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=4_3

微信支付签名校验:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=20_1

支付模板及物料收银台下载:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_2

支付发起定时轮循:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=23_9&index=1

生成微信支付二维码之后,开启定时器,不断发送异步请求。

一般支付的流程都是 有两个回调,一个是同步的也就是直接跳转,另一种是异步通知。如果没有异步通知,那我们只有依赖支付对账功能

支付对账:调用查询接口查询订单是否成功

实现流程:用户发起支付,弹出 【支付完成】 【未正常支付】的弹窗,支付窗口弹出到新的链接。 当前页面设置延迟1分钟后自动查询支付接口,或 点击支付成功后查询支付结果。

定时任务轮询查询接口功能也要有。防止用户将所有窗口都关闭。

查询订单API:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_2

 

仿真环境支付验收:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=23_1

仿真环境沙箱签名:https://api.mch.weixin.qq.com/sandboxnew/pay/getsignkey

注意:

1、仿真环境及沙箱环境测试时用的签名是沙箱签名sandbox_signkey,而实际生产环境用到的是真实的key

2、沙箱测试环境,具体的支付金额参照仿真环境验收网址里对应验收的金额,如金额301正常支付,随意填写金额会提示错误。

3、沙箱环境测试返回的<code_url><![CDATA[weixin://wxpay/s/An4baqw]]></code_url>中的url生成二维码会提示过期,真实环境正常显示商户名和支付金额的。

 

JSAPI支付

获取浏览器user agent来确定用户当前的版本号,直接js调用如下代码

navigator.userAgent

成功后返回类似:

电脑浏览器:

"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36"

以iPhone版本为例,可以通过user agent可获取如下微信版本示例信息:

"Mozilla/5.0(iphone;CPU iphone OS 5_1_1 like Mac OS X) AppleWebKit/534.46(KHTML,like Geocko) Mobile/9B206 MicroMessenger/5.0"

其中5.0为用户安装的微信版本号,商户可以解析以上HTTP头,获取到微信版本号是否高于或者等于5.0。

获取openid:

https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_4

判断微信浏览器(是否是微信内置浏览器)

string userAgent = this.Request.Headers["User-Agent"];

if (!string.IsNullOrEmpty(userAgent) && userAgent.IndexOf("MicroMessenger") > 0){}

声明:本站内容来源于原创和互联网,尊重作者版权,转载请注明来源网址,欢迎收藏,谢谢!