uni-app微信支付,手机号一键登录

440 阅读1分钟

小程序支付流程

uni.login({
        provider: 'weixin',
        success: function(loginRes) {
        console.log('-------获取code-------')
        console.log(loginRes.code);
}
});
// 然后将code传递给后端,[后端开发]人员返回openid
// 然后将openid和你当前项目的订单号或者金额数传递给后端,后端会返回5个参数(预付款)
timeStamp: res.data.Data.Timestamp,
nonceStr: res.data.Data.NonceStr,
package: res.data.Data.PrepayIdPackage,
signType: "RSA",
paySign: res.data.Data.paySign,
// 发起真正的支付请求
wx.requestPayment({										timeStamp: res.data.Data.Timestamp,							nonceStr: res.data.Data.NonceStr,							package: res.data.Data.PrepayIdPackage,							signType: "RSA",
        paySign: res.data.Data.Signature,
	success: function(res) {
												},											fail: function(res) {													// 支付失败处理逻辑
}
})					

小程序一键登录

因为需要用户主动触发才能发起获取手机号接口,所以该功能不由 API 来调用,需用 button 组件的点击来触发。

先上图

image.png

步骤一 绑定点击事件

<button open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">获取手机号</button>

步骤二 在事件回调中发请求获取手机号

从基础库2.21.2开始,对步骤2中换取手机号信息的方式进行了安全升级,上述为新方式使用指南。([旧方式](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/deprecatedGetPhoneNumber.html)目前可以继续使用,但**建议开发者使用新方式,以增强小程序安全性**)另外,新方式**不再**需要提前调用`wx.login`进行登录。
在getPhoneNumber事件的回调中接受接口必要的入参,然后向后端发请求,获取手机号,如果后端需要session_key,就需要提前通过wx.login获取code,然后向后端换取openID,session_key
// 注意事项(老版本)
在回调中调用 [wx.login](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/login/wx.login.html) 登录,可能会刷新登录态。
此时服务器使用 code 换取的 sessionKey 不是加密时使用的 sessionKey,导致解密失败。**建议开发者提前进行 `login`**;或者在回调中先使用 `checkSession` 进行登录态检查,避免 `login` 刷新登录态。
// 新版本 
![image.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/0475df8e337746fb95e437acb4a79cc1~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=1450&h=436&s=65818&e=png&b=faf7f2)

博客链接

www.cnblogs.com/softidea/p/…