From a582e56af574f57566c0eb7b01fd559d369947e8 Mon Sep 17 00:00:00 2001
From: "@fawn-nine" <1271023382@qq.com>
Date: Fri, 19 Jul 2024 13:29:35 +0800
Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=8D=A2=E8=8B=B9=E6=9E=9C=E6=94=AF?=
=?UTF-8?q?=E4=BB=98=E6=A8=A1=E5=BC=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pages.json | 12 +--
pages/mine/wallet/recharge/index.vue | 151 +++++++++++++--------------
pages/peanut/home.vue | 5 +-
utils/myIapCheck.js | 40 ++++---
4 files changed, 99 insertions(+), 109 deletions(-)
diff --git a/pages.json b/pages.json
index d2b1517..7b2d0bc 100644
--- a/pages.json
+++ b/pages.json
@@ -546,14 +546,6 @@
"navigationBarTitleText" : "工单提交页面",
"enablePullDownRefresh": true
}
- },
- {
- "path" : "pages/stsViode/index/index",
- "style" :
- {
- "navigationBarTitleText" : "STS加密视频播放页面",
- "enablePullDownRefresh": true
- }
}
],
"globalStyle": {
@@ -607,8 +599,8 @@
"current": 0, //当前激活的模式(list 的索引项)
"list": [
{
- "name": "sts测试", //模式名称
- "path": "pages/stsViode/index/index", //启动页面,必选
+ "name": "", //模式名称
+ "path": "", //启动页面,必选
"query": "" //启动参数,在页面的onLoad函数里面得到
}
]
diff --git a/pages/mine/wallet/recharge/index.vue b/pages/mine/wallet/recharge/index.vue
index d72e667..cd2b1da 100644
--- a/pages/mine/wallet/recharge/index.vue
+++ b/pages/mine/wallet/recharge/index.vue
@@ -188,7 +188,7 @@
// if (!that.checking) {
// that.checking = true
// console.log(this.iapChannel, 'this.iapChannel')
- await this.iapChannel.restoreComplateRequest({
+ await this.iapChannel.restoreCompletedTransactions({
manualFinishTransaction: true
}, function(results) {
// console.log(that.checking)
@@ -255,62 +255,87 @@
}
// console.log(this.radioValue)
},
+ requestPayment(orderInfo) {
+ let that = this
+ return new Promise((resolve, reject) => {
+ uni.requestPayment({
+ provider: 'appleiap',
+ orderInfo: orderInfo,
+ success: (res) => {
+ that.iapCheck(res);
+ resolve(res);
+ },
+ fail: (err) => {
+ uni.hideLoading()
+ // console.log('其他支付错误', err);
+ that.restoreComplateRequest()
+ if (err.code == 2) {
+ uni.showToast({
+ title: '取消支付,内购订单即将关闭',
+ icon: 'none'
+ })
+ } else {
+ uni.showToast({
+ title: '支付失败,内购订单即将关闭',
+ icon: 'none'
+ })
+
+ }
+ reject(err);
+ }
+ });
+ })
+ },
+ getProvider() {
+ return new Promise((resolve, reject) => {
+ uni.getProvider({
+ service: 'payment',
+ success: (res) => {
+ const iapChannel = res.providers.find((channel) => {
+ return (channel.id === 'appleiap')
+ })
+ resolve(iapChannel);
+ // 如果 iapChannel 为 null,说明当前包没有包含iap支付模块。注意:HBuilder基座不包含 iap 通道
+ }
+ });
+ })
+ },
async iphonepay() {
const that = this;
- // 如果ios已经绑定支付信息,就直接支付,如果没有绑定,就需要先绑定
uni.showLoading({
- title:'检测支付环境'
+ title:"检测支付环境"
})
- // console.log("检测支付环境...");
- plus.payment.getChannels(async (channels) => {
- console.log(channels, "channels");
- for (var i in channels) {
- if (channels[i].id === "appleiap") {
- that.iapChannel = channels[i];
- // 先检测有没有未完成的订单
- uni.showLoading({
- title:'检测历史订单'
- })
- await that.restoreComplateRequest()
- var timer = setInterval(()=>{
- console.log('检测历史订单数量');
- that.iapChannel.restoreComplateRequest({
- manualFinishTransaction: true
- }, function(results) {
- if(results.length > 0){
- console.log('未处理订单还存在,继续轮询...');
- }else{
- console.log('没有历史订单,开始请求新订单..');
- that.requestOrder();
- clearInterval(timer)
- console.log('timer清除了吗',timer);
- }
- })
- },1000)
- // console.log('that.checking',that.checking)
- /// 限制调用
-
- }
- }
- });
+ console.log("检测支付环境...");
+ this.iapChannel = await this.getProvider()
+ console.log('that.iapChannel',this.iapChannel);
+ if(this.iapChannel){
+ this.requestOrder();
+ }else{
+ uni.hideLoading()
+ uni.showToast({
+ title:'不支持内购支付',
+ icon:'none'
+ })
+ console.log("获取iap支付通道失败:" + e.message, that.iapChannel);
+ }
},
requestOrder() {
uni.showLoading({
title: "获取商品信息",
mask: true,
});
- const that = this;
+ const that = this;
console.log(that.stepsCj.priceTypeId, 88888888);
// ['xxxxx'] 是平台申请拿到的内购商品的id
let IAPOrders = [];
- IAPOrders.push("p"+that.stepsCj.priceTypeId);
- console.log(IAPOrders, "IAPOrders");
+ IAPOrders.push('p' + that.stepsCj.priceTypeId);
+ // console.log(IAPOrders, "IAPOrders");
// 新建订单
uni.showLoading({
title: "正在创建订单",
mask: true,
});
- that.iapChannel.requestOrder(
+ that.iapChannel.requestProduct(
IAPOrders,
function(event) {
// uni.hideLoading()
@@ -330,47 +355,20 @@
}
);
},
- topay(id) {
- const that = this;
+ async topay(id) {
+ const that = this;
uni.showLoading({
title: "正在支付",
mask: true,
- });
- plus.payment.request(
- that.iapChannel, {
+ });
+ let orderInfo = {
productid: id,
username: that.orderSn, // 用户标识/订单标识
+ quantity:1,
manualFinishTransaction: true, // 3.5.1+ 支持,设置此参数后需要开发者主动关闭订单,参见下面的关闭订单方法 finishTransaction()
- },
- function(result) {
- // that.checking = false
- that.transaction = result;
- // 支付成功,result 为 IAP商品交易信息对象 IAPTransaction 需将返回的支付凭证传给后端进行二次认证
- that.iapCheck(result);
- },
- function(e) {
- // that.checking = false
- console.log("错误回调", e);
- if (e.code == 2) {
- uni.showToast({
- title:'取消支付,内购订单即将关闭',
- icon:'none'
- })
-
- // 用户未绑定支付方式,app内支付流程结束,系统弹出框引导用户绑定支付方式,此过程将跳转到系统应用 AppStore 进行绑定支付方式,绑定成功同步支付成功,用户成功付款
- // plus.runtime.openURL("https://apps.apple.com/account/billing");
- } else {
- uni.showToast({
- title:'支付失败,内购订单即将关闭',
- icon:'none'
- })
- console.log('其他支付错误',e);
- }
-
- // that.finishTransaction(result);
- that.restoreComplateRequest()
}
- );
+ this.transaction = await this.requestPayment(orderInfo)
+ console.log('支付后的that.transaction',this.transaction);
},
iapCheck(result) {
let that = this;
@@ -401,12 +399,7 @@
.then((res) => {
console.log(JSON.stringify(res));
if (res.code == 0) {
- uni.hideLoading()
- // that.userInfo.restoreFlag == true ?
- // that.setUserInfo({
- // restoreFlag: false
- // }) :
- // "";
+ uni.hideLoading()
uni.showToast({
title:'充值成功!',
icon:'success'
diff --git a/pages/peanut/home.vue b/pages/peanut/home.vue
index 301b9f3..8cc5296 100644
--- a/pages/peanut/home.vue
+++ b/pages/peanut/home.vue
@@ -35,10 +35,7 @@
吴门医述
-
-
-
-
+
diff --git a/utils/myIapCheck.js b/utils/myIapCheck.js
index 75d0b33..ba64a25 100644
--- a/utils/myIapCheck.js
+++ b/utils/myIapCheck.js
@@ -11,29 +11,37 @@ const ComplateRequestArr = []
var iap = {
+ getProvider() {
+ return new Promise((resolve, reject) => {
+ uni.getProvider({
+ service: 'payment',
+ success: (res) => {
+ const iapChannel = res.providers.find((channel) => {
+ return (channel.id === 'appleiap')
+ })
+ resolve(iapChannel);
+ // 如果 iapChannel 为 null,说明当前包没有包含iap支付模块。注意:HBuilder基座不包含 iap 通道
+ }
+ });
+ })
+ },
// 检测支付通道
- getChannels(){
+ async getChannels(){
const that = this;
console.log('检测支付通道')
- plus.payment.getChannels(async (channels) => {
- for (var i in channels) {
- // 判断是否苹果支付1
- if (channels[i].id === "appleiap") {
- console.log("存在苹果内购channels",channels, );
- that.iapChannel = channels[i];
- // 先检测有没有未完成的订单
- that.restoreComplateRequest()
- }else{
- console.log('安卓客户端');
- }
- }
- });
+ this.iapChannel = await this.getProvider()
+ if(this.iapChannel){
+ // this.requestOrder();
+ this.restoreComplateRequest()
+ }else{
+ console.log("不支持iap支付");
+ }
},
// 检测是否有未关闭订单
restoreComplateRequest() {
let that = this
console.log('检测未完成订单')
- this.iapChannel.restoreComplateRequest({
+ this.iapChannel.restoreCompletedTransactions({
manualFinishTransaction: true
}, function(results) {
if (!that.checking) {
@@ -50,7 +58,7 @@ var iap = {
// return false
// 已经支付,但是没有走逻辑的内购订单 就发给后台做验证
that.iapCheck(item, index)
- // that.finishTransaction(item)
+ // that.finishTransaction(item)
} else {
// 其他状态的内购订单
that.finishTransaction(item)