很多兄弟在做App微信支付的时候出现报错,code:62000
? code:-1
? code:-100
? 那是你没看本博主的文章!
前言:
本文章使用的是vue+h5+plus技术,结合hbuildx打包的App,实现在App中微信支付功能。
准备:
1.Appid
Appid
需在微信开放平台中创建移动应用审核,审核成功后可查看Appid
注:包名以及签名一定和你的App对照仔细(一般签名重新打包时是会变的,去开放平台直接修改签名就行了)。
不要忘记获取微信支付能力,获取完在hbuildx的manifest.json文件中配置Appid
打包的时候使用自有证书:安卓平台证书签名
注意点:生成的证书信息要有md5,这和jre的版本相关,详细jre版本看官方网站给的说明
Keystore type: PKCS12
Keystore provider: SUN
Your keystore contains 1 entry
Alias name: test
Creation date: 2019-10-28
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=Tester, OU=Test, O=Test, L=HD, ST=BJ, C=CN
Issuer: CN=Tester, OU=Test, O=Test, L=HD, ST=BJ, C=CN
Serial number: 7dd12840
Valid from: Fri Jul 26 20:52:56 CST 2019 until: Sun Jul 02 20:52:56 CST 2119
Certificate fingerprints:
MD5: F9:F6:xxxxxxxxxxxCE:E6:0A:A5
SHA1: BB:AC:E2:2F:97:3B:18:02:E7:D6:69:A3:7A:28:EF:D2:3F:A3:68:E7
SHA256: 24:11:7D:E7:36:12:BC:FE:AF:2A:6A:24:BD:04:4F:2E:33:E5:2D:41:96:5F:50:4D:74:17:7F:4F:E2:55:EB:26
Signature algorithm name: SHA256withRSA
Subject Public Key Algorithm: 2048-bit RSA key
Version: 3
下面贴码介绍:
pay() {
let payType = this.payType; // 1支付宝 , 2微信
if (!payType) {
return this.$toast.warn('请选择支付方式!');
}
if (payType == 2) this.wxPay('wxpay')
},
wxPay(id) {
var _this=this
var channel=null
plus.payment.getChannels((channels) => {
for(var i in channels)
{
if(channels[i].id=='wxpay')
{
channel=channels[i]
}
else{
///
}
}
if(this.dataPay=='' && channel==null)
{
return false
}
else
{
plus.payment.request(
channel,
JSON.stringify(_this.dataPay),
(result) => {
plus.nativeUI.alert("支付成功!", function (e) {
// 支付成功回调
back();
});
},
(error) => {
plus.nativeUI.alert("支付失败!");
// 支付失败回调
}
);
}
}, function(e) {
plus.nativeUI.alert("获取支付通道失败");
});
}
特别简单,首先通过plus.payment.getChannels
获取支付通道,然后通过plus.payment.request
调起微信支付
注意点:
1、plus.payment.getChannels
获取支付通道并赋值的时候不要直接以数组的形式赋值比如channel=channels[1]
,一定要通过id名判断然后赋值(被坑过,之前是没判断直接赋值的,然后支付宝通道没有选,只选了一个微信的通道然后索引肯定不对,切记!!!)
2、测试微信支付功能需打完包安装到自己手机中进行测试,不要使用真机测试,自己打的包不要忘记去微信开放平台绑定,确定包名
以及签名
正确就能实现微信支付。