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

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

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

上链接
这个是支付引导:
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)
    })

关于公众号可以,小程序不可以

正常这时候然后可以直接用了,前端传参数判断下调用哪个key就可以
Config[isMini ? '小程序' : '公众号']

但是我遇到一个问题, 竟然搞了一天,好郁闷哦(mmp哦), 越调试越郁闷,明明签名都没错,还提示签名错误, 搞得怀疑人生, 到了晚上的时候发现是前端问题。

if(isminiProgram){
                let addNonceStr = msg => {
                    return {
                        ...msg,
                        nonceStr: msg.nonceStr || (+new Date()) + ''
                    }
                }
                // 通知小程序
                wx.miniProgram.navigateTo({
                    url: `/pages/wxpay/index?payParam=${
                        payResult.msg |> 
                        addNonceStr |> 
                        JSON.stringify |> 
                        encodeURIComponent
                    }`
                })
                return
            }

其他问题基本提示很清楚。到此结束了。

other

获取ip方法:

let ip = req.headers['x-forwarded-for'] ||
        req.connection.remoteAddress ||
        req.socket.remoteAddress ||
        req.connection.socket.remoteAddress

关于回调和退款:
跟公众号一致(上一篇文章有公众号的),如果回调地址一致的话,记得校验的时候加个小程序的。


参考链接:
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--

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,907评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,987评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,298评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,586评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,633评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,488评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,275评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,176评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,619评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,819评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,932评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,655评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,265评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,871评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,994评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,095评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,884评论 2 354

推荐阅读更多精彩内容