aslan的支付
This commit is contained in:
parent
c8a91664fe
commit
599b66299b
189
common/api.js
189
common/api.js
@ -17,6 +17,7 @@ var default_api = 'https://api.global-interaction.com/';
|
||||
var memoryEnv = '';
|
||||
var memoryAccessToken = '';
|
||||
var memoryAppCode = '';
|
||||
var activeAppConfig = null;
|
||||
|
||||
function currentQueryParams() {
|
||||
var params = new URLSearchParams(window.location.search);
|
||||
@ -114,6 +115,8 @@ var default_api = 'https://api.global-interaction.com/';
|
||||
|
||||
function resolveBaseURL() {
|
||||
var env = resolveEnv();
|
||||
var configuredAPI = activeAppAPIBaseURL(env);
|
||||
if (configuredAPI) return configuredAPI;
|
||||
if (env === 'test')
|
||||
return isLocalDevOrigin()
|
||||
? devProxyBase('/__api_test__/')
|
||||
@ -122,6 +125,14 @@ var default_api = 'https://api.global-interaction.com/';
|
||||
return normalizeBaseURL(default_api);
|
||||
}
|
||||
|
||||
function activeAppAPIBaseURL(env) {
|
||||
var api = activeAppConfig && activeAppConfig.api;
|
||||
if (!api) return '';
|
||||
if (env === 'local' && api.local) return normalizeBaseURL(api.local);
|
||||
if (env === 'test' && api.test) return normalizeBaseURL(api.test);
|
||||
return api.prod || api.default ? normalizeBaseURL(api.prod || api.default) : '';
|
||||
}
|
||||
|
||||
function buildURL(path, query) {
|
||||
var url = new URL(path.replace(/^\/+/, ''), resolveBaseURL());
|
||||
if (query) {
|
||||
@ -181,7 +192,7 @@ var default_api = 'https://api.global-interaction.com/';
|
||||
}
|
||||
|
||||
function getAppCode() {
|
||||
var queryAppCode = readQuery('app_code') || readQuery('appCode');
|
||||
var queryAppCode = readQuery('app') || readQuery('app_code') || readQuery('appCode');
|
||||
if (queryAppCode) {
|
||||
memoryAppCode = queryAppCode;
|
||||
if (shouldPersist())
|
||||
@ -215,6 +226,43 @@ var default_api = 'https://api.global-interaction.com/';
|
||||
if (shouldPersist()) window.localStorage.removeItem(APP_CODE_KEY);
|
||||
}
|
||||
|
||||
function setAppConfig(config) {
|
||||
activeAppConfig = config || null;
|
||||
if (activeAppConfig && activeAppConfig.app) {
|
||||
setAppCode(activeAppConfig.app);
|
||||
}
|
||||
return activeAppConfig;
|
||||
}
|
||||
|
||||
function getAppConfig() {
|
||||
return activeAppConfig;
|
||||
}
|
||||
|
||||
function loadAppConfig(scope) {
|
||||
var appCode = String(getAppCode() || 'lalu').trim().toLowerCase();
|
||||
if (!appCode || appCode === 'lalu') {
|
||||
activeAppConfig = null;
|
||||
return Promise.resolve(null);
|
||||
}
|
||||
var scopePath = String(scope || '').replace(/^\/+|\/+$/g, '');
|
||||
var configPath =
|
||||
(scopePath ? '/' + scopePath : '.') + '/config/' + appCode + '.json';
|
||||
var configURL = new URL(configPath, window.location.origin + window.location.pathname);
|
||||
return window
|
||||
.fetch(configURL.toString(), { cache: shouldPersist() ? 'default' : 'no-store' })
|
||||
.then(function (response) {
|
||||
if (!response.ok) return null;
|
||||
return response.json();
|
||||
})
|
||||
.then(function (config) {
|
||||
return setAppConfig(config);
|
||||
})
|
||||
.catch(function () {
|
||||
activeAppConfig = null;
|
||||
return null;
|
||||
});
|
||||
}
|
||||
|
||||
function errorMessageForResponse(response, payload) {
|
||||
if (response.status === 409) return 'Duplicate request.';
|
||||
return payload.message || response.statusText || 'request_failed';
|
||||
@ -276,7 +324,11 @@ var default_api = 'https://api.global-interaction.com/';
|
||||
|
||||
function request(path, options) {
|
||||
var opts = options || {};
|
||||
var headers = Object.assign({}, opts.headers || {});
|
||||
var headers = Object.assign(
|
||||
{},
|
||||
(activeAppConfig && activeAppConfig.headers) || {},
|
||||
opts.headers || {}
|
||||
);
|
||||
var token = getAccessToken();
|
||||
var appCode = getAppCode();
|
||||
var url = buildURL(path, opts.query);
|
||||
@ -378,20 +430,139 @@ var default_api = 'https://api.global-interaction.com/';
|
||||
|
||||
// H5 充值 API 只做路径和参数名封装;token、app_code、env、错误 envelope 仍由 request 统一处理。
|
||||
// 金额、金币数、普通/币商钱包、MiFaPay 参数和 USDT 链上校验都以后端订单快照为准。
|
||||
function isAslanWebPay() {
|
||||
return activeAppConfig && activeAppConfig.adapter === 'aslan-web-pay';
|
||||
}
|
||||
|
||||
function appEndpoint(name, fallback) {
|
||||
return (
|
||||
(activeAppConfig &&
|
||||
activeAppConfig.endpoints &&
|
||||
activeAppConfig.endpoints[name]) ||
|
||||
fallback
|
||||
);
|
||||
}
|
||||
|
||||
function aslanUserQuery(displayUserID) {
|
||||
var value = String(displayUserID || '').trim();
|
||||
var query = {
|
||||
applicationId: activeAppConfig.application_id,
|
||||
type: activeAppConfig.type || 'GOLD',
|
||||
sysOrigin: activeAppConfig.sys_origin || 'ATYOU',
|
||||
};
|
||||
if (/^\d+$/.test(value)) {
|
||||
query.userId = value;
|
||||
} else if (value) {
|
||||
query.account = value;
|
||||
}
|
||||
return query;
|
||||
}
|
||||
|
||||
function aslanPaymentMethods(options) {
|
||||
var providers = (activeAppConfig && activeAppConfig.providers) || {};
|
||||
var mifapay = providers.mifapay || {};
|
||||
var countries = mifapay.countries || [];
|
||||
var countryCode = String(
|
||||
options.country_code || options.countryCode || ''
|
||||
).toUpperCase();
|
||||
var candidates = countries.filter(function (country) {
|
||||
return (
|
||||
String(country.country_code || '').toUpperCase() === countryCode ||
|
||||
String(country.country_code || '').toUpperCase() === 'GLOBAL'
|
||||
);
|
||||
});
|
||||
var methods = [];
|
||||
candidates.forEach(function (country) {
|
||||
(country.methods || []).forEach(function (method, index) {
|
||||
methods.push(
|
||||
Object.assign({}, method, {
|
||||
method_id: [
|
||||
mifapay.provider_code || 'mifapay',
|
||||
country.country_code,
|
||||
method.pay_way,
|
||||
method.pay_type,
|
||||
index,
|
||||
].join(':'),
|
||||
provider_code: mifapay.provider_code || 'mifapay',
|
||||
provider_name: mifapay.provider_name || 'MiFaPay',
|
||||
country_code: country.country_code,
|
||||
country_name: country.country_name,
|
||||
currency_code:
|
||||
country.country_code === 'GLOBAL'
|
||||
? options.currency_code || country.currency_code
|
||||
: country.currency_code,
|
||||
usd_to_currency_rate:
|
||||
options.usd_to_currency_rate ||
|
||||
options.usdToCurrencyRate ||
|
||||
0,
|
||||
pay_country_id:
|
||||
options.pay_country_id ||
|
||||
options.payCountryId ||
|
||||
'',
|
||||
status: mifapay.status || 'active',
|
||||
})
|
||||
);
|
||||
});
|
||||
});
|
||||
return methods;
|
||||
}
|
||||
|
||||
var rechargeAPI = {
|
||||
context: function (displayUserID) {
|
||||
if (isAslanWebPay()) {
|
||||
return request(appEndpoint('context', '/order/web/pay/h5/context'), {
|
||||
method: 'GET',
|
||||
query: aslanUserQuery(displayUserID),
|
||||
});
|
||||
}
|
||||
return request('/api/v1/recharge/h5/context', {
|
||||
method: 'GET',
|
||||
query: { display_user_id: displayUserID || '' },
|
||||
});
|
||||
},
|
||||
options: function (displayUserID) {
|
||||
options: function (displayUserID, extra) {
|
||||
if (isAslanWebPay()) {
|
||||
var query = Object.assign(aslanUserQuery(displayUserID), {
|
||||
payCountryId:
|
||||
extra && (extra.pay_country_id || extra.payCountryId),
|
||||
regionId: extra && (extra.region_id || extra.regionId),
|
||||
userId: extra && (extra.user_id || extra.userId),
|
||||
});
|
||||
return request(appEndpoint('options', '/order/web/pay/h5/options'), {
|
||||
method: 'GET',
|
||||
query: query,
|
||||
}).then(function (options) {
|
||||
options = options || {};
|
||||
options.payment_methods = aslanPaymentMethods(options);
|
||||
options.usdt_trc20_enabled = false;
|
||||
return options;
|
||||
});
|
||||
}
|
||||
return request('/api/v1/recharge/h5/options', {
|
||||
method: 'GET',
|
||||
query: { display_user_id: displayUserID || '' },
|
||||
});
|
||||
},
|
||||
createOrder: function (payload) {
|
||||
if (isAslanWebPay()) {
|
||||
return request(appEndpoint('orders', '/order/web/pay/h5/orders'), {
|
||||
method: 'POST',
|
||||
body: {
|
||||
applicationId: activeAppConfig.application_id,
|
||||
goodsId: payload && payload.product_id,
|
||||
payCountryId: payload && payload.pay_country_id,
|
||||
userId: payload && payload.user_id,
|
||||
providerCode: payload && payload.provider_code,
|
||||
payWay: payload && payload.pay_way,
|
||||
payType: payload && payload.pay_type,
|
||||
channelCode: payload && payload.channel_code,
|
||||
returnUrl: payload && payload.return_url,
|
||||
commandId: payload && payload.command_id,
|
||||
type: (activeAppConfig && activeAppConfig.type) || 'GOLD',
|
||||
language: readLanguageQuery() || 'en',
|
||||
},
|
||||
});
|
||||
}
|
||||
return request('/api/v1/recharge/h5/orders', {
|
||||
method: 'POST',
|
||||
query: { language: readLanguageQuery() },
|
||||
@ -410,6 +581,15 @@ var default_api = 'https://api.global-interaction.com/';
|
||||
);
|
||||
},
|
||||
getOrder: function (orderID, displayUserID) {
|
||||
if (isAslanWebPay()) {
|
||||
return request(
|
||||
appEndpoint('order', '/order/web/pay/h5/orders/{orderId}').replace(
|
||||
'{orderId}',
|
||||
encodeURIComponent(orderID || '')
|
||||
),
|
||||
{ method: 'GET' }
|
||||
);
|
||||
}
|
||||
return request(
|
||||
'/api/v1/recharge/h5/orders/' +
|
||||
encodeURIComponent(orderID || ''),
|
||||
@ -976,6 +1156,9 @@ var default_api = 'https://api.global-interaction.com/';
|
||||
getAppCode: getAppCode,
|
||||
setAccessToken: setAccessToken,
|
||||
setAppCode: setAppCode,
|
||||
setAppConfig: setAppConfig,
|
||||
getAppConfig: getAppConfig,
|
||||
loadAppConfig: loadAppConfig,
|
||||
request: request,
|
||||
get: function (path, query) {
|
||||
return request(path, { method: 'GET', query: query });
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
(function () {
|
||||
var TOKEN_KEYS = ['token', 'access_token', 'accessToken'];
|
||||
var APP_CODE_KEYS = ['app_code', 'appCode'];
|
||||
var APP_CODE_KEYS = ['app', 'app_code', 'appCode'];
|
||||
var USER_READY_EVENT = 'hyapp:user-ready';
|
||||
var USER_ERROR_EVENT = 'hyapp:user-error';
|
||||
|
||||
|
||||
193
recharge/config/aslan.json
Normal file
193
recharge/config/aslan.json
Normal file
@ -0,0 +1,193 @@
|
||||
{
|
||||
"app": "aslan",
|
||||
"adapter": "aslan-web-pay",
|
||||
"application_id": "1963531459019739137",
|
||||
"sys_origin": "ATYOU",
|
||||
"type": "GOLD",
|
||||
"api": {
|
||||
"prod": "https://api.atuchat.com/",
|
||||
"test": "https://api.atuchat.com/",
|
||||
"local": "http://127.0.0.1:1100/"
|
||||
},
|
||||
"headers": {
|
||||
"req-sys-origin": "origin=ATYOU;originChild=ATYOU",
|
||||
"Req-Atyou": "true"
|
||||
},
|
||||
"endpoints": {
|
||||
"context": "/order/web/pay/h5/context",
|
||||
"options": "/order/web/pay/h5/options",
|
||||
"orders": "/order/web/pay/h5/orders",
|
||||
"order": "/order/web/pay/h5/orders/{orderId}"
|
||||
},
|
||||
"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" }
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1064,6 +1064,10 @@
|
||||
var state = {
|
||||
context: null,
|
||||
options: null,
|
||||
appConfig: null,
|
||||
selectedPayCountryID: '',
|
||||
selectedCountryCode: '',
|
||||
selectedCurrencyCode: '',
|
||||
selectedProductID: 0,
|
||||
selectedMethodKey: '',
|
||||
order: null,
|
||||
@ -1149,6 +1153,25 @@
|
||||
(pendingOrder && pendingOrder.display_user_id) ||
|
||||
'';
|
||||
nodes.displayUserID.value = displayUserID;
|
||||
var configReady =
|
||||
window.HyAppAPI && window.HyAppAPI.loadAppConfig
|
||||
? window.HyAppAPI.loadAppConfig('recharge')
|
||||
: Promise.resolve(null);
|
||||
configReady
|
||||
.then(function (config) {
|
||||
state.appConfig =
|
||||
config ||
|
||||
(window.HyAppAPI &&
|
||||
window.HyAppAPI.getAppConfig
|
||||
? window.HyAppAPI.getAppConfig()
|
||||
: null);
|
||||
})
|
||||
.finally(function () {
|
||||
continueInit(current, displayUserID);
|
||||
});
|
||||
}
|
||||
|
||||
function continueInit(current, displayUserID) {
|
||||
if (current.token) {
|
||||
// token 模式必须隐藏账号输入,目标用户只能由服务端鉴权结果决定,不能让前端改充值对象。
|
||||
nodes.accountSearch.classList.add('hidden');
|
||||
@ -1216,10 +1239,18 @@
|
||||
.then(function (context) {
|
||||
// context 只返回安全账号信息和 audience_type;前端不读取手机号、邮箱、余额等敏感字段。
|
||||
state.context = context;
|
||||
selectPayCountryFromContext(context);
|
||||
return window.HyAppAPI.recharge.options(
|
||||
context.auth_mode === 'token'
|
||||
? ''
|
||||
: context.account.display_user_id
|
||||
: context.account.display_user_id,
|
||||
{
|
||||
pay_country_id: state.selectedPayCountryID,
|
||||
country_code: state.selectedCountryCode,
|
||||
region_id:
|
||||
context.region_id || context.regionId,
|
||||
user_id: currentAccountUserID(),
|
||||
}
|
||||
);
|
||||
})
|
||||
.then(function (options) {
|
||||
@ -1308,6 +1339,9 @@
|
||||
var previousID = currentAccountDisplayUserID();
|
||||
state.context = null;
|
||||
state.options = null;
|
||||
state.selectedPayCountryID = '';
|
||||
state.selectedCountryCode = '';
|
||||
state.selectedCurrencyCode = '';
|
||||
state.selectedProductID = 0;
|
||||
state.selectedMethodKey = '';
|
||||
state.order = null;
|
||||
@ -1550,6 +1584,22 @@
|
||||
providerCode:
|
||||
method.provider_code || 'mifapay',
|
||||
methodID: method.method_id,
|
||||
payCountryID:
|
||||
method.pay_country_id ||
|
||||
state.selectedPayCountryID,
|
||||
countryCode:
|
||||
method.country_code ||
|
||||
state.selectedCountryCode,
|
||||
currencyCode:
|
||||
method.currency_code ||
|
||||
state.selectedCurrencyCode,
|
||||
payWay: method.pay_way,
|
||||
payType: method.pay_type,
|
||||
channelCode:
|
||||
method.channel_code ||
|
||||
[method.pay_way, method.pay_type]
|
||||
.filter(Boolean)
|
||||
.join('_'),
|
||||
});
|
||||
});
|
||||
return methods;
|
||||
@ -1582,8 +1632,21 @@
|
||||
.createOrder({
|
||||
display_user_id: targetDisplayUserID(),
|
||||
product_id: product.product_id,
|
||||
user_id: currentAccountUserID(),
|
||||
pay_country_id:
|
||||
method.payCountryID ||
|
||||
state.selectedPayCountryID,
|
||||
provider_code: method.providerCode,
|
||||
payment_method_id: method.methodID || 0,
|
||||
pay_way: method.payWay || '',
|
||||
pay_type: method.payType || '',
|
||||
channel_code: method.channelCode || '',
|
||||
country_code:
|
||||
method.countryCode ||
|
||||
state.selectedCountryCode,
|
||||
currency_code:
|
||||
method.currencyCode ||
|
||||
state.selectedCurrencyCode,
|
||||
command_id: commandID(product, method),
|
||||
return_url: externalPayReturnURL(),
|
||||
})
|
||||
@ -2076,6 +2139,16 @@
|
||||
: '';
|
||||
}
|
||||
|
||||
function currentAccountUserID() {
|
||||
if (!state.context || !state.context.account) return '';
|
||||
return (
|
||||
state.context.account.user_id ||
|
||||
state.context.account.userId ||
|
||||
state.context.account.id ||
|
||||
''
|
||||
);
|
||||
}
|
||||
|
||||
function isTerminalOrder(order) {
|
||||
return (
|
||||
!!order &&
|
||||
@ -2111,6 +2184,10 @@
|
||||
);
|
||||
}
|
||||
if (window.HyAppAPI && window.HyAppAPI.getAppCode) {
|
||||
url.searchParams.set(
|
||||
'app',
|
||||
window.HyAppAPI.getAppCode()
|
||||
);
|
||||
url.searchParams.set(
|
||||
'app_code',
|
||||
window.HyAppAPI.getAppCode()
|
||||
@ -2167,6 +2244,34 @@
|
||||
return params;
|
||||
}
|
||||
|
||||
function selectPayCountryFromContext(context) {
|
||||
var countries =
|
||||
(context && (context.country_list || context.countryList)) ||
|
||||
[];
|
||||
var selected = countries[0] || {};
|
||||
state.selectedPayCountryID =
|
||||
selected.pay_country_id ||
|
||||
selected.payCountryId ||
|
||||
selected.id ||
|
||||
'';
|
||||
state.selectedCountryCode = String(
|
||||
selected.country_code ||
|
||||
selected.countryCode ||
|
||||
firstValue(selected.country || {}, [
|
||||
'alphaTwo',
|
||||
'alpha_two',
|
||||
'countryCode',
|
||||
'country_code',
|
||||
]) ||
|
||||
''
|
||||
).toUpperCase();
|
||||
state.selectedCurrencyCode =
|
||||
selected.currency_code ||
|
||||
selected.currencyCode ||
|
||||
state.selectedCurrencyCode ||
|
||||
'';
|
||||
}
|
||||
|
||||
// command_id 给服务端幂等使用,包含时间、商品、方式和随机后缀;真实订单号仍由后端生成。
|
||||
// 三方拒单会把本地订单置失败,后续重用同一 command_id 只会回放旧失败结果,所以每次点击都必须生成新命令。
|
||||
function commandID(product, method) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user