接着教程2写的
1、用户限额
用户使用免密支付,每天在每个商户是有次数限制的,新的商户一般都是5次,
用户一天最多只能在你这免密支付5次,超出后再去申请扣费,就会失败,微信返回提示超出限额,这个需要注意,不过可以私下找微信提交申请改次数,填一些资料就行了。我们改到10次了。
怎么查询用户当日次数就不用说了吧,每次发起扣款把订单和用户信息存到数据库,要委托代扣之前先查询用户当日的订单次数(我们是展示二维码时候去查询,如果超出次数,就不给二维码,显示超出当日最大付款次数限制提示)
2、查询用户状态, (无支付能力、签约无效、用户欠费),这三个需要注意。
当用户每次要使用免密支付之前,商户都要查询用户状态,针对不同状态进行处理。
第一篇写的java请求中,有获取用户状态的那一个,可以去看下。
private String wxQueryStateUrl="https://api.mch.weixin.qq.com/transit/pay/querystate"; // 查询用户状态
接口会返回一些用户状态,小程序需要根据不同状态进行显示不同的页面,至于怎么显示看你们自己,我主要说一下 用户欠费这个。
用户欠费
当商户发起扣款申请时,用户如果微信余额不足,那么微信方会给垫付一次(不同商户不同,针对开通微信垫付功能商户),这种扣款订单用户那显示的微信支付消息中会有还款按钮。
但是,如果用户没看到,就会忘记还款(因为微信代付和用户支付没区别,只有微信支付消息中会显示,很多用户不看), 下次查询用户状态,微信接口会返回用户欠费,申请扣款会失败。
所以这个时候,需要用户去点击还款,微信也有开放的还款小程序,跳转过去就行。
跳转至还款小程序
微信还款小程序 appid wx5e73c65404eee268,只需要把用户的openid传过去,以及商户号,小程序号即可。
html 随意,放一个按钮就行
<button hidden="{{navigatorHidden}}" bindtap='setNavigatorData' class="btn_wxzf" >跳转到还款小程序</button>
js
var nonce_str = util.genNonceStr();
var data = {
appid: app.globalData.appid,
mch_id: app.globalData.mch_id,
nonce_str: nonce_str,
openid: app.globalData.openid,
sign_type:'MD5'
};
data.sign = util.genSign(data, app.globalData.key);
wx.navigateToMiniProgram({
appId: 'wx5e73c65404eee268',
extraData: data,
path: 'pages/invest_list/invest_list',
success(res) {
console.log(1);
},
fail(res) {
console.log(res);
// 未成功跳转到签约小程序
}
});
不过小程序跳转,微信新规定,需要在app.json中配置一些需要跳转的小程序appid,做多10个。
"navigateToMiniProgramAppIdList": [
"wxbd687630cd02ce1d", 签约小程序
"wx5e73c65404eee268" 还款小程序
]