yumi和 aslan
This commit is contained in:
parent
d1a2220183
commit
c6837f2f6b
311
common/api.js
311
common/api.js
@ -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
194
recharge/config/yumi.json
Normal 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" }
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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 &&
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user