import React, { useEffect, useState, useRef } from 'react'; import { Button, Form, Row, Col, Typography, Spin, } from '@douyinfe/semi-ui'; const { Text } = Typography; import { API, removeTrailingSlash, showError, showSuccess, verifyJSON, } from '../../../helpers'; import { useTranslation } from 'react-i18next'; export default function SettingsPaymentGateway(props) { const { t } = useTranslation(); const [loading, setLoading] = useState(false); const [inputs, setInputs] = useState({ PayAddress: '', EpayId: '', EpayKey: '', Price: 7.3, MinTopUp: 1, TopupGroupRatio: '', CustomCallbackAddress: '', PayMethods: '', }); const [originInputs, setOriginInputs] = useState({}); const formApiRef = useRef(null); useEffect(() => { if (props.options && formApiRef.current) { const currentInputs = { PayAddress: props.options.PayAddress || '', EpayId: props.options.EpayId || '', EpayKey: props.options.EpayKey || '', Price: props.options.Price !== undefined ? parseFloat(props.options.Price) : 7.3, MinTopUp: props.options.MinTopUp !== undefined ? parseFloat(props.options.MinTopUp) : 1, TopupGroupRatio: props.options.TopupGroupRatio || '', CustomCallbackAddress: props.options.CustomCallbackAddress || '', PayMethods: props.options.PayMethods || '', }; setInputs(currentInputs); setOriginInputs({ ...currentInputs }); formApiRef.current.setValues(currentInputs); } }, [props.options]); const handleFormChange = (values) => { setInputs(values); }; const submitPayAddress = async () => { if (props.options.ServerAddress === '') { showError(t('请先填写服务器地址')); return; } if (originInputs['TopupGroupRatio'] !== inputs.TopupGroupRatio) { if (!verifyJSON(inputs.TopupGroupRatio)) { showError(t('充值分组倍率不是合法的 JSON 字符串')); return; } } if (originInputs['PayMethods'] !== inputs.PayMethods) { if (!verifyJSON(inputs.PayMethods)) { showError(t('充值方式设置不是合法的 JSON 字符串')); return; } } setLoading(true); try { const options = [ { key: 'PayAddress', value: removeTrailingSlash(inputs.PayAddress) }, ]; if (inputs.EpayId !== '') { options.push({ key: 'EpayId', value: inputs.EpayId }); } if (inputs.EpayKey !== undefined && inputs.EpayKey !== '') { options.push({ key: 'EpayKey', value: inputs.EpayKey }); } if (inputs.Price !== '') { options.push({ key: 'Price', value: inputs.Price.toString() }); } if (inputs.MinTopUp !== '') { options.push({ key: 'MinTopUp', value: inputs.MinTopUp.toString() }); } if (inputs.CustomCallbackAddress !== '') { options.push({ key: 'CustomCallbackAddress', value: inputs.CustomCallbackAddress, }); } if (originInputs['TopupGroupRatio'] !== inputs.TopupGroupRatio) { options.push({ key: 'TopupGroupRatio', value: inputs.TopupGroupRatio }); } if (originInputs['PayMethods'] !== inputs.PayMethods) { options.push({ key: 'PayMethods', value: inputs.PayMethods }); } // 发送请求 const requestQueue = options.map(opt => API.put('/api/option/', { key: opt.key, value: opt.value, }) ); const results = await Promise.all(requestQueue); // 检查所有请求是否成功 const errorResults = results.filter(res => !res.data.success); if (errorResults.length > 0) { errorResults.forEach(res => { showError(res.data.message); }); } else { showSuccess(t('更新成功')); // 更新本地存储的原始值 setOriginInputs({ ...inputs }); props.refresh && props.refresh(); } } catch (error) { showError(t('更新失败')); } setLoading(false); }; return (
(formApiRef.current = api)} > {t('(当前仅支持易支付接口,默认使用上方服务器地址作为回调地址!)')}
); }