道招

记录接入微信支付JSAP Native遇到的坑

如果您发现本文排版有问题,可以先点击下面的链接切换至老版进行查看!!!

记录接入微信支付JSAP Native遇到的坑

运动健康转换工具接入微信支付一个月了,着实给自己减少了很多工作量,尤其是加入了转换失败是自动全额退款,降低跑友的担心,自己也避免了很多麻烦,让自己能更加放心的增加新功能,毕竟即使出错了,不用担心跑友因为金钱损失而给我压力。

在这一个月的过程也有对微信支付更深层次的了解,特此记录下自己遇到的坑

不能只接入微信支付方式

比如不能接入JSAPI、H5或者Native一种方式。鉴于运动记录转换工具主要是在PC上使用,所以当初只接入了Native支付方式,同时发现在手机浏览器以及手机微信上,都能直接唤起支付界面,结果在输入密码后会提示"该商户暂时不支持通过长按识别二维码完成支付。"

不少跑友可能会在手机微信上打开官网进行操作,这种场景下到最后的支付环节是不成功。

官方文档的说明如下

Native支付模式介绍

1、商户下单获取订单的二维码链接code_url,将code_url转换为二维码图片展示给用户。 2、用户使用微信“扫一扫”进行扫码(不支持通过相册识别或长按识别二维码的方式完成支付)。 3、扫码进入到微信的支付确认界面,用户可在该页面确认收款方和金额。

不同支付方式使用场景

  1. JSAPI 微信内(即微信内置浏览器)
  2. H5 手机浏览器
  3. Native PC网址浏览器
  4. APP 顾名思义就是app支付了
  5. 小程序支付

不同支付方式的数据加密方式可能略有不同

目前发现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类型,传数值型是不行的

更新时间:
上一篇:下一篇:

相关文章

关注道招网公众帐号
友情链接
消息推送
道招网关注互联网,分享IT资讯,前沿科技、编程技术,是否允许文章更新后推送通知消息。
允许
不用了