记录接入微信支付JSAP Native遇到的坑
如果您发现本文排版有问题,可以先点击下面的链接切换至老版进行查看!!!
记录接入微信支付JSAP Native遇到的坑
运动健康转换工具接入微信支付一个月了,着实给自己减少了很多工作量,尤其是加入了转换失败是自动全额退款,降低跑友的担心,自己也避免了很多麻烦,让自己能更加放心的增加新功能,毕竟即使出错了,不用担心跑友因为金钱损失而给我压力。
在这一个月的过程也有对微信支付更深层次的了解,特此记录下自己遇到的坑
不能只接入微信支付方式
比如不能接入JSAPI、H5或者Native一种方式。鉴于运动记录转换工具主要是在PC上使用,所以当初只接入了Native支付方式,同时发现在手机浏览器以及手机微信上,都能直接唤起支付界面,结果在输入密码后会提示"该商户暂时不支持通过长按识别二维码完成支付。"
不少跑友可能会在手机微信上打开官网进行操作,这种场景下到最后的支付环节是不成功。
官方文档的说明如下
Native支付模式介绍
1、商户下单获取订单的二维码链接code_url,将code_url转换为二维码图片展示给用户。 2、用户使用微信“扫一扫”进行扫码(不支持通过相册识别或长按识别二维码的方式完成支付)。 3、扫码进入到微信的支付确认界面,用户可在该页面确认收款方和金额。
不同支付方式使用场景
- JSAPI 微信内(即微信内置浏览器)
- H5 手机浏览器
- Native PC网址浏览器
- APP 顾名思义就是app支付了
- 小程序支付
不同支付方式的数据加密方式可能略有不同
目前发现Native模式和JSAP方式就不太一样
比如Native是类似WECHATPAY2-SHA256-RSA2048 mchid="${MCH_ID}",nonce_str="${nonceStr}",signature="${paySign}",timestamp="${timeStamp}",serial_no="${MCH_SERIAL_NO}
而JSAPI是这样
WeixinJSBridge.invoke('getBrandWCPayRequest', {
"appId": "wx2421b1c4370ec43b", //公众号appID,由商户传入
"timeStamp": "1554208460", //时间戳,自1970年以来的秒数
"nonceStr": "593BEC0C930BF1AFEB40B4A08C8FB242", //随机串
"package": "prepay_id=wx201410272009395522657a690389285100",
"signType": "RSA", //微信签名方式:
"paySign": "mI35pfNEQV6777ke/1T+LJLQDNTm7yeoUJH+j/adPGhmCCi0PbgkvYQTRcXH0uibcLVtvFLdGLpmoYO9FV6lBBsTAjuhh5YOvQi0e2g3e0yytitiNET9FEuqM0pjnKfRW4K6LIZDdbWJv9KhZUx3DrJa5TL7OJ7VdADVivxVySIlPVKjGwuCXzuXSJes0UcILgWQUMyha5/3nYofuHtS7r+KYyMuxD+oJ9VM1Qdxk4UIG59CP5Y3wtYIFybyF3bdu1caHTRRX+DLyMXyYA/IrTmiW01c4RPjpHBX5Dk1sZyY1zVsWNsvMHr2e1NTWtBxKJ+qk5N61J7caYoepHFaxw==%" //微信签名
},
function(res) {
if (res.err_msg == "get_brand_wcpay_request:ok") {
// 使用以上方式判断前端返回,微信团队郑重提示:
//res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
}
}
);
iphone手机调用支付JSAPI缺少timeStamp参数
明明传了timeStamp参数但是在iPhone微信使用时会提示此错误,安卓手机没问题。这是因为timeStamp的值应该是String类型,传数值型是不行的
- 分类:
- Web前端
更新时间:
上一篇:下一篇: