feat(payment): enhance Mellat gateway with sandbox support and WSDL configuration

This commit is contained in:
hamed
2026-07-02 20:15:41 +03:30
parent 1b171a82f4
commit 27b2d66afa
5 changed files with 330 additions and 149 deletions
+14
View File
@@ -37,6 +37,8 @@ const schema = z.object({
// payment gateways
payment_test_mode: z.string(),
mellat_enabled: z.string(),
mellat_sandbox: z.string(),
mellat_wsdl_url: z.string(),
mellat_terminal_id: z.string(),
mellat_username: z.string(),
mellat_password: z.string(),
@@ -65,6 +67,8 @@ const toForm = (s: Partial<Settings>): FormValues => ({
appointment_fee_rials: s.appointment_fee_rials ?? '150000',
payment_test_mode: s.payment_test_mode ?? '0',
mellat_enabled: s.mellat_enabled ?? '1',
mellat_sandbox: s.mellat_sandbox ?? '0',
mellat_wsdl_url: s.mellat_wsdl_url ?? '',
mellat_terminal_id: s.mellat_terminal_id ?? '',
mellat_username: s.mellat_username ?? '',
mellat_password: s.mellat_password ?? '',
@@ -202,6 +206,7 @@ export default function SettingsPage() {
const paymentTestMode = watch('payment_test_mode') === '1';
const mellatEnabled = watch('mellat_enabled') === '1';
const mellatSandbox = watch('mellat_sandbox') === '1';
const sepEnabled = watch('sep_enabled') === '1';
const apptCommissionEnabled = watch('appointment_commission_enabled') === '1';
const upgradeCommissionEnabled = watch('upgrade_commission_enabled') === '1';
@@ -423,6 +428,15 @@ export default function SettingsPage() {
</div>
</Field>
</div>
<div className="settings-grid" style={{ gridTemplateColumns: '1fr auto', alignItems: 'end', marginTop: 12 }}>
<Field label="آدرس WSDL (اختیاری — خالی = عملیاتی)">
<input {...register('mellat_wsdl_url')} className="input" dir="ltr" placeholder="https://bpm.shaparak.ir/pgwchannel/services/pgw?wsdl" />
</Field>
<div className="gw-state" style={{ color: mellatSandbox ? 'var(--warning)' : 'var(--text-3)' }}>
{mellatSandbox ? 'Sandbox (آزمایشگاه)' : 'واقعی'}
<Toggle checked={mellatSandbox} onChange={() => toggle('mellat_sandbox', mellatSandbox)} label="حالت Sandbox ملت" />
</div>
</div>
</div>
{/* سپ */}