APIcloud制作APP 微信支付与支付宝支付

时间:2021-12-17 12:51:44

首先要在云端绑定相应模块如alipay和wxpay其次编写代码。

配置区域

var cfg = {

webName:'',//APP名字
payDebug:true,
isUseWxPay:true,
isUseAliPay:true,
wxApiKey : 'wx708c359136e7af15',//支付apikey
wxMchId : '1488568362',//APPID
wxPartnerKey : '706709a80d19f5587804a834bbe0158a',//PartnerKey
wxNotifyUrl : 'http://whtouzi.zhonghuapaoyu.cn/index.php/api/user/userRecharge',//返回后台地址
aliPayPid : '2088721942591903',//appid
aliPayPriKey : '秘钥',
aliPayPubKey : '公钥',

aliPayNotifyURL : 'http://whtouzi.zhonghuapaoyu.cn/index.php/api/user/userRecharge',//返回后台地址

//秒,验证码发送间隔
checkCodeInterval:120
};

其次定义支付函数

//微信支付
function wxPay(func, params,debug) {

var wx = api.require('wx');
wx.isInstalled(function(ret, err){
params.money=n;
params.title='充值';
params.content='充值'
params.no=noo2;

if(ret.installed){
toast('正在进行微信支付,请稍候...');

if (isNull(params.title)) {
params.title = "充值";
}

if (isNull(params.content)) {
params.content = "充值";
}

if (!isNull(params.money)) {
var m = n;

params.money = m < 0.01 ? 0.01 : m;
} else {
params.money = 0.01;
}

if (isNull(params.no)) {
params.no = String(new Date().getTime()) + String(parseInt(Math.random() * 1000));
}

var tn = String(params.no) + String((new Date()).valueOf());
tn = tn.substr(0,32);
// alert('ccccccccccc');

var wxPay = api.require('wxPay');
wxPay.config({
apiKey : cfg.wxApiKey,
mchId : cfg.wxMchId,
partnerKey : cfg.wxPartnerKey,
notifyUrl : cfg.wxNotifyUrl
}, function(ret, err) {
if (ret.status) {
// alert('11111111');
// alert(ret.status);
wxPay.pay({
description : String(params.title),
totalFee : String(parseInt(params.money * 100)),
tradeNo : tn,
}, function(ret, err) {

var result = JSON.stringify(err);
var results = JSON.stringify(ret);
// alert(result+'***'+results);

//alert(err.code);
if (ret.status) {

toast('支付成功');
func('success');
} else {

if (err.code == -2) {
toast('用户取消支付');
func('cancel');
}
if (err.msg == 'NOTENOUGH') {
toast('余额不足');
func('fail');
}
if (err.msg == 'ORDERPAID') {
toast('商户订单已支付');
func('fail');
}
if (err.msg == 'ORDERCLOSED') {
toast('订单已关闭');
func('fail');
}
}
});
} else {
toast('商户配置错误,错误码:' + err.code);
}
});
}else{
toast('您当前设备不支持微信支付,请安装微信客户端后使用。');
}
});
}

//支付宝支付
function aliPay(func, params,debug) {
/*if(typeof debug != 'undefined' && debug == true){
tanConfirm(['调试支付成功','调试取消支付','取消'],'支付宝支付调试\nTitle:'+params.title+'\nMoney:'+params.money,function(i){
if(i==0){
func('success');
}
if(i==1){
func('cancel');
}
});
return false;
}*/
params.money=n;
params.title = "充值";
params.content = "充值";
if (isNull(params.title)) {
params.title = "充值";
}
if (isNull(params.content)) {
params.content = "充值";
}
if (!isNull(params.money)) {
var m = parseFloat(params.money);
params.money = m < 0.01 ? 0.01 : m;
} else {
params.money = 0.01;
}
params.no=noo;

if (isNull(params.no)) {
params.no = '201708021365';
}
var aliPay = api.require('aliPay');
aliPay.config({
partner : cfg.aliPayPid,
seller : cfg.aliPayPid,
rsaPriKey : cfg.aliPayPriKey,
rsaPubKey : cfg.aliPayPubKey,
notifyURL : cfg.aliPayNotifyURL
}, function(ret, err) {
if (ret.status) {
aliPay.pay({
subject : params.title,
body : params.content,
amount : params.money,
tradeNO : params.no
}, function(ret, err) {
var code = ret.statusCode;
if (code == 9000) {

toast('支付成功');
func('success');
} else if (code == 6001) {

toast('用户取消支付');
func('cancel');
} else {

toast('支付出错,错误代码:'+code);
//func('fail');
}
});
}
});
}

最后在body调用JS和方法即可

调用微信

oo=ret.order_id;
var p = {

};
noo2=oo+'n';
//

wxPay(function(code){

if(code == 'success'){
dpost({
act:'pay',
sn:noo2,
paymentType:'wxpay'
},function(d){

if(d == 'success'){

tan('充值成功!');
location.reload(true)
}
if(d == 'fail'){

tan('充值失败');
}
});
}
if(code == 'fail'){

tan('充值失败');
}
},p,cfg.payDebug);

}

});

调用支付宝

ooo=ret.order_id;
var p = {

};
noo=ooo;
//
aliPay(function(code){

if(code == 'success'){
dpost({
act:'pay',
sn:noo,
paymentType:'alipay'
},function(d){
if(d == 'success'){
tan('充值成功!');
location.reload(true)
}
if(d == 'fail'){

tan('充值失败!');
}
});
}
if(code == 'fail'){

tan('充值失败!');
}
},p,cfg.payDebug);

});

订单号可以从后台获取,再在前台获取充值金额即可。