uni-app 支付宝小程序button获取手机号时参数在errMsg中返回
uni-app 支付宝小程序button获取手机号时参数在errMsg中返回
| 项目创建方式 | CLI版本号 |
|---|---|
| CLI | 2.0.0-31920210609001 |
示例代码:
<button type="default" open-type="getPhoneNumber" @getphonenumber="decryptPhoneNumber">获取手机号</button>
decryptPhoneNumber(e) {
console.log('getPhoneNumber:', e)
}
返回结果:
{
detail: {
errMsg: "getPhoneNumber:fail Error: {"response":"参数返回正常","sign":"参数返回正常"}"
}
}
操作步骤:
<button type="default" open-type="getPhoneNumber" @getphonenumber="decryptPhoneNumber">获取手机号</button>
decryptPhoneNumber(e) {
console.log('getPhoneNumber:', e)
}
预期结果:
{
detail: {
errMsg: 'getPhoneNumber:ok',
//...
// 其他相关参数
}
}
实际结果:
{
detail: {
errMsg: "getPhoneNumber:fail Error: {"response":"参数返回正常","sign":"参数返回正常"}"
}
}
更多关于uni-app 支付宝小程序button获取手机号时参数在errMsg中返回的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于uni-app 支付宝小程序button获取手机号时参数在errMsg中返回的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在支付宝小程序中,getPhoneNumber 接口的返回数据格式与微信小程序不同。支付宝小程序的手机号加密数据会通过 errMsg 字段返回,而不是直接提供 code 或其他参数。
根据你的返回结果,errMsg 中包含的 {"response":"参数返回正常","sign":"参数返回正常"} 实际上是加密的手机号数据。你需要解析这个 JSON 字符串来获取加密信息,然后通过服务端调用支付宝的 alipay.system.oauth.token 接口解密手机号。
解决方案:
- 解析
errMsg中的 JSON 数据:
decryptPhoneNumber(e) {
if (e.detail.errMsg.includes('getPhoneNumber:fail')) {
try {
const errObj = JSON.parse(e.detail.errMsg.replace('getPhoneNumber:fail Error: ', ''));
console.log('加密数据:', errObj);
// 将 response 和 sign 发送到服务端进行解密
} catch (error) {
console.error('解析错误:', error);
}
}
}

