yumi和 aslan

This commit is contained in:
zhx 2026-06-24 12:54:30 +08:00
parent d1a2220183
commit c6837f2f6b
3 changed files with 525 additions and 13 deletions

View File

@ -295,14 +295,23 @@ var default_api = 'https://api.global-interaction.com/';
throw httpError;
}
var code = payload && payload.code;
var errorCode = payload && payload.errorCode;
var isErrorCode =
(typeof code === 'number' && code !== 0) ||
(typeof code === 'string' && code !== '' && code !== 'OK');
(typeof code === 'string' && code !== '' && code !== 'OK') ||
(typeof errorCode === 'number' && errorCode !== 0) ||
(typeof errorCode === 'string' &&
errorCode !== '' &&
errorCode !== '0' &&
errorCode !== 'OK');
if (isErrorCode) {
var apiError = new Error(
payload.message || 'api_request_failed'
payload.message ||
payload.errorMsg ||
payload.error ||
'api_request_failed'
);
apiError.code = payload.code;
apiError.code = payload.code || payload.errorCode;
apiError.request_id = payload.request_id;
apiError.payload = payload;
throw apiError;
@ -310,6 +319,9 @@ var default_api = 'https://api.global-interaction.com/';
return payload &&
Object.prototype.hasOwnProperty.call(payload, 'data')
? payload.data
: payload &&
Object.prototype.hasOwnProperty.call(payload, 'body')
? payload.body
: payload;
});
}
@ -434,6 +446,14 @@ var default_api = 'https://api.global-interaction.com/';
return activeAppConfig && activeAppConfig.adapter === 'aslan-web-pay';
}
function isYumiWebPay() {
return activeAppConfig && activeAppConfig.adapter === 'yumi-web-pay';
}
function isConfiguredWebPay() {
return isAslanWebPay() || isYumiWebPay();
}
function appEndpoint(name, fallback) {
return (
(activeAppConfig &&
@ -459,6 +479,12 @@ var default_api = 'https://api.global-interaction.com/';
return query;
}
function configuredWebPayUserQuery(displayUserID) {
return Object.assign(aslanUserQuery(displayUserID), {
sysOrigin: activeAppConfig.sys_origin || 'LIKEI',
});
}
function aslanPaymentMethods(options) {
var providers = (activeAppConfig && activeAppConfig.providers) || {};
var mifapay = providers.mifapay || {};
@ -508,6 +534,246 @@ var default_api = 'https://api.global-interaction.com/';
return methods;
}
function firstValue(object, keys) {
object = object || {};
for (var i = 0; i < keys.length; i += 1) {
var value = object[keys[i]];
if (value !== undefined && value !== null && value !== '')
return value;
}
return '';
}
function normalizeCountryCode(value) {
return String(value || '')
.trim()
.toUpperCase();
}
function countryCodeFromCountry(country) {
country = country || {};
return normalizeCountryCode(
firstValue(country, [
'alphaTwo',
'alpha_two',
'countryCode',
'country_code',
'code',
])
);
}
function countryNameFromCountry(country) {
return firstValue(country, [
'aliasName',
'enName',
'countryName',
'country_name',
'name',
]);
}
function normalizeAmountUsd(value) {
var amount = Number(value || 0);
return Number.isFinite(amount) && amount > 0 ? amount : 0;
}
function decimalToMinor(value) {
return Math.round(normalizeAmountUsd(value) * 100);
}
function mapYumiContext(context) {
context = context || {};
var profile = context.userProfile || context.user_profile || {};
var countryList = context.countryList || context.country_list || [];
var selectedCountry = countryList[0] || {};
var country = selectedCountry.country || {};
var countryCode =
normalizeCountryCode(profile.countryCode || profile.country_code) ||
countryCodeFromCountry(country);
return {
auth_mode: 'display_user_id',
account: {
id: profile.id || '',
user_id: profile.id || '',
userId: profile.id || '',
display_user_id: profile.account || profile.id || '',
username: profile.userNickname || profile.user_nickname || '',
avatar: profile.userAvatar || profile.user_avatar || '',
country_code: countryCode,
countryCode: countryCode,
country_name:
profile.countryName ||
profile.country_name ||
countryNameFromCountry(country),
countryName:
profile.countryName ||
profile.country_name ||
countryNameFromCountry(country),
},
country_list: countryList.map(function (item) {
var itemCountry = item.country || {};
return {
id: item.id || '',
pay_country_id:
item.payCountryId || item.pay_country_id || item.id || '',
payCountryId:
item.payCountryId || item.pay_country_id || item.id || '',
country_id: item.countryId || item.country_id || '',
currency_code: item.currency || item.currency_code || '',
currencyCode: item.currency || item.currency_code || '',
country_code: countryCodeFromCountry(itemCountry),
countryCode: countryCodeFromCountry(itemCountry),
country_name: countryNameFromCountry(itemCountry),
countryName: countryNameFromCountry(itemCountry),
country: itemCountry,
};
}),
region_id: context.regionId || context.region_id || '',
regionId: context.regionId || context.region_id || '',
raw: context,
};
}
function mapYumiOptions(options) {
options = options || {};
var products = (options.commodity || options.products || []).map(
function (item) {
var content = Number(item.content || 0);
var awardContent = Number(item.awardContent || item.award_content || 0);
var amountUsd = normalizeAmountUsd(item.amountUsd || item.amount_usd);
return {
product_id: item.id,
productId: item.id,
pay_country_id:
item.payCountryId ||
item.pay_country_id ||
options.payCountryId ||
options.pay_country_id ||
'',
coin_amount:
(Number.isFinite(content) ? content : 0) +
(Number.isFinite(awardContent) ? awardContent : 0),
base_coin_amount: Number.isFinite(content) ? content : 0,
award_coin_amount: Number.isFinite(awardContent)
? awardContent
: 0,
amount_usdt: amountUsd,
amount_usdt_micro: Math.round(amountUsd * 1000000),
amount_minor: decimalToMinor(amountUsd),
currency_code: item.currency || item.currency_code || '',
raw: item,
};
}
);
var firstProduct = products[0] || {};
var countryCode = normalizeCountryCode(
options.country_code || options.countryCode || ''
);
var currencyCode =
options.currency_code ||
options.currencyCode ||
firstProduct.currency_code ||
'';
return {
products: products,
payment_methods: yumiPaymentMethods(
Object.assign({}, options, {
pay_country_id:
options.payCountryId ||
options.pay_country_id ||
firstProduct.pay_country_id ||
'',
country_code: countryCode,
currency_code: currencyCode,
usd_to_currency_rate:
options.usd_to_currency_rate ||
options.usdToCurrencyRate ||
0,
})
),
pay_country_id:
options.payCountryId ||
options.pay_country_id ||
firstProduct.pay_country_id ||
'',
country_code: countryCode,
currency_code: currencyCode,
usd_to_currency_rate:
options.usd_to_currency_rate || options.usdToCurrencyRate || 0,
usdt_trc20_enabled: false,
raw: options,
};
}
function yumiPaymentMethods(options) {
var channels = (options.raw && options.raw.channels) || options.channels || [];
var supported = {};
channels.forEach(function (item) {
var channel = item.channel || {};
var details = item.details || {};
[
channel.channelCode,
channel.channel_code,
details.channelCode,
details.channel_code,
].forEach(function (code) {
if (code) supported[String(code)] = item;
});
});
return aslanPaymentMethods(options).filter(function (method) {
var channelCode =
method.channel_code ||
[method.pay_way, method.pay_type].filter(Boolean).join('_');
if (!Object.keys(supported).length) return true;
return !!supported[channelCode];
});
}
function mapYumiOrder(order) {
order = order || {};
var factoryCode = String(
order.factoryCode || order.factory_code || ''
).toUpperCase();
return {
order_id: order.orderId || order.order_id || '',
trade_no: order.tradeNo || order.trade_no || '',
provider_code: factoryCode === 'MIFA_PAY' ? 'mifapay' : factoryCode,
factory_code: factoryCode,
pay_url: order.requestUrl || order.request_url || order.pay_url || '',
currency_code: order.currency || order.currency_code || '',
country_code: order.countryCode || order.country_code || '',
provider_amount_minor: decimalToMinor(order.amount),
status: 'pending',
raw: order,
};
}
function mapYumiOrderStatus(order) {
order = order || {};
var status = String(order.status || '').toUpperCase();
var normalized =
order.success === true || status === 'SUCCESS'
? 'credited'
: order.finished === true || status === 'FAIL'
? 'failed'
: 'pending';
var factoryCode = String(
order.factoryCode || order.factory_code || ''
).toUpperCase();
return {
order_id: order.orderId || order.order_id || '',
trade_no: order.tradeNo || order.trade_no || '',
provider_code: factoryCode === 'MIFA_PAY' ? 'mifapay' : factoryCode,
factory_code: factoryCode,
currency_code: order.currency || order.currency_code || '',
provider_amount_minor: decimalToMinor(order.amount),
status: normalized,
failure_reason: order.reason || '',
raw: order,
};
}
var rechargeAPI = {
context: function (displayUserID) {
if (isAslanWebPay()) {
@ -516,13 +782,19 @@ var default_api = 'https://api.global-interaction.com/';
query: aslanUserQuery(displayUserID),
});
}
if (isYumiWebPay()) {
return request(appEndpoint('context', '/order/web/pay/user-profile'), {
method: 'GET',
query: configuredWebPayUserQuery(displayUserID),
}).then(mapYumiContext);
}
return request('/api/v1/recharge/h5/context', {
method: 'GET',
query: { display_user_id: displayUserID || '' },
});
},
options: function (displayUserID, extra) {
if (isAslanWebPay()) {
if (isConfiguredWebPay()) {
var query = Object.assign(aslanUserQuery(displayUserID), {
payCountryId:
extra && (extra.pay_country_id || extra.payCountryId),
@ -536,6 +808,14 @@ var default_api = 'https://api.global-interaction.com/';
query: query,
}).then(function (options) {
options = options || {};
if (isYumiWebPay()) {
return mapYumiOptions(
Object.assign({}, options, {
country_code:
query.countryCode || options.country_code,
})
);
}
options.payment_methods = aslanPaymentMethods(options);
options.usdt_trc20_enabled = false;
return options;
@ -566,6 +846,20 @@ var default_api = 'https://api.global-interaction.com/';
},
});
}
if (isYumiWebPay()) {
return request(appEndpoint('orders', '/order/web/pay/recharge'), {
method: 'POST',
body: {
applicationId: activeAppConfig.application_id,
goodsId: payload && payload.product_id,
payCountryId: payload && payload.pay_country_id,
userId: payload && payload.user_id,
channelCode: payload && payload.channel_code,
newVersion: true,
appVersion: 'h5',
},
}).then(mapYumiOrder);
}
return request('/api/v1/recharge/h5/orders', {
method: 'POST',
query: { language: readLanguageQuery() },
@ -593,6 +887,15 @@ var default_api = 'https://api.global-interaction.com/';
{ method: 'GET' }
);
}
if (isYumiWebPay()) {
return request(appEndpoint('order', '/order/web/pay/order-status'), {
method: 'GET',
query: {
orderId: orderID || '',
userId: displayUserID || '',
},
}).then(mapYumiOrderStatus);
}
return request(
'/api/v1/recharge/h5/orders/' +
encodeURIComponent(orderID || ''),

194
recharge/config/yumi.json Normal file
View File

@ -0,0 +1,194 @@
{
"app": "yumi",
"adapter": "yumi-web-pay",
"application_id": "2048200000000000701",
"sys_origin": "LIKEI",
"type": "GOLD",
"api": {
"prod": "https://jvapi.haiyihy.com/",
"test": "https://jvapi.haiyihy.com/",
"local": "http://127.0.0.1:13000/"
},
"headers": {
"Req-Sys-Origin": "origin=LIKEI;originChild=LIKEI;",
"Req-Client": "H5",
"Req-App-Intel": "version=1.0.0;build=1;channel=h5;"
},
"endpoints": {
"context": "/order/web/pay/user-profile",
"options": "/order/web/pay/commodity",
"orders": "/order/web/pay/recharge",
"order": "/order/web/pay/order-status"
},
"providers": {
"mifapay": {
"provider_code": "mifapay",
"provider_name": "MiFaPay",
"status": "active",
"countries": [
{
"country_code": "AE",
"country_name": "United Arab Emirates",
"currency_code": "AED",
"methods": [
{ "pay_way": "Card", "pay_type": "CreditCard", "method_name": "UAE Credit Card", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/ae/card-creditcard.png" }
]
},
{
"country_code": "BD",
"country_name": "Bangladesh",
"currency_code": "BDT",
"methods": [
{ "pay_way": "Ewallet", "pay_type": "Nagad", "method_name": "Nagad", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/bd/ewallet-nagad.png" },
{ "pay_way": "Ewallet", "pay_type": "bKash", "method_name": "bKash", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/bd/ewallet-bkash.png" }
]
},
{
"country_code": "BH",
"country_name": "Bahrain",
"currency_code": "BHD",
"methods": [
{ "pay_way": "Card", "pay_type": "CreditCard", "method_name": "Bahrain Credit Card", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/bh/card-creditcard.png" }
]
},
{
"country_code": "EG",
"country_name": "Egypt",
"currency_code": "EGP",
"methods": [
{ "pay_way": "Card", "pay_type": "CreditCard", "method_name": "Egypt Credit Card", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/eg/card-creditcard.png" },
{ "pay_way": "Ewallet", "pay_type": "FawryPay", "method_name": "FawryPay", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/eg/ewallet-fawrypay.png" },
{ "pay_way": "Ewallet", "pay_type": "Meeza", "method_name": "Meeza", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/eg/ewallet-meeza.png" },
{ "pay_way": "Ewallet", "pay_type": "Opay", "method_name": "Opay", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/eg/ewallet-opay.png" },
{ "pay_way": "Ewallet", "pay_type": "Orange", "method_name": "Orange", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/eg/ewallet-orange.png" },
{ "pay_way": "Ewallet", "pay_type": "Vodafone", "method_name": "Vodafone", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/eg/ewallet-vodafone.png" }
]
},
{
"country_code": "GLOBAL",
"country_name": "Global",
"currency_code": "USD",
"methods": [
{ "pay_way": "BankTransfer", "pay_type": "UnionPay", "method_name": "UnionPay", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/global/banktransfer-unionpay.png" },
{ "pay_way": "Card", "pay_type": "CreditCard", "method_name": "Credit Card", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/global/card-creditcard.png" },
{ "pay_way": "Ewallet", "pay_type": "ApplePay", "method_name": "Apple Pay", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/global/ewallet-applepay.png" },
{ "pay_way": "Ewallet", "pay_type": "GooglePay", "method_name": "Google Pay", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/global/ewallet-googlepay.png" }
]
},
{
"country_code": "ID",
"country_name": "Indonesia",
"currency_code": "IDR",
"methods": [
{ "pay_way": "BankTransfer", "pay_type": "BCA", "method_name": "BCA Bank", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/id/banktransfer-bca.png" },
{ "pay_way": "BankTransfer", "pay_type": "BNI", "method_name": "BNI Bank", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/id/banktransfer-bni.png" },
{ "pay_way": "BankTransfer", "pay_type": "BRI", "method_name": "BRI Bank", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/id/banktransfer-bri.png" },
{ "pay_way": "BankTransfer", "pay_type": "Mandiri", "method_name": "Mandiri Bank", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/id/banktransfer-mandiri.png" },
{ "pay_way": "BankTransfer", "pay_type": "Permata", "method_name": "Permata Bank", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/id/banktransfer-permata.png" },
{ "pay_way": "BankTransfer", "pay_type": "QRIS", "method_name": "QRIS Bank Transfer", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/id/banktransfer-qris.png" },
{ "pay_way": "Ewallet", "pay_type": "DANA", "method_name": "DANA", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/id/ewallet-dana.png" },
{ "pay_way": "Ewallet", "pay_type": "LinkAja", "method_name": "LinkAja", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/id/ewallet-linkaja.png" },
{ "pay_way": "Ewallet", "pay_type": "OVO", "method_name": "OVO", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/id/ewallet-ovo.png" },
{ "pay_way": "Ewallet", "pay_type": "ShopeePay", "method_name": "ShopeePay", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/id/ewallet-shopeepay.png" },
{ "pay_way": "QR", "pay_type": "QRIS", "method_name": "QRIS", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/id/qr-qris.png" }
]
},
{
"country_code": "IN",
"country_name": "India",
"currency_code": "INR",
"methods": [
{ "pay_way": "Ewallet", "pay_type": "BHIM", "method_name": "BHIM", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/in/ewallet-bhim.png" },
{ "pay_way": "Ewallet", "pay_type": "GooglePay", "method_name": "Google Pay", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/in/ewallet-googlepay.png" },
{ "pay_way": "Ewallet", "pay_type": "Mobikwik", "method_name": "Mobikwik", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/in/ewallet-mobikwik.png" },
{ "pay_way": "Ewallet", "pay_type": "Paytm", "method_name": "Paytm", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/in/ewallet-paytm.png" },
{ "pay_way": "Ewallet", "pay_type": "PhonePe", "method_name": "PhonePe", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/in/ewallet-phonepe.png" },
{ "pay_way": "Ewallet", "pay_type": "UPI", "method_name": "UPI", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/in/ewallet-upi.png" }
]
},
{
"country_code": "KW",
"country_name": "Kuwait",
"currency_code": "KWD",
"methods": [
{ "pay_way": "Card", "pay_type": "KENT", "method_name": "KENT", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/kw/card-kent.png" },
{ "pay_way": "Card", "pay_type": "Knet", "method_name": "KNET", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/kw/card-knet.png" }
]
},
{
"country_code": "MY",
"country_name": "Malaysia",
"currency_code": "MYR",
"methods": [
{ "pay_way": "BankTransfer", "pay_type": "FPX", "method_name": "FPX", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/my/banktransfer-fpx.png" },
{ "pay_way": "Ewallet", "pay_type": "TNG", "method_name": "Touch n Go", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/my/ewallet-tng.png" }
]
},
{
"country_code": "OM",
"country_name": "Oman",
"currency_code": "OMR",
"methods": [
{ "pay_way": "Card", "pay_type": "CreditCard", "method_name": "Oman Credit Card", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/om/card-creditcard.png" }
]
},
{
"country_code": "PH",
"country_name": "Philippines",
"currency_code": "PHP",
"methods": [
{ "pay_way": "BankTransfer", "pay_type": "QRPH", "method_name": "QRPH Bank Transfer", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/ph/banktransfer-qrph.png" },
{ "pay_way": "Ewallet", "pay_type": "Gcash", "method_name": "GCash", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/ph/ewallet-gcash.png" },
{ "pay_way": "Ewallet", "pay_type": "PayMaya", "method_name": "PayMaya", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/ph/ewallet-paymaya.png" },
{ "pay_way": "QR", "pay_type": "QRPH", "method_name": "QRPH", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/ph/qr-qrph.png" }
]
},
{
"country_code": "PK",
"country_name": "Pakistan",
"currency_code": "PKR",
"methods": [
{ "pay_way": "Ewallet", "pay_type": "Easypaisa", "method_name": "Easypaisa", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/pk/ewallet-easypaisa.png" },
{ "pay_way": "Ewallet", "pay_type": "JazzCash", "method_name": "JazzCash", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/pk/ewallet-jazzcash.png" }
]
},
{
"country_code": "QA",
"country_name": "Qatar",
"currency_code": "QAR",
"methods": [
{ "pay_way": "Card", "pay_type": "CreditCard", "method_name": "Qatar Credit Card", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/qa/card-creditcard.png" }
]
},
{
"country_code": "SA",
"country_name": "Saudi Arabia",
"currency_code": "SAR",
"methods": [
{ "pay_way": "Card", "pay_type": "MADA", "method_name": "MADA", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/sa/card-mada.png" },
{ "pay_way": "Ewallet", "pay_type": "ApplePay", "method_name": "Apple Pay", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/sa/ewallet-applepay.png" },
{ "pay_way": "Ewallet", "pay_type": "STCPay", "method_name": "STCPay", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/sa/ewallet-stcpay.png" }
]
},
{
"country_code": "TH",
"country_name": "Thailand",
"currency_code": "THB",
"methods": [
{ "pay_way": "BankTransfer", "pay_type": "PromptPay", "method_name": "PromptPay", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/th/banktransfer-promptpay.png" },
{ "pay_way": "Ewallet", "pay_type": "TrueMoney", "method_name": "TrueMoney", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/th/ewallet-truemoney.png" }
]
},
{
"country_code": "VN",
"country_name": "Vietnam",
"currency_code": "VND",
"methods": [
{ "pay_way": "BankTransfer", "pay_type": "VN_BankTransfer", "method_name": "Vietnam Bank Transfer", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/vn/banktransfer-vn-banktransfer.png" },
{ "pay_way": "QR", "pay_type": "VietQR", "method_name": "VietQR", "logo_url": "https://media.haiyihy.com/admin/payment/mifapay/logos/vn/qr-vietqr.png" }
]
}
]
}
}
}

View File

@ -1385,11 +1385,12 @@
products.length > 0
);
products.forEach(function (product) {
var currentProductID = productID(product);
var button = document.createElement('button');
button.type = 'button';
button.className =
'choice' +
(product.product_id === state.selectedProductID
(currentProductID === state.selectedProductID
? ' is-selected'
: '');
button.innerHTML =
@ -1401,7 +1402,7 @@
escapeHTML(formatUSD(product)) +
'</span>';
button.addEventListener('click', function () {
state.selectedProductID = product.product_id;
state.selectedProductID = currentProductID;
// 档位、支付方式和订单必须是一组同源快照;切档位时清空旧支付方式和旧订单,防止旧金额被带入新订单。
state.selectedMethodKey = '';
state.order = null;
@ -1641,7 +1642,7 @@
window.HyAppAPI.recharge
.createOrder({
display_user_id: targetDisplayUserID(),
product_id: product.product_id,
product_id: productID(product),
user_id: currentAccountUserID(),
pay_country_id:
method.payCountryID ||
@ -1769,7 +1770,7 @@
renderOrder();
}
return window.HyAppAPI.recharge
.getOrder(state.order.order_id, targetDisplayUserID())
.getOrder(state.order.order_id, orderStatusUserID())
.then(function (payload) {
state.order = payload.order || payload;
renderOrder();
@ -1811,7 +1812,7 @@
window.HyAppAPI.recharge
.getOrder(
pending.order_id,
targetDisplayUserID() || pending.display_user_id
orderStatusUserID() || pending.display_user_id
)
.then(function (payload) {
state.order = payload.order || payload;
@ -2083,7 +2084,7 @@
((state.options && state.options.products) || []).find(
function (item) {
return (
item.product_id === state.selectedProductID
productID(item) === state.selectedProductID
);
}
) || null
@ -2109,10 +2110,10 @@
return;
}
var hasSelectedProduct = products.some(function (product) {
return product.product_id === state.selectedProductID;
return productID(product) === state.selectedProductID;
});
if (!hasSelectedProduct) {
state.selectedProductID = products[0].product_id;
state.selectedProductID = productID(products[0]);
}
var methods = availableMethods();
if (!methods.length) {
@ -2159,6 +2160,10 @@
);
}
function orderStatusUserID() {
return currentAccountUserID() || targetDisplayUserID();
}
function isTerminalOrder(order) {
return (
!!order &&
@ -2393,12 +2398,22 @@
return [
'h5',
Date.now(),
product.product_id,
productID(product),
method.key.replace(/[^a-zA-Z0-9_:-]/g, ''),
randomCommandSuffix(),
].join(':');
}
function productID(product) {
product = product || {};
return String(
product.product_id ||
product.productId ||
product.id ||
''
);
}
function randomCommandSuffix() {
if (
window.crypto &&