因为公司支付变更,需要将原来的支付换成第三方支付,需要更改项目中的微信支付和支付宝支付。虽然是个小功能,但还是记录一下吧。
// 支付前先调起预支付接口,预支付接口会返回订单号,支付类型,支付金额等参数,也是为了更加安全的保证支付。
// 预支付接口
perOrder(data) {
this.$http.post("/pay/huiFu/h5/perOrder", data).then((res) => {
// 预支付调用成功后判断支付类型
if (this.payType == "wxpay") {
// 采用uniapp的条件编译,区分环境
// #ifdef APP-PLUS
// 采用H5联盟的方法实现app跳转小程序
plus.share.getServices(
(data) => {
let sweixin = null;
for (let i in data) {
if (data[i].id == "weixin") {
sweixin = data[i];
}
}
if (sweixin) {
// 跳转到微信小程序
sweixin.launchMiniProgram({
id: "gh_123456789abc", //微信小程序原生id
path: `/pages/hf/index?code=${res.pre_order_id}`,
// 可取值:0-正式版; 1-测试版; 2-体验版。默认值为0。
type: 2, // 微信小程序版本类型,
});
} else {
uni.showToast({
title: "请安装微信",
icon: "none",
});
}
},
(err) => {
console.log("跳转失败");
}
);
// #endif
// H5页面跳转小程序
window.location.href=
"weixin://dl/business/appid=123456abc&path=pages/hf/index&query=code="
+res.pre_order_id +"&env_version=release";
}
// 支付宝
if (this.payType == "alipay") {
// app跳转小程序
// #ifdef APP-PLUS
plus.runtime.openURL(res.qr_code, () => {
uni.showToast({
icon: "none",
title: "支付失败",
});
});
// #endif
// H5环境跳转小程序
// #ifdef H5
window.location.href = res.qr_code;
// #endif
}
});
},
注意点:
1. 采用launchMiniProgram跳转小程序的时候id填写的是原生id不是appid。
2. 注意写对type类型和对应路径。
3.H5页面跳转小程序的时候需要在小程序管理后台进行配置才可以进行跳转。配置的路径必须为线上路径才可以配置成功。
4. 采用url scheme传值的时候必须要带上query才可以传过去。
参考文档:小程序URL Scheme