// 跳转小程序支付
const goOrderPayWx =(orderPayId) =>{
// #ifdef APP-PLUS
plus.share.getServices((res) => {
let sweixin = null
for (let i = 0; i < res.length; i++) {
if (res[i].id == 'weixin') {
sweixin = res[i]
}
}
if (sweixin) {
// path : 要跳转的微信小程序的页面路径 可通过 ? 拼接的形式传参
const path = `/page_service/order/payment?payOrderId=${orderPayId}`
sweixin.launchMiniProgram(
{
id: 'gh_xxxxxxx', // 原始id:gh_开头 要跳转的微信小程序原始ID
path,
type: 2, // 小程序版本默认为0, 0: 正式版 1:测试版 2:体验版
},
(success) => {},
(err) => {
console.log(err)
return uni.showToast({
title: '请检查手机是否有微信应用~',
icon: 'none',
})
},
)
}
})
// #endif
}
上述为vue代码。复制更改参数即可。
注意 manifest.json的配置 是和微信开发平台申请的应用id,不是小程序的appid
申请的包名和签名 需要和uni-app打包时候的包名签名 对应上。
云端证书里的签名和微信开发平台填写的签名要一致。
1. 这个问题根本原因是你微信开发平台上的签名与你的应用签名不一致。顺便一提,微信开放平台上的签名是应用签名的keystore文件的MD5值。MD5值是xx:xx:xx:xx:xx:xx:xx这种格式的秘钥,你复制到微信开发平台上就应该全部转换为小写以及去掉冒号,如f221hghf2h3jhf3k1j这样的一串字符。
2. 更简单地,可以用[签名检测工具](https://res.wx.qq.com/open/zh_CN/htmledition/res/dev/download/sdk/Gen_Signature_Android2.apk)工具检查一下app的签名,用法就是下载该工具到手机上,打开输入包名即可得到一串字符,不出意外跟上面的方法得出字符串是一样的。
3. 如果你后面改回来,确认签名已经一致了,但是依旧报这个错误,那么无疑就是微信缓存问题,因为微信记录了app分享的值,删掉微信,重装微信就OK了。
以上方法由广大DCloud用户摸索出来,我负责总结,如果在这个问题上你还有其他的情况产生,欢迎评论留言。
参考链接:[分享错误码](http://ask.dcloud.net.cn/article/287)以及该文章下面的评论。欢迎点赞。