You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
166 lines
4.4 KiB
166 lines
4.4 KiB
|
|
import { isWechat } from './util';
|
|
import HttpRequest from '@/common/httpRequest'
|
|
import HttpConfig from '@/common/config'
|
|
// 支付(app、小程序)
|
|
function setPay(payInfo, callback) {
|
|
let userInfo = uni.getStorageSync('userInfo')
|
|
let httpData = {
|
|
// userId: userInfo.userId || '',
|
|
// sessionId: userInfo.sessionId || '',
|
|
// openid: userInfo.openId,
|
|
// tradeNo: payInfo.tradeNo, // 创建支付订单时返回的 订单号
|
|
|
|
id: payInfo.tradeNo,
|
|
channelCode: "wx_lite",
|
|
channelExtras: {
|
|
openid: userInfo.openid,
|
|
}
|
|
}
|
|
HttpRequest.post(HttpConfig.payOrder, httpData, 'json', false, false).then((res) => {
|
|
console.log(res, '请求结果')
|
|
let payData = {}
|
|
// success: function (res) {
|
|
// var flag = true
|
|
// // #ifdef MP-ALIPAY
|
|
// if (res.code == 0) {
|
|
// flag = true
|
|
// } else {
|
|
// flag = false
|
|
// }
|
|
// #endif
|
|
// callback && callback({
|
|
// success: flag,
|
|
if (res.data == null) {
|
|
callback && callback({
|
|
success: false,
|
|
data: res.msg
|
|
})
|
|
}
|
|
console.log(JSON.parse(res.data.displayContent))
|
|
const data = JSON.parse(res.data.displayContent)
|
|
|
|
// });
|
|
// console.log('success:' + JSON.stringify(res));
|
|
// },
|
|
// fail: function (err) {
|
|
// callback && callback({
|
|
// success: false,
|
|
// data: err
|
|
// });
|
|
// console.log('fail:' + JSON.stringify(err));
|
|
// }
|
|
// };
|
|
if (payInfo.type == 'mpwxpay') {
|
|
console.log('微信小程序支付')
|
|
// 微信小程序
|
|
payData.provider = 'wxpay';
|
|
payData.timeStamp = data.timeStamp;
|
|
payData.nonceStr = data.nonceStr;
|
|
payData.package = data.packageValue;
|
|
payData.signType = data.signType;
|
|
payData.paySign = data.paySign;
|
|
} else if (payInfo.type == 'wxpay') {
|
|
// app微信
|
|
payData.provider = 'wxpay';
|
|
payData.orderInfo = data.tradeNo;
|
|
} else if (payInfo.type == 'alipay') {
|
|
payData.provider = 'alipay';
|
|
payData.orderInfo = data.sdk_transaction_id;
|
|
} else if (payInfo.type == 'baidu') {
|
|
payData.provider = 'baidu';
|
|
payData.orderInfo = data.tradeNo;
|
|
} else if (payInfo.type == 'toutiao') {
|
|
payData.provider = 'toutiao';
|
|
payData.service = 5; // 5:拉起小程序收银台 其他:不拉起字节跳动小程序收银台
|
|
payData._debug = 1;
|
|
// payData.payChannel = {
|
|
// default_pay_channel: 'wx' // wx|| alipay
|
|
// };
|
|
payData.orderInfo = {
|
|
order_id: data.order_id,
|
|
order_token: data.order_token
|
|
};
|
|
}
|
|
console.log("支付参数", payData);
|
|
uni.requestPayment({
|
|
...payData,
|
|
success: success => {
|
|
callback && callback({
|
|
success: true,
|
|
data: success
|
|
});
|
|
},
|
|
fail: fail => {
|
|
callback && callback({
|
|
success: false,
|
|
data: fail
|
|
});
|
|
}
|
|
});
|
|
});
|
|
}
|
|
//公众号微信支付
|
|
function wxPublicPay(payInfo, callback) {
|
|
if (!isWechat()) {
|
|
uni.showToast({
|
|
title: "需微信公众号才能使用~",
|
|
icon: "none"
|
|
});
|
|
return
|
|
}
|
|
var url = '/api/PayApi' // 您的支付接口
|
|
uni.$u.http.post(url, {
|
|
tradeNo: payInfo.tradeNo //订单号
|
|
}).then(data => {
|
|
let wxConfigObj = {
|
|
appId: data.appId,
|
|
timeStamp: data.timeStamp,
|
|
nonceStr: data.nonceStr,
|
|
package: data.package,
|
|
signType: data.signType,
|
|
paySign: data.sign
|
|
};
|
|
function onBridgeReady() {
|
|
window.WeixinJSBridge.invoke("getBrandWCPayRequest", wxConfigObj, function (
|
|
res
|
|
) {
|
|
if (res.err_msg == "get_brand_wcpay_request:ok") {
|
|
callback && callback({
|
|
success: true,
|
|
data: res
|
|
});
|
|
} else // 使用以上方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回 ok,但并不保证它绝对可靠。
|
|
if (res.err_msg == "get_brand_wcpay_request:cancel") {
|
|
// 您取消了支付
|
|
callback && callback({
|
|
success: false,
|
|
data: res
|
|
});
|
|
} else
|
|
if (res.err_msg == "get_brand_wcpay_request:fail") {
|
|
// 支付失败
|
|
callback && callback({
|
|
success: false,
|
|
data: res
|
|
});
|
|
}
|
|
});
|
|
}
|
|
if (typeof window.WeixinJSBridge == "undefined") {
|
|
if (document.addEventListener) {
|
|
document.addEventListener("WeixinJSBridgeReady", onBridgeReady, false);
|
|
} else if (document.attachEvent) {
|
|
document.attachEvent("WeixinJSBridgeReady", onBridgeReady);
|
|
document.attachEvent("onWeixinJSBridgeReady", onBridgeReady);
|
|
}
|
|
} else {
|
|
onBridgeReady();
|
|
}
|
|
});
|
|
};
|
|
|
|
export {
|
|
setPay, //支付(app、小程序)
|
|
wxPublicPay, //公众号微信支付
|
|
} |