美文网首页javaScript
小程序支付与微信支付的差异,从零分析小程序支付

小程序支付与微信支付的差异,从零分析小程序支付

作者: 反者道之动001 | 来源:发表于2019-02-03 22:41 被阅读3次

    小程序变化太快了, 文档不断修改, 甚至官方文档都更新不上。

    为了防止喷我胡说, 有图有链接为证

    上链接
    这个是支付引导:
    https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_11&index=2
    这个是微信小程序微信支付的:
    https://mp.weixin.qq.com/wxopen/frame?t=wxpay/index_frame&iframe=/pay/mp_wxopen&token=1523089829&lang=zh_CN

    可以看到第一界面不对, 然后点击进去,文档说的是可以关联已有的支付, 而新版的没有。


    虽然官方文档跟不上,但是相对别的文档,还是很多比较新, 所以, 只要文档一看到对不上,立刻放弃。 目前我没找到最新的, 哈哈哈。 所以胡乱写了这篇。


    小程序支付和微信JSAPI支付差异的实践问题解析
    1: 直接拿关联的小程序JSAPI接入, 会发现,商户传入的appid参数不正确,请联系商户处理
    2: 在目前的官方文档里面,JSAPI跟小程序下单支付是一样的
    3: 需要重新生成小程序的openid

    可以看出来在支付的时候,其实把公众号的appid改成小程序的appid就可以了。

    小程序的appid在: 开发->开发者设置 新版的是这个地址, 搜索引擎出来的都是旧版的地址找不到

    Tip如果没有做其他配置, 这时候还是会失败, 这时候打印信息,(如果有发现返回的值异常但是没看到错误信息,请修改源码,在微信统一下单的地方打印), 微信小程序支付统一下单的地址API如下https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_1,可以去看异常信息

    "商户号mch_id与appid不匹配"的问题解决

    需要去微信支付添加appid(小程序appid)



    然后去小程序->功能->微信支付->商户号管理,确认绑定


    image.png

    哈哈哈



    不行,openid乱写被它知道了,接下来还是需要搞定小程序的appid

    小程序获取openid

    获取code值, 如果是web-view, 用url传参的方式传递到web-view, 然后进入后台获取openid,然后用wx.miniProgram.postMessage把结果告诉小程序,下次就不需要获取code。

    小程序:

    wx.login({
          success: res => {
            console.log(res.code)
            this.setData({
              showWebUrl: true,
              webUrl: `${webUrl}?code=${res.code}`
            })
          }
    

    web-view:
    不用web-view的请略过。 处理跟公众号一样, 参考我上个文章。

    后台:
    以nodejs为例子(可直接复制,纯原生代码):

    (params) => new Promise(async (resolve, reject) => {
        let {code} = params
        var url = `https://api.weixin.qq.com/sns/jscode2session?appid=${Config.smallProgramPayInfo.appid}&secret=${Config.smallProgramPayInfo.appSecret}&js_code=${code}&grant_type=authorization_code`
        https.get(url, (res) => {
            var datas = ''
            res.on('data', (d) => {
                datas += d
            })
            res.on('end', (d) => {
                console.log('微信授权结果')
                console.log(datas)
                console.log(typeof datas)
                var result = JSON.parse(datas)
                if(result.errcode){
                    resolve({code: 1, msg: result.errmsg})
                    return
                }
                if(result.openid){
                    resolve({code: 0, msg: result.openid})
                    return
                }
            })
        })
        .on('error', (e) => {
          resolve({code: 0, msg: '服务器异常'})
          console.error(e)
        })
    


    -- 等待更新--
    -- 先睡觉 --


    参考链接:
    https://pay.weixin.qq.com/wiki/doc/api/index.html
    小程序: 明月小店(可能还在审核中)
    https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_1
    关于:
    写的有点辛苦,等我多搞点实用的东西,能给大家带来帮助的时候,请去明月小店消费, 谢谢。

    --END--

    相关文章

      网友评论

        本文标题:小程序支付与微信支付的差异,从零分析小程序支付

        本文链接:https://www.haomeiwen.com/subject/xatesqtx.html