feat: 越南充值页加 USDT (TRC20) 通道切换
- recharge.vue: 银行卡 / USDT 两个 tab,共用 amount 输入 - api.js: 新增 epayDeposit 调 /epay_online_order USDT 请求体多传 pay_type='usdt',下单响应同 AlinPay 走 Data.url 跳转
This commit is contained in:
+84
-4
@@ -184,11 +184,23 @@
|
|||||||
@confirm="confirmPicker"
|
@confirm="confirmPicker"
|
||||||
></u-picker>
|
></u-picker>
|
||||||
</template>
|
</template>
|
||||||
<!-- 越南 AlinPay 在线充值 -->
|
<!-- 越南在线充值:银行卡 (AlinPay) / USDT (Epay) 双通道 -->
|
||||||
<template v-if="userInfo.pay_channel == 'ALIN_VN'">
|
<template v-if="userInfo.pay_channel == 'ALIN_VN'">
|
||||||
|
<view class="pay-tabs">
|
||||||
|
<view
|
||||||
|
class="pay-tab"
|
||||||
|
:class="{ active: payChannel === 'alin' }"
|
||||||
|
@click="payChannel = 'alin'"
|
||||||
|
>Thẻ ngân hàng</view>
|
||||||
|
<view
|
||||||
|
class="pay-tab"
|
||||||
|
:class="{ active: payChannel === 'epay' }"
|
||||||
|
@click="payChannel = 'epay'"
|
||||||
|
>USDT (TRC20)</view>
|
||||||
|
</view>
|
||||||
<view class="picker-view">
|
<view class="picker-view">
|
||||||
<u-input
|
<u-input
|
||||||
placeholder="Tối thiểu 1,000,000"
|
:placeholder="payChannel === 'epay' ? 'Số tiền nạp' : 'Tối thiểu 1,000,000'"
|
||||||
color="#93979b"
|
color="#93979b"
|
||||||
v-model="amount"
|
v-model="amount"
|
||||||
type="number"
|
type="number"
|
||||||
@@ -207,12 +219,12 @@
|
|||||||
class="button"
|
class="button"
|
||||||
color="#e5b932"
|
color="#e5b932"
|
||||||
:text="$lang.submit"
|
:text="$lang.submit"
|
||||||
@click="submitAlin"
|
@click="payChannel === 'epay' ? submitEpay() : submitAlin()"
|
||||||
></u-button>
|
></u-button>
|
||||||
</view>
|
</view>
|
||||||
<view class="list">
|
<view class="list">
|
||||||
<view class="tip">
|
<view class="tip">
|
||||||
{{ $lang.rechargeTip }}
|
{{ payChannel === 'epay' ? 'Thanh toán USDT qua mạng TRC20' : $lang.rechargeTip }}
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
@@ -240,6 +252,8 @@ export default {
|
|||||||
amount: "",
|
amount: "",
|
||||||
currency: { name: "", key: "" },
|
currency: { name: "", key: "" },
|
||||||
coin_type: { name: "", key: "" },
|
coin_type: { name: "", key: "" },
|
||||||
|
// 越南地区在线支付通道:'alin'(银行卡) | 'epay'(USDT)
|
||||||
|
payChannel: "alin",
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@@ -409,11 +423,77 @@ export default {
|
|||||||
this.$toastHide();
|
this.$toastHide();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
submitEpay() {
|
||||||
|
if (!this.amount || this.amount <= 0) {
|
||||||
|
this.$toast({ message: 'Vui lòng nhập số tiền', duration: 2000 });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (this.amount < 1000000) {
|
||||||
|
this.$toast({ message: 'Số tiền tối thiểu là 1,000,000', duration: 2000 });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const params = {
|
||||||
|
user_id: this.userInfo.id,
|
||||||
|
price: this.amount,
|
||||||
|
client: 3,
|
||||||
|
username: this.userInfo.username,
|
||||||
|
pay_type: 'usdt',
|
||||||
|
};
|
||||||
|
this.$toast({
|
||||||
|
type: "loading",
|
||||||
|
message: `${this.$lang.submit}...`,
|
||||||
|
duration: 200000,
|
||||||
|
});
|
||||||
|
this.$api
|
||||||
|
.epayDeposit(params)
|
||||||
|
.then((res) => {
|
||||||
|
const d = res.Data || {};
|
||||||
|
if (d.status == 1 && d.url) {
|
||||||
|
const o = navigator.userAgent;
|
||||||
|
const isiOS = !!o.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
|
||||||
|
if (isiOS) {
|
||||||
|
window.location.href = d.url;
|
||||||
|
} else {
|
||||||
|
window.open(d.url, "_blank");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.$toast({ message: d.message || 'Nạp thất bại', duration: 2000 });
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
console.log(err);
|
||||||
|
})
|
||||||
|
.finally(() => {
|
||||||
|
this.$toastHide();
|
||||||
|
});
|
||||||
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
.pay-tabs {
|
||||||
|
display: flex;
|
||||||
|
padding: 20rpx 30rpx 0;
|
||||||
|
gap: 15rpx;
|
||||||
|
}
|
||||||
|
.pay-tab {
|
||||||
|
flex: 1;
|
||||||
|
text-align: center;
|
||||||
|
padding: 18rpx 0;
|
||||||
|
color: #93979b;
|
||||||
|
background: rgba(255, 255, 255, 0.04);
|
||||||
|
border: 1rpx solid #2a3448;
|
||||||
|
border-radius: 8rpx;
|
||||||
|
font-size: 26rpx;
|
||||||
|
transition: all 0.2s;
|
||||||
|
&.active {
|
||||||
|
background: linear-gradient(to right, #e5b932, #c5971e);
|
||||||
|
color: #0b1520;
|
||||||
|
font-weight: bold;
|
||||||
|
border-color: #e5b932;
|
||||||
|
}
|
||||||
|
}
|
||||||
.recharge {
|
.recharge {
|
||||||
background: #0b1520;
|
background: #0b1520;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|||||||
@@ -57,6 +57,10 @@ let api = {
|
|||||||
alinDeposit: async (params) => {
|
alinDeposit: async (params) => {
|
||||||
return await ajax.post("/alin_online_order", params);
|
return await ajax.post("/alin_online_order", params);
|
||||||
},
|
},
|
||||||
|
// 彩虹易支付充值(USDT TRC20 / 支付宝 / 微信 等,默认 usdt)
|
||||||
|
epayDeposit: async (params) => {
|
||||||
|
return await ajax.post("/epay_online_order", params);
|
||||||
|
},
|
||||||
// 越南银行卡提现
|
// 越南银行卡提现
|
||||||
applyWithdrawBank: async (params) => {
|
applyWithdrawBank: async (params) => {
|
||||||
return await ajax.post("/apply_withdraw_bank", params);
|
return await ajax.post("/apply_withdraw_bank", params);
|
||||||
|
|||||||
Reference in New Issue
Block a user