fix: 修改充值提现配置和充值接口
This commit is contained in:
@@ -14,6 +14,9 @@ import type {
|
||||
DepositWithdrawConfig,
|
||||
DepositWithdrawConfigDto,
|
||||
FinanceCurrencyConfigDto,
|
||||
FinanceDepositConfigDto,
|
||||
FinanceDepositFieldsDto,
|
||||
FinanceDepositMethodDto,
|
||||
FinanceOrderItemDto,
|
||||
FinanceOrderList,
|
||||
FinanceOrderListDto,
|
||||
@@ -80,7 +83,7 @@ function normalizePayChannel(dto: FinancePayChannelDto) {
|
||||
code: dto.code,
|
||||
name: dto.name,
|
||||
sort: Number.isFinite(dto.sort) ? dto.sort : 0,
|
||||
status: dto.status,
|
||||
status: typeof dto.status === 'number' ? dto.status : 1,
|
||||
tierIds: Array.isArray(dto.tier_ids) ? dto.tier_ids : [],
|
||||
}
|
||||
}
|
||||
@@ -91,6 +94,8 @@ function normalizeWithdrawBank(dto: FinanceWithdrawBankDto, index: number) {
|
||||
|
||||
return {
|
||||
code,
|
||||
currencyCode: dto.currency_code ?? null,
|
||||
gatewayCode: dto.gateway_code ?? null,
|
||||
label,
|
||||
sort:
|
||||
typeof dto.sort === 'number' && Number.isFinite(dto.sort)
|
||||
@@ -100,15 +105,68 @@ function normalizeWithdrawBank(dto: FinanceWithdrawBankDto, index: number) {
|
||||
}
|
||||
}
|
||||
|
||||
function normalizeDepositMethod(dto: FinanceDepositMethodDto) {
|
||||
return {
|
||||
code: dto.code,
|
||||
currencyCode: dto.currency_code,
|
||||
gatewayCode: dto.gateway_code,
|
||||
name: dto.name,
|
||||
requiresBank: dto.requires_bank,
|
||||
requiresBankAccount: dto.requires_bank_account,
|
||||
requiresDepositorName: dto.requires_depositor_name,
|
||||
requiresFromAddress: dto.requires_from_address,
|
||||
}
|
||||
}
|
||||
|
||||
function normalizeDepositFields(dto: FinanceDepositFieldsDto | undefined = {}) {
|
||||
return {
|
||||
depositBankAccountParam:
|
||||
dto.deposit_bank_account_param ?? 'deposit_bank_account',
|
||||
depositBankParam: dto.deposit_bank_param ?? 'deposit_bank',
|
||||
depositFromAddressParam:
|
||||
dto.deposit_from_address_param ?? 'deposit_from_address',
|
||||
depositNameServerSide: dto.deposit_name_server_side ?? false,
|
||||
paymentTypeParam: dto.payment_type_param ?? 'payment_type',
|
||||
requireChannelCode: dto.require_channel_code ?? true,
|
||||
requireIdempotencyKey: dto.require_idempotency_key ?? true,
|
||||
requirePaymentType: dto.require_payment_type ?? false,
|
||||
}
|
||||
}
|
||||
|
||||
function normalizeDepositConfig(dto: FinanceDepositConfigDto | undefined) {
|
||||
return {
|
||||
banks: (dto?.banks ?? []).map(normalizeWithdrawBank),
|
||||
defaultChannelByCurrency: dto?.default_channel_by_currency ?? {},
|
||||
fields: normalizeDepositFields(dto?.fields),
|
||||
methods: (dto?.methods ?? []).map(normalizeDepositMethod),
|
||||
}
|
||||
}
|
||||
|
||||
function normalizeWithdrawFields(dto: FinanceWithdrawConfigDto['fields'] = {}) {
|
||||
return {
|
||||
receiveTypeBankOnly: dto.receive_type_bank_only ?? true,
|
||||
requireBankBranch: dto.require_bank_branch ?? false,
|
||||
requireBankCode: dto.require_bank_code ?? true,
|
||||
requireChannelCode: dto.require_channel_code ?? true,
|
||||
requireReceiveAccount: dto.require_receive_account ?? true,
|
||||
requireReceiverEmail: dto.require_receiver_email ?? true,
|
||||
requireReceiverMobile: dto.require_receiver_mobile ?? true,
|
||||
requireReceiverName: dto.require_receiver_name ?? true,
|
||||
}
|
||||
}
|
||||
|
||||
function normalizeWithdrawConfig(dto: FinanceWithdrawConfigDto) {
|
||||
return {
|
||||
banks: (dto.banks ?? []).map(normalizeWithdrawBank),
|
||||
feeNote: dto.fee_note,
|
||||
fields: normalizeWithdrawFields(dto.fields),
|
||||
minBank: dto.min_bank,
|
||||
minEwallet: dto.min_ewallet,
|
||||
payChannels: (dto.pay_channels ?? []).map(normalizePayChannel),
|
||||
processingNote: dto.processing_note,
|
||||
rateHint: dto.rate_hint,
|
||||
rateMode: dto.rate_mode,
|
||||
reviewThresholdCoin: dto.review_threshold_coin ?? '0',
|
||||
}
|
||||
}
|
||||
|
||||
@@ -117,6 +175,8 @@ function normalizeDepositWithdrawConfig(
|
||||
): DepositWithdrawConfig {
|
||||
return {
|
||||
currencies: (dto.currencies ?? []).map(normalizeCurrency),
|
||||
defaultDepositChannelCode: dto.default_deposit_channel_code ?? '',
|
||||
deposit: normalizeDepositConfig(dto.deposit),
|
||||
payChannels: (dto.pay_channels ?? []).map(normalizePayChannel),
|
||||
platformCoinLabel: dto.platform_coin_label,
|
||||
rates: (dto.rates ?? []).map(normalizeRate),
|
||||
|
||||
@@ -285,6 +285,22 @@ export const DEFAULT_WITHDRAW_CONFIG: DepositWithdrawConfig = {
|
||||
withdrawCoinsPerFiatValue: 100,
|
||||
},
|
||||
],
|
||||
defaultDepositChannelCode: '',
|
||||
deposit: {
|
||||
banks: [],
|
||||
defaultChannelByCurrency: {},
|
||||
fields: {
|
||||
depositBankAccountParam: 'deposit_bank_account',
|
||||
depositBankParam: 'deposit_bank',
|
||||
depositFromAddressParam: 'deposit_from_address',
|
||||
depositNameServerSide: false,
|
||||
paymentTypeParam: 'payment_type',
|
||||
requireChannelCode: true,
|
||||
requireIdempotencyKey: true,
|
||||
requirePaymentType: false,
|
||||
},
|
||||
methods: [],
|
||||
},
|
||||
payChannels: [],
|
||||
platformCoinLabel: '钻石',
|
||||
rates: [
|
||||
@@ -297,11 +313,23 @@ export const DEFAULT_WITHDRAW_CONFIG: DepositWithdrawConfig = {
|
||||
withdraw: {
|
||||
banks: [],
|
||||
feeNote: 'RM10 - RM99.99 之间的交易将收取最低RM 1的提现手续费',
|
||||
fields: {
|
||||
receiveTypeBankOnly: true,
|
||||
requireBankBranch: false,
|
||||
requireBankCode: true,
|
||||
requireChannelCode: true,
|
||||
requireReceiveAccount: true,
|
||||
requireReceiverEmail: true,
|
||||
requireReceiverMobile: true,
|
||||
requireReceiverName: true,
|
||||
},
|
||||
minBank: '10',
|
||||
minEwallet: '10',
|
||||
payChannels: [],
|
||||
processingNote: '30s即可到账',
|
||||
rateHint: '汇率为参考价格,实际以提现时为准。',
|
||||
rateMode: 'fixed',
|
||||
reviewThresholdCoin: '0',
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@@ -3,7 +3,9 @@ import { useRef } from 'react'
|
||||
import { useTranslation } from 'react-i18next'
|
||||
import { createDeposit } from '@/api'
|
||||
import { DataLoadingIndicator } from '@/components/ui/data-loading-indicator'
|
||||
import { DEFAULT_WITHDRAW_CONFIG } from '@/constants'
|
||||
import { useDepositTierList } from '@/hooks/use-deposit-tier-list'
|
||||
import { useDepositWithdrawConfig } from '@/hooks/use-deposit-withdraw-config'
|
||||
import { notify } from '@/lib/notify'
|
||||
import { cn } from '@/lib/utils'
|
||||
import type { DepositTierItem } from '@/type'
|
||||
@@ -17,21 +19,39 @@ function formatNumber(value: number) {
|
||||
|
||||
function DesktopTopup() {
|
||||
const { t } = useTranslation()
|
||||
const depositWithdrawConfigQuery = useDepositWithdrawConfig()
|
||||
const tierListQuery = useDepositTierList()
|
||||
const depositWithdrawConfig =
|
||||
depositWithdrawConfigQuery.data ?? DEFAULT_WITHDRAW_CONFIG
|
||||
const isLoading =
|
||||
tierListQuery.isLoading || depositWithdrawConfigQuery.isLoading
|
||||
const isError = tierListQuery.isError || depositWithdrawConfigQuery.isError
|
||||
const tiers = tierListQuery.data ?? []
|
||||
const createDepositInFlightRef = useRef(false)
|
||||
const pendingPayWindowRef = useRef<Window | null>(null)
|
||||
const createDepositMutation = useMutation({
|
||||
mutationFn: ({
|
||||
channelCode,
|
||||
depositBank,
|
||||
depositBankAccount,
|
||||
depositFromAddress,
|
||||
paymentType,
|
||||
tierId,
|
||||
}: {
|
||||
channelCode: string
|
||||
depositBank?: string
|
||||
depositBankAccount?: string
|
||||
depositFromAddress?: string
|
||||
paymentType: string
|
||||
tierId: string
|
||||
}) =>
|
||||
createDeposit({
|
||||
channel_code: channelCode,
|
||||
deposit_bank: depositBank,
|
||||
deposit_bank_account: depositBankAccount,
|
||||
deposit_from_address: depositFromAddress,
|
||||
idempotency_key: String(Date.now()),
|
||||
payment_type: paymentType,
|
||||
tier_id: tierId,
|
||||
}),
|
||||
})
|
||||
@@ -41,13 +61,34 @@ function DesktopTopup() {
|
||||
return
|
||||
}
|
||||
|
||||
const channelCode = tier.payChannelCode ?? tier.channels[0]?.code ?? ''
|
||||
const channelCode =
|
||||
tier.payChannelCode ??
|
||||
tier.channels[0]?.code ??
|
||||
(tier.currency
|
||||
? depositWithdrawConfig.deposit.defaultChannelByCurrency[tier.currency]
|
||||
: undefined) ??
|
||||
depositWithdrawConfig.defaultDepositChannelCode
|
||||
const selectedPaymentMethod =
|
||||
depositWithdrawConfig.deposit.methods.find(
|
||||
(method) => method.currencyCode === tier.currency,
|
||||
) ?? depositWithdrawConfig.deposit.methods[0]
|
||||
const paymentType = selectedPaymentMethod?.code ?? ''
|
||||
const depositBank = selectedPaymentMethod?.requiresBank
|
||||
? depositWithdrawConfig.deposit.banks.find(
|
||||
(bank) => bank.currencyCode === tier.currency,
|
||||
)?.code
|
||||
: undefined
|
||||
|
||||
if (!channelCode) {
|
||||
notify.error(t('commonUi.toast.configError'))
|
||||
return
|
||||
}
|
||||
|
||||
if (!paymentType) {
|
||||
notify.error(t('commonUi.toast.configError'))
|
||||
return
|
||||
}
|
||||
|
||||
createDepositInFlightRef.current = true
|
||||
const payWindow = window.open('', '_blank')
|
||||
|
||||
@@ -63,6 +104,8 @@ function DesktopTopup() {
|
||||
try {
|
||||
const result = await createDepositMutation.mutateAsync({
|
||||
channelCode,
|
||||
depositBank,
|
||||
paymentType,
|
||||
tierId: tier.id,
|
||||
})
|
||||
const payUrl = result.pay_url.trim()
|
||||
@@ -105,12 +148,12 @@ function DesktopTopup() {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{tierListQuery.isLoading ? (
|
||||
{isLoading ? (
|
||||
<DataLoadingIndicator
|
||||
label={t('gameDesktop.topup.tier.loading')}
|
||||
className="h-full min-h-0 rounded-[calc(var(--design-unit)*6)] border border-[rgba(103,227,239,0.18)] bg-[rgba(6,24,35,0.52)]"
|
||||
/>
|
||||
) : tierListQuery.isError ? (
|
||||
) : isError ? (
|
||||
<div className="flex h-full min-h-0 items-center justify-center rounded-[calc(var(--design-unit)*6)] border border-[rgba(185,63,68,0.28)] bg-[rgba(34,13,16,0.42)] text-design-16 text-[#F4A9AE]">
|
||||
{t('gameDesktop.topup.tier.failed')}
|
||||
</div>
|
||||
|
||||
@@ -3,7 +3,9 @@ import { useRef } from 'react'
|
||||
import { useTranslation } from 'react-i18next'
|
||||
import { createDeposit } from '@/api'
|
||||
import { DataLoadingIndicator } from '@/components/ui/data-loading-indicator'
|
||||
import { DEFAULT_WITHDRAW_CONFIG } from '@/constants'
|
||||
import { useDepositTierList } from '@/hooks/use-deposit-tier-list'
|
||||
import { useDepositWithdrawConfig } from '@/hooks/use-deposit-withdraw-config'
|
||||
import { notify } from '@/lib/notify'
|
||||
import { cn } from '@/lib/utils'
|
||||
import type { DepositTierItem } from '@/type'
|
||||
@@ -17,21 +19,39 @@ function formatNumber(value: number) {
|
||||
|
||||
function MobileTopup() {
|
||||
const { t } = useTranslation()
|
||||
const depositWithdrawConfigQuery = useDepositWithdrawConfig()
|
||||
const tierListQuery = useDepositTierList()
|
||||
const depositWithdrawConfig =
|
||||
depositWithdrawConfigQuery.data ?? DEFAULT_WITHDRAW_CONFIG
|
||||
const isLoading =
|
||||
tierListQuery.isLoading || depositWithdrawConfigQuery.isLoading
|
||||
const isError = tierListQuery.isError || depositWithdrawConfigQuery.isError
|
||||
const tiers = tierListQuery.data ?? []
|
||||
const createDepositInFlightRef = useRef(false)
|
||||
const pendingPayWindowRef = useRef<Window | null>(null)
|
||||
const createDepositMutation = useMutation({
|
||||
mutationFn: ({
|
||||
channelCode,
|
||||
depositBank,
|
||||
depositBankAccount,
|
||||
depositFromAddress,
|
||||
paymentType,
|
||||
tierId,
|
||||
}: {
|
||||
channelCode: string
|
||||
depositBank?: string
|
||||
depositBankAccount?: string
|
||||
depositFromAddress?: string
|
||||
paymentType: string
|
||||
tierId: string
|
||||
}) =>
|
||||
createDeposit({
|
||||
channel_code: channelCode,
|
||||
deposit_bank: depositBank,
|
||||
deposit_bank_account: depositBankAccount,
|
||||
deposit_from_address: depositFromAddress,
|
||||
idempotency_key: String(Date.now()),
|
||||
payment_type: paymentType,
|
||||
tier_id: tierId,
|
||||
}),
|
||||
})
|
||||
@@ -41,13 +61,34 @@ function MobileTopup() {
|
||||
return
|
||||
}
|
||||
|
||||
const channelCode = tier.payChannelCode ?? tier.channels[0]?.code ?? ''
|
||||
const channelCode =
|
||||
tier.payChannelCode ??
|
||||
tier.channels[0]?.code ??
|
||||
(tier.currency
|
||||
? depositWithdrawConfig.deposit.defaultChannelByCurrency[tier.currency]
|
||||
: undefined) ??
|
||||
depositWithdrawConfig.defaultDepositChannelCode
|
||||
const selectedPaymentMethod =
|
||||
depositWithdrawConfig.deposit.methods.find(
|
||||
(method) => method.currencyCode === tier.currency,
|
||||
) ?? depositWithdrawConfig.deposit.methods[0]
|
||||
const paymentType = selectedPaymentMethod?.code ?? ''
|
||||
const depositBank = selectedPaymentMethod?.requiresBank
|
||||
? depositWithdrawConfig.deposit.banks.find(
|
||||
(bank) => bank.currencyCode === tier.currency,
|
||||
)?.code
|
||||
: undefined
|
||||
|
||||
if (!channelCode) {
|
||||
notify.error(t('commonUi.toast.configError'))
|
||||
return
|
||||
}
|
||||
|
||||
if (!paymentType) {
|
||||
notify.error(t('commonUi.toast.configError'))
|
||||
return
|
||||
}
|
||||
|
||||
createDepositInFlightRef.current = true
|
||||
const payWindow = window.open('', '_blank')
|
||||
|
||||
@@ -63,6 +104,8 @@ function MobileTopup() {
|
||||
try {
|
||||
const result = await createDepositMutation.mutateAsync({
|
||||
channelCode,
|
||||
depositBank,
|
||||
paymentType,
|
||||
tierId: tier.id,
|
||||
})
|
||||
const payUrl = result.pay_url.trim()
|
||||
@@ -105,12 +148,12 @@ function MobileTopup() {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{tierListQuery.isLoading ? (
|
||||
{isLoading ? (
|
||||
<DataLoadingIndicator
|
||||
label={t('gameDesktop.topup.tier.loading')}
|
||||
className="h-full min-h-0 rounded-[calc(var(--design-unit)*6)] border border-[rgba(103,227,239,0.18)] bg-[rgba(6,24,35,0.52)]"
|
||||
/>
|
||||
) : tierListQuery.isError ? (
|
||||
) : isError ? (
|
||||
<div className="flex h-full min-h-0 items-center justify-center rounded-[calc(var(--design-unit)*6)] border border-[rgba(185,63,68,0.28)] bg-[rgba(34,13,16,0.42)] px-design-12 text-center text-design-14 text-[#F4A9AE]">
|
||||
{t('gameDesktop.topup.tier.failed')}
|
||||
</div>
|
||||
|
||||
@@ -85,6 +85,7 @@ export function useWithdrawVm() {
|
||||
withdraw: {
|
||||
...baseConfig.withdraw,
|
||||
banks: baseConfig.withdraw.banks,
|
||||
payChannels: baseConfig.withdraw.payChannels,
|
||||
},
|
||||
}
|
||||
}, [withdrawConfigQuery.data])
|
||||
@@ -109,17 +110,25 @@ export function useWithdrawVm() {
|
||||
const selectedRate = selectedCurrency.withdrawCoinsPerFiatValue || 1
|
||||
const sortedPayChannels = useMemo(
|
||||
() =>
|
||||
[...config.payChannels]
|
||||
[
|
||||
...(config.withdraw.payChannels.length > 0
|
||||
? config.withdraw.payChannels
|
||||
: config.payChannels),
|
||||
]
|
||||
.filter((channel) => channel.status === 1)
|
||||
.sort((left, right) => left.sort - right.sort),
|
||||
[config.payChannels],
|
||||
[config.payChannels, config.withdraw.payChannels],
|
||||
)
|
||||
const sortedBanks = useMemo(
|
||||
() =>
|
||||
[...config.withdraw.banks]
|
||||
.filter((bank) => bank.status === 1)
|
||||
.filter(
|
||||
(bank) =>
|
||||
bank.status === 1 &&
|
||||
(!bank.currencyCode || bank.currencyCode === selectedCurrency.code),
|
||||
)
|
||||
.sort((left, right) => left.sort - right.sort),
|
||||
[config.withdraw.banks],
|
||||
[config.withdraw.banks, selectedCurrency.code],
|
||||
)
|
||||
const availableBalance = Number(currentUser?.coin ?? 0)
|
||||
const maxWithdrawAmount = Math.max(0, Math.floor(availableBalance))
|
||||
|
||||
@@ -28,12 +28,14 @@ export interface FinancePayChannelDto {
|
||||
code: string
|
||||
name: string
|
||||
sort: number
|
||||
status: number
|
||||
tier_ids: number[]
|
||||
status?: number
|
||||
tier_ids?: number[]
|
||||
}
|
||||
|
||||
export interface FinanceWithdrawBankDto {
|
||||
code?: string
|
||||
currency_code?: string
|
||||
gateway_code?: string
|
||||
id?: string
|
||||
label?: string
|
||||
name?: string
|
||||
@@ -41,18 +43,63 @@ export interface FinanceWithdrawBankDto {
|
||||
status?: number
|
||||
}
|
||||
|
||||
export interface FinanceDepositMethodDto {
|
||||
code: string
|
||||
currency_code: string
|
||||
gateway_code: string
|
||||
name: string
|
||||
requires_bank: boolean
|
||||
requires_bank_account: boolean
|
||||
requires_depositor_name: boolean
|
||||
requires_from_address: boolean
|
||||
}
|
||||
|
||||
export interface FinanceDepositFieldsDto {
|
||||
deposit_bank_account_param?: string
|
||||
deposit_bank_param?: string
|
||||
deposit_from_address_param?: string
|
||||
deposit_name_server_side?: boolean
|
||||
payment_type_param?: string
|
||||
require_channel_code?: boolean
|
||||
require_idempotency_key?: boolean
|
||||
require_payment_type?: boolean
|
||||
}
|
||||
|
||||
export interface FinanceDepositConfigDto {
|
||||
banks?: FinanceWithdrawBankDto[]
|
||||
default_channel_by_currency?: Record<string, string>
|
||||
fields?: FinanceDepositFieldsDto
|
||||
methods?: FinanceDepositMethodDto[]
|
||||
}
|
||||
|
||||
export interface FinanceWithdrawFieldsDto {
|
||||
receive_type_bank_only?: boolean
|
||||
require_bank_branch?: boolean
|
||||
require_bank_code?: boolean
|
||||
require_channel_code?: boolean
|
||||
require_receive_account?: boolean
|
||||
require_receiver_email?: boolean
|
||||
require_receiver_mobile?: boolean
|
||||
require_receiver_name?: boolean
|
||||
}
|
||||
|
||||
export interface FinanceWithdrawConfigDto {
|
||||
banks: FinanceWithdrawBankDto[]
|
||||
fee_note: string
|
||||
fields?: FinanceWithdrawFieldsDto
|
||||
min_bank: string
|
||||
min_ewallet: string
|
||||
pay_channels?: FinancePayChannelDto[]
|
||||
processing_note: string
|
||||
rate_hint: string
|
||||
rate_mode: 'fixed' | 'live' | (string & {})
|
||||
review_threshold_coin?: string
|
||||
}
|
||||
|
||||
export interface DepositWithdrawConfigDto {
|
||||
currencies: FinanceCurrencyConfigDto[]
|
||||
default_deposit_channel_code?: string
|
||||
deposit?: FinanceDepositConfigDto
|
||||
pay_channels: FinancePayChannelDto[]
|
||||
platform_coin_label: string
|
||||
rates: FinanceRateConfigDto[]
|
||||
@@ -104,23 +151,70 @@ export interface FinancePayChannel {
|
||||
|
||||
export interface FinanceWithdrawBank {
|
||||
code: string
|
||||
currencyCode: string | null
|
||||
gatewayCode: string | null
|
||||
label: string
|
||||
sort: number
|
||||
status: number
|
||||
}
|
||||
|
||||
export interface FinanceDepositMethod {
|
||||
code: string
|
||||
currencyCode: string
|
||||
gatewayCode: string
|
||||
name: string
|
||||
requiresBank: boolean
|
||||
requiresBankAccount: boolean
|
||||
requiresDepositorName: boolean
|
||||
requiresFromAddress: boolean
|
||||
}
|
||||
|
||||
export interface FinanceDepositFields {
|
||||
depositBankAccountParam: string
|
||||
depositBankParam: string
|
||||
depositFromAddressParam: string
|
||||
depositNameServerSide: boolean
|
||||
paymentTypeParam: string
|
||||
requireChannelCode: boolean
|
||||
requireIdempotencyKey: boolean
|
||||
requirePaymentType: boolean
|
||||
}
|
||||
|
||||
export interface FinanceDepositConfig {
|
||||
banks: FinanceWithdrawBank[]
|
||||
defaultChannelByCurrency: Record<string, string>
|
||||
fields: FinanceDepositFields
|
||||
methods: FinanceDepositMethod[]
|
||||
}
|
||||
|
||||
export interface FinanceWithdrawFields {
|
||||
receiveTypeBankOnly: boolean
|
||||
requireBankBranch: boolean
|
||||
requireBankCode: boolean
|
||||
requireChannelCode: boolean
|
||||
requireReceiveAccount: boolean
|
||||
requireReceiverEmail: boolean
|
||||
requireReceiverMobile: boolean
|
||||
requireReceiverName: boolean
|
||||
}
|
||||
|
||||
export interface FinanceWithdrawConfig {
|
||||
banks: FinanceWithdrawBank[]
|
||||
feeNote: string
|
||||
fields: FinanceWithdrawFields
|
||||
minBank: string
|
||||
minEwallet: string
|
||||
payChannels: FinancePayChannel[]
|
||||
processingNote: string
|
||||
rateHint: string
|
||||
rateMode: FinanceWithdrawConfigDto['rate_mode']
|
||||
reviewThresholdCoin: string
|
||||
}
|
||||
|
||||
export interface DepositWithdrawConfig {
|
||||
currencies: FinanceCurrencyConfig[]
|
||||
defaultDepositChannelCode: string
|
||||
deposit: FinanceDepositConfig
|
||||
payChannels: FinancePayChannel[]
|
||||
platformCoinLabel: string
|
||||
rates: FinanceRateConfig[]
|
||||
@@ -147,7 +241,11 @@ export interface DepositTierItem {
|
||||
|
||||
export interface DepositCreateRequestDto {
|
||||
channel_code: string
|
||||
deposit_bank?: string
|
||||
deposit_bank_account?: string
|
||||
deposit_from_address?: string
|
||||
idempotency_key: string
|
||||
payment_type: string
|
||||
tier_id: string
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user