微信小程序> 小程序微信支付分

小程序微信支付分

浏览量:1073 时间: 来源:前端-珊珊

最近应公司市场部要求,在小程序上加上微信支付分。微信支付分到目前为止还在内测阶段,但已经开始试用了。文档如下:

https://pay.weixin.qq.com/wiki/doc/apiv3/payscore.php?chapter=15_6&index=4

因为是在内测阶段,所以肯定会有坑需要跳的。

文档中提供确认订单的方法有2个,一个是wx.openBusinessView,不需要跳转到微信支付分小程序,一个是直接用wx.navigateToMiniProgram跳转到微信支付分小程序。这两个的对比,优势肯定是第一个啦,对吧,又不需要占跳转小程序的名额,毕竟跳转到别的小程序只有10个名额啊。

 我的选择是使用wx.openBusinessView这个函数,这个函数只需要按文档的写法,success做什么,fail做什么。一切都看起来很ok,至少如果不注意第一次需要开通支付分的时候是很完美的。

这条函数在任何一个ios用户第一次开通的时候能进入到success没有任何问题安卓用户第一次开通完好点击返回的时候,并没有进入函数里面的任何一条回调,包括complete,一开始因为白名单测试名额有限的原因,并没有过多的去重视这个问题,直接发版了。

我们的业务逻辑是如果免押成功的话是跳转到使用页的。但我们发版之后,就马上出现问题。

第一个问题:安卓用户其实第一次开通的时候已经免押租借成功了物品,但因为点击微信支付分页面的返回后没有进入wx.openBusinessView任何回调,所以造成用户认为没有租借到,又再一次租借。造成了用户多借多付款。

第二个问题:很多用户因为微信支付分不足,或者因为微信自带的风控,导致很多用户不能开通支付分。而我们做的时候没有留普通支付的入口,导致很多想租物品的用户租不到物品,造成用户流量的损失!

不能开通支付分的一部分用户页面显示如下:

在发生这样的情况的时候我们马上撤回版本,用回旧版本走旧流程。马上修改支付分模块。跟微信官方的技术沟通之后,微信官方的回复是,先用wx.navigateToMiniProgram,跳转这个试试。

那官方都发话了,就证明那个函数是真有问题,毕竟这个问题是100%重现的。所以就只能听官方的话啦。

然后又是撸起袖子干活。

wx.navigateToMiniProgram这个函数唯一不好的地方就是需要去到app.js里面的onshow去得到回调,而且还不知道返回的时候用户是点击了确认还是直接点击了左上角的返回或者按钮的返回。所以这时就要去后台查看到底订单是确认了还是没有确认。

下面说一下我实现的过程:

准备工作:先将微信支付分的小程序appid引入,引入是放在app.json中,如下图:

如果在跳转到支付分小程序的时候用户点击返回或者取消操作时,页面显示如下:

这样就确保了用户在无法开通支付分的时候还能用普通支付流程。

补充:之前忘记上传跳转微信支付分代码,现在补上

//原创作者,前端-珊珊util.HttpRequst(true, 'cabinet.php', 2, { "cmd": "deposit_payscore_order", "cabinet_id": this.data.detailObject.cabinet_id }, "POST", true, (res) => {                if (res.errcode == 0) {                    this.setData({ btnDisabled: false });//支付按钮不能点多次,恢复可点击                    console.log(res);                    var packages = res.pay_params.package                    wx.navigateToMiniProgram({                        appId: res.pay_params.miniprogram_appid,                        path: res.pay_params.miniprogram_path,                        extraData: {                            mch_id: res.pay_params.mch_id,                            package: packages,                            timestamp: res.pay_params.timestamp,                            nonce_str: res.pay_params.nonce_str,                            sign_type: res.pay_params.sign_type,                            sign: res.pay_params.sign                        },                        success(res) {                            //dosomething                            console.log(res)                            console.log("我进入了成功")                        },                        fail(res) {                            //dosomething                            console.log("进入了失败函数")                            console.log(res)                            //dosomething                        },                        complete(res) {                            //dosomething                            console.log(res)                            console.log("进入完成函数")                        }                    });                } else {                    util.tipError(util.errCode[res.errcode])                }            })

 

温馨提示:

1、免押支付页面是有需求的,具体的需求是微信那边规定的,请务必要按照微信给的格式走。

2、由于跳进免押的小程序的时候,后台可能已经找微信拿到了订单的状态,但是用户点击了微信小程序的返回,实际上这个订单是免押无效的,但后台却判断是有效的,造成了用户在不知情的情况下再次点击免押租借租两次的问题,解决这个问题的关键就是在用户从微信支付分小程序返回自己的小程序时后台再次去微信拿订单的真实状态。

so,最重要的就是一定要记得要去后台拿真实的订单状态,后台的订单状态是真实的跟微信要的所以肯定是准确的,只有这样判断才是最准确的。最后记得将userTouch改回原来的值。(我上面例子有写)

笔记就做到这里了,等微信修改好了wx.openBusinessView函数我再更新这篇文章,毕竟不喜欢小程序占名额,哈哈!

由于发现有博客被抄袭到其他网站说是他自己的原创,所以在每个地方标记上记号。

小程序

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

最新资讯

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎