1.微信支付注意事项:
{"code":-100,"message":"[payment微信:-1]General errors"}
以上错误码-100是5+SDK的错误码,而-1为微信支付SDK的错误码,对应的微信的错误类型为:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等。
根据错误提示我们逐步排除。
登记的包名或签名错误
核对微信后台登记的应用包名以及应用签名是否有误,登记的签名需要和签名工具获取到的一致,更新这些信息并非马上生效,可以等一段时间再测试。另外需要确保应用已经通过审核,并获得支付权限。
APPID错误
核对项目中manifest.json文件中填写的微信支付的AppID是否和平台上的一致。
付款信息计算错误
核对后端代码,查验统一下单和调起支付接口的逻辑是否有误,并确保两次签名生成算法一致。
H5+接口调用错误
接口plus.payment.request调用时传入的支付信息是字符串类型,如:官方返回数据地址是:
http://demo.dcloud.net.cn/payment/wxpayv3.HBuilder/?total=1 返回数据如下是个json_encode的数组
{"appid":"wx0411fa6a39d61297","noncestr":"5v5efv7JKmDGv91X","package":"Sign=WXPay","partnerid":"1230636401","prepayid":"wx28170035285029c12927cdc40885888318","timestamp":1545987635,"sign":"56A6442588EB590F57EF48F2EC104DE9"}
微信支付 测试一定要打包,并且签名才能调起来的!!!!!!!!!!!
前端代码
var channel=null;aliChannel=null;wxChannel =null;
// 第一步. 获取支付通道
function plusReady(){
plus.payment.getChannels(function(channels){
channel=channels[0];
},function(e){
alert("获取支付通道失败:"+e.message);
});
plus.payment.getChannels(function(channels){
for(var i=0;i<channels.length;i++){
if(channels[i].id == 'alipay'){
aliChannel=channels[i];
}else if(channels[i].id == 'wxpay'){
wxChannel=channels[i];
}
}
},function(e){
alert("获取支付通道失败:"+e.message);
});
}
document.addEventListener('plusready',plusReady,false);
var ALIPAYSERVER='https://xxxxx/pay/Order/order_alipayapp.html?id=';//支付宝
var WXPAYSERVER ='https://xxxxx/pay/Order/order_wxapppay.html?id=';
// 2. 发起支付请求->从服务器请求支付订单
function pay(payway){
var id = $('#id').val();
var PAYSERVER='';
if(payway =='alipay'){
PAYSERVER=ALIPAYSERVER+id;
channel = aliChannel;
}else if(payway =='wxpay'){
PAYSERVER=WXPAYSERVER+id;
channel = wxChannel;
}else{
plus.nativeUI.alert("不支持此支付通道!",null,"XXX");
return;
}
$.ajax({
url:PAYSERVER,
type:'get',
dataType:'json',
data:'',
}).done(function(msg){
if(msg.status == 1){
plus.payment.request(channel,msg.content,function(result){
plus.nativeUI.alert("支付成功!"