diff --git a/common/api.js b/common/api.js index b76f483..9ad0da2 100644 --- a/common/api.js +++ b/common/api.js @@ -541,15 +541,34 @@ var default_api = 'https://api.global-interaction.com/'; var countryCode = String( options.country_code || options.countryCode || '' ).toUpperCase(); - var candidates = countries.filter(function (country) { + var matchedCountries = countries.filter(function (country) { return ( - String(country.country_code || '').toUpperCase() === - countryCode || - String(country.country_code || '').toUpperCase() === 'GLOBAL' + String(country.country_code || '').toUpperCase() === countryCode ); }); + var globalCountries = countries.filter(function (country) { + return String(country.country_code || '').toUpperCase() === 'GLOBAL'; + }); + var matchedMethods = collectMifaPayMethods( + matchedCountries, + mifapay, + options, + false + ); + var methods = matchedMethods.concat( + collectMifaPayMethods(globalCountries, mifapay, options, false) + ); + if (!matchedMethods.length && countryCode) { + // 用户国家在 app JSON 里没有具体支付方式时,商品仍按用户国家查询,支付方式降级展示 JSON 中全部方式。 + // 兜底方式只影响前端展示和用户选择,下单仍带当前用户国家的 payCountryId 供后端校验金额和币种。 + methods = collectMifaPayMethods(countries, mifapay, options, true); + } + return methods; + } + + function collectMifaPayMethods(countries, mifapay, options, fallbackAll) { var methods = []; - candidates.forEach(function (country) { + (countries || []).forEach(function (country) { (country.methods || []).forEach(function (method, index) { methods.push( Object.assign({}, method, { @@ -565,7 +584,9 @@ var default_api = 'https://api.global-interaction.com/'; country_code: country.country_code, country_name: country.country_name, currency_code: - country.country_code === 'GLOBAL' + fallbackAll || + String(country.country_code || '').toUpperCase() === + 'GLOBAL' ? options.currency_code || country.currency_code : country.currency_code, usd_to_currency_rate: @@ -577,6 +598,7 @@ var default_api = 'https://api.global-interaction.com/'; options.payCountryId || '', status: mifapay.status || 'active', + fallback_all_countries: !!fallbackAll, }) ); }); diff --git a/recharge/config/aslan.json b/recharge/config/aslan.json index 3c1df4b..8a46e65 100644 --- a/recharge/config/aslan.json +++ b/recharge/config/aslan.json @@ -54,25 +54,12 @@ "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", @@ -83,7 +70,6 @@ { "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" }, @@ -109,7 +95,6 @@ "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" } ] }, @@ -118,8 +103,6 @@ "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" } ] }, { @@ -135,7 +118,6 @@ "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" } @@ -173,7 +155,6 @@ "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" } ] }, diff --git a/recharge/config/yumi.json b/recharge/config/yumi.json index d849259..45cf44a 100644 --- a/recharge/config/yumi.json +++ b/recharge/config/yumi.json @@ -55,25 +55,12 @@ "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", @@ -84,7 +71,6 @@ { "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" }, @@ -110,7 +96,6 @@ "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" } ] }, @@ -119,8 +104,6 @@ "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" } ] }, { @@ -136,7 +119,6 @@ "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" } @@ -174,7 +156,6 @@ "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" } ] }, diff --git a/recharge/index.html b/recharge/index.html index b051fbb..92e0694 100644 --- a/recharge/index.html +++ b/recharge/index.html @@ -1572,12 +1572,14 @@ } ((state.options && state.options.payment_methods) || []) .filter(function (method) { - // GLOBAL 是跨国兜底方式,当前充值页只展示用户所在国家的具体支付方式。 + // 正常国家命中时继续隐藏 GLOBAL;如果用户国家没有方式,则后端商品仍按用户国家返回, + // 前端按 JSON 全量兜底展示所有方式,避免用户被空支付方式卡住。 return ( method.status === 'active' && - String( - method.country_code || '' - ).toUpperCase() !== 'GLOBAL' + (method.fallback_all_countries || + String( + method.country_code || '' + ).toUpperCase() !== 'GLOBAL') ); }) .forEach(function (method) {