微信支付服务商-服务商小程序支付脱坑

时间:2018年11月13号

最近, 公司抽风, 项目中需要为我们小程序中"服务的商户"开通微信支付功能.

与同事们研究决定,还是申请为微信服务商比较靠谱~

但是~ 不靠谱的事来了. 废话不多说. 一步步的来.

第一步: 申请为服务商 (有重点!!!!!!!统一下单坑点之一)

               先去公众平台申请一个服务号(只有服务号才可以支付和申请商户号,必须是认证过的.300元)

               注意:保存好appId 与 appSecret  统一下单中的appId指的是这个!!!!!!!!!

               申请完成后, 点击微信支付, 成为服务商,上传资料. 审核.300元

               申请页面如下:(这个是已经申请好了的)

               在这里, 说明一下. 微信支付服务商是从已经认证过的服务号里申请的, 默认与该服务号绑定.微信乱七八糟的名字很多.这里的服务号指公众号.

                申请小程序.交纳300元认证费.注意:此次说明小程序主体信息与微信支付服务商主体信息一致(如果不一致请看官方坑爹文档)

                申请开放平台~ 再来300元~ 在开放平台把公众号与小程序关联起来.

第二步:微信公众号服务号、小程序与微信支付服务商的账号准备好之后, 接下来配置微信支付服务商账号.

               登录微信商户平台


                进行配置   账户中心->API安全->设置秘钥


秘钥这是个大坑~~~留着.继续往下走.遇到了再回来

接下来是  服务商功能->特约商户申请


商户申请审批成功之后 (此时微信会给你邮箱发送特约商户的商户号和密码,与一般支付的那种商户号一样,可以登录)  

特约商户管理->配置(还在服务商账号下)



这里的支付授权目录必须要正确.(别忘记了微信支付服务商的支付目录以及回调地址在服务商账户里设置!这里的回调是地址!是地址!是地址!和目录是有区别的!!!)

特约商户APPID配置.我们填写之前申请好的小程序appID.否则无法取到官方所为的sub_openId

第三步: 统一下单

根据官方的文档 https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_sl_api.php?chapter=9_1

去发起统一下单. 

然后就是各种的报错!

商户ID与APPID不匹配

sub_openid  and sub_appid not match

签名失败

等错误.

首先~ 你得保证,你的签名没有问题. 顺序正确,没有传入空值,不存在大小写错误,在签名验证工具中可以通过.如果还是报错签名失败~回到第二步, 服务商设置秘钥的那里. 来来回回的换吧~ 2到3次 基本就ok了

在这里, 对这个坑爹的参数表.做一下说明(写这文档的人~~~我就!@#@$%@#@!##$%你了!)



看这文档写的, openId 我是传还是不传?! 我去年买了个表的.不会说话嘛!

还有这个网页授权获取用户信息,很有歧义好嘛!

服务商模式下, 小程序支付.openId 不传! 不传! 不传!  签名的时候直接省略这个参数!

接下来说sub_openid.  坑啊~~~

这里尼玛就不是什么sub_openId  就尼玛是openId啊!!!!!!!! 哪来的?!  wx.login 获得code 再通过code 换来的.

有人就高兴了. wx.login拿的openId啊? 我早就获得了~  错!!!!! 不是这个!!! 虽然方法一样! 内容一样! 但是他给的确实是有问题的!这一步的登录不能省!继续往下看.!(去年买了个大表的! 文档你写清楚啊! 既然目的都是OpenId 为什么要取两次!你TM得告诉我这里不一样啊!)

对于openId的解释, 微信官方是说, 一个用户与多个小程序有多个openId,用户与一个小程序的openId唯一.

然后,经过测试:

wx.login({

      success: function (login_success) {

        wx.getUserInfo({

          lang: 'zh_CN',

          success: function (getUserInfo_success) {

            var code = login_success.code;

            var encryptedData = getUserInfo_success.encryptedData;

            var iv = getUserInfo_success.iv;

            //在这里去换openId  (之前我们项目中保存过一次小程序的openId  这时候再去取的时候, 变了~~ )

             }

       });

     })


至此  统一下单 算是OK了. 接下来. 去排坑~ 调起支付~ 正在研究中~ 后期补全

推荐阅读更多精彩内容

  • 转载链接 注:本文转载知乎上的回答 作者:初雪 链接:https://www.zhihu.com/question...
    pengshuangta阅读 26,813评论 9 294
  • 最近折腾了一下小程序接入微信支付,对接入的流程有个大概的了解,也踩了不少坑,为了避免以后重复踩坑,这里记录接入流程...
    BugwalkerZhao阅读 2,574评论 0 12
  • 给提问的开发者的建议:提问之前先查询 文档、通过社区右上角搜索搜索已经存在的问题。 写一个简明扼要的标题,并且...
    极乐叔阅读 9,390评论 0 3
  • 关于微信支付 生活中的微信支付 目前我们日常生活中接触得比较多的线上电子支付方式主要有两种,一种是支付宝,另一种就...
    积_渐阅读 3,086评论 3 26
  • 这是现实的语言,来自皮影戏,底层大众的娱乐里,性事是直白和爽浪的。在现实的生活中,穷极语言的技巧,只为把性事一乐。...
    Andylee阅读 2,274评论 1 1