mirror of
https://github.com/pezkuwichain/pwap.git
synced 2026-04-22 21:47:56 +00:00
df58d26893
- Add merchant tier system (Lite/Super/Diamond) with tier badges - Add advanced order filters (token, fiat, payment method, amount range) - Add merchant dashboard with stats, ads management, tier upgrade - Add fraud prevention system with risk scoring and trade limits - Rename migrations to timestamp format for Supabase CLI compatibility - Add new migrations: phase2_phase3_tables, fraud_prevention, merchant_system
251 lines
9.3 KiB
SQL
251 lines
9.3 KiB
SQL
-- =====================================================
|
||
-- PAYMENT METHODS DATA - PRODUCTION
|
||
-- =====================================================
|
||
|
||
INSERT INTO public.payment_methods (currency, country, method_name, method_type, fields, validation_rules, min_trade_amount, max_trade_amount, processing_time_minutes, display_order) VALUES
|
||
|
||
-- ========== TURKEY (TRY) ==========
|
||
('TRY', 'TR', 'Ziraat Bankası', 'bank',
|
||
'{"iban": "", "account_holder": "", "branch_code": ""}',
|
||
'{"iban": {"pattern": "^TR[0-9]{24}$", "required": true}}',
|
||
100, 100000, 30, 1),
|
||
|
||
('TRY', 'TR', 'İş Bankası', 'bank',
|
||
'{"iban": "", "account_holder": ""}',
|
||
'{"iban": {"pattern": "^TR[0-9]{24}$", "required": true}}',
|
||
100, 100000, 30, 2),
|
||
|
||
('TRY', 'TR', 'Garanti BBVA', 'bank',
|
||
'{"iban": "", "account_holder": ""}',
|
||
'{"iban": {"pattern": "^TR[0-9]{24}$", "required": true}}',
|
||
100, 100000, 30, 3),
|
||
|
||
('TRY', 'TR', 'Yapı Kredi', 'bank',
|
||
'{"iban": "", "account_holder": ""}',
|
||
'{"iban": {"pattern": "^TR[0-9]{24}$", "required": true}}',
|
||
100, 100000, 30, 4),
|
||
|
||
('TRY', 'TR', 'Akbank', 'bank',
|
||
'{"iban": "", "account_holder": ""}',
|
||
'{"iban": {"pattern": "^TR[0-9]{24}$", "required": true}}',
|
||
100, 100000, 30, 5),
|
||
|
||
('TRY', 'TR', 'Halkbank', 'bank',
|
||
'{"iban": "", "account_holder": ""}',
|
||
'{"iban": {"pattern": "^TR[0-9]{24}$", "required": true}}',
|
||
100, 100000, 30, 6),
|
||
|
||
('TRY', 'TR', 'Vakıfbank', 'bank',
|
||
'{"iban": "", "account_holder": ""}',
|
||
'{"iban": {"pattern": "^TR[0-9]{24}$", "required": true}}',
|
||
100, 100000, 30, 7),
|
||
|
||
('TRY', 'TR', 'QNB Finansbank', 'bank',
|
||
'{"iban": "", "account_holder": ""}',
|
||
'{"iban": {"pattern": "^TR[0-9]{24}$", "required": true}}',
|
||
100, 100000, 30, 8),
|
||
|
||
('TRY', 'TR', 'TEB', 'bank',
|
||
'{"iban": "", "account_holder": ""}',
|
||
'{"iban": {"pattern": "^TR[0-9]{24}$", "required": true}}',
|
||
100, 100000, 30, 9),
|
||
|
||
('TRY', 'TR', 'Denizbank', 'bank',
|
||
'{"iban": "", "account_holder": ""}',
|
||
'{"iban": {"pattern": "^TR[0-9]{24}$", "required": true}}',
|
||
100, 100000, 30, 10),
|
||
|
||
('TRY', 'TR', 'Papara', 'mobile_payment',
|
||
'{"papara_number": "", "full_name": ""}',
|
||
'{"papara_number": {"pattern": "^[0-9]{10}$", "required": true}}',
|
||
50, 50000, 5, 11),
|
||
|
||
('TRY', 'TR', 'Paybol', 'mobile_payment',
|
||
'{"phone_number": "", "full_name": ""}',
|
||
'{"phone_number": {"pattern": "^\\+90[0-9]{10}$", "required": true}}',
|
||
50, 50000, 10, 12),
|
||
|
||
('TRY', 'TR', 'FAST (Hızlı Transfer)', 'bank',
|
||
'{"iban": "", "account_holder": ""}',
|
||
'{"iban": {"pattern": "^TR[0-9]{24}$", "required": true}}',
|
||
100, 100000, 15, 13),
|
||
|
||
-- ========== IRAQ (IQD) ==========
|
||
('IQD', 'IQ', 'Rasheed Bank', 'bank',
|
||
'{"account_number": "", "account_holder": "", "branch": ""}',
|
||
'{"account_number": {"minLength": 10, "required": true}}',
|
||
50000, 50000000, 60, 1),
|
||
|
||
('IQD', 'IQ', 'Rafidain Bank', 'bank',
|
||
'{"account_number": "", "account_holder": "", "branch": ""}',
|
||
'{"account_number": {"minLength": 10, "required": true}}',
|
||
50000, 50000000, 60, 2),
|
||
|
||
('IQD', 'IQ', 'Trade Bank of Iraq (TBI)', 'bank',
|
||
'{"account_number": "", "account_holder": "", "swift_code": ""}',
|
||
'{"account_number": {"minLength": 10, "required": true}}',
|
||
50000, 50000000, 60, 3),
|
||
|
||
('IQD', 'IQ', 'Kurdistan International Bank', 'bank',
|
||
'{"account_number": "", "account_holder": "", "branch": ""}',
|
||
'{"account_number": {"minLength": 10, "required": true}}',
|
||
50000, 50000000, 60, 4),
|
||
|
||
('IQD', 'IQ', 'Cihan Bank', 'bank',
|
||
'{"account_number": "", "account_holder": ""}',
|
||
'{"account_number": {"minLength": 10, "required": true}}',
|
||
50000, 50000000, 60, 5),
|
||
|
||
('IQD', 'IQ', 'Fast Pay', 'mobile_payment',
|
||
'{"fast_pay_id": "", "phone_number": "", "full_name": ""}',
|
||
'{"fast_pay_id": {"minLength": 6, "required": true}}',
|
||
10000, 20000000, 15, 6),
|
||
|
||
('IQD', 'IQ', 'Zain Cash', 'mobile_payment',
|
||
'{"zain_number": "", "full_name": ""}',
|
||
'{"zain_number": {"pattern": "^07[0-9]{9}$", "required": true}}',
|
||
10000, 20000000, 15, 7),
|
||
|
||
('IQD', 'IQ', 'Asia Hawala', 'mobile_payment',
|
||
'{"hawala_code": "", "phone_number": "", "full_name": ""}',
|
||
'{"hawala_code": {"minLength": 8, "required": true}}',
|
||
50000, 30000000, 30, 8),
|
||
|
||
('IQD', 'IQ', 'Korek Money Transfer', 'mobile_payment',
|
||
'{"korek_number": "", "full_name": ""}',
|
||
'{"korek_number": {"pattern": "^04[0-9]{8}$", "required": true}}',
|
||
10000, 20000000, 15, 9),
|
||
|
||
('IQD', 'IQ', 'Qi Card', 'mobile_payment',
|
||
'{"qi_card_number": "", "full_name": ""}',
|
||
'{"qi_card_number": {"minLength": 16, "maxLength": 19, "required": true}}',
|
||
10000, 20000000, 15, 10),
|
||
|
||
-- ========== IRAN (IRR) ==========
|
||
('IRR', 'IR', 'Bank Mellat', 'bank',
|
||
'{"card_number": "", "account_holder": "", "sheba": ""}',
|
||
'{"card_number": {"pattern": "^[0-9]{16}$", "required": true}}',
|
||
1000000, 500000000, 60, 1),
|
||
|
||
('IRR', 'IR', 'Bank Melli Iran', 'bank',
|
||
'{"card_number": "", "account_holder": "", "sheba": ""}',
|
||
'{"card_number": {"pattern": "^[0-9]{16}$", "required": true}}',
|
||
1000000, 500000000, 60, 2),
|
||
|
||
('IRR', 'IR', 'Bank Saderat', 'bank',
|
||
'{"card_number": "", "account_holder": "", "sheba": ""}',
|
||
'{"card_number": {"pattern": "^[0-9]{16}$", "required": true}}',
|
||
1000000, 500000000, 60, 3),
|
||
|
||
('IRR', 'IR', 'Bank Tejarat', 'bank',
|
||
'{"card_number": "", "account_holder": "", "sheba": ""}',
|
||
'{"card_number": {"pattern": "^[0-9]{16}$", "required": true}}',
|
||
1000000, 500000000, 60, 4),
|
||
|
||
('IRR', 'IR', 'Pasargad Bank', 'bank',
|
||
'{"card_number": "", "account_holder": "", "sheba": ""}',
|
||
'{"card_number": {"pattern": "^[0-9]{16}$", "required": true}}',
|
||
1000000, 500000000, 60, 5),
|
||
|
||
('IRR', 'IR', 'Bank Keshavarzi', 'bank',
|
||
'{"card_number": "", "account_holder": "", "sheba": ""}',
|
||
'{"card_number": {"pattern": "^[0-9]{16}$", "required": true}}',
|
||
1000000, 500000000, 60, 6),
|
||
|
||
('IRR', 'IR', 'Shetab Card Transfer', 'mobile_payment',
|
||
'{"card_number": "", "full_name": ""}',
|
||
'{"card_number": {"pattern": "^[0-9]{16}$", "required": true}}',
|
||
500000, 300000000, 10, 7),
|
||
|
||
-- ========== EUROPE (EUR) ==========
|
||
('EUR', 'EU', 'SEPA Bank Transfer', 'bank',
|
||
'{"iban": "", "bic_swift": "", "account_holder": "", "bank_name": ""}',
|
||
'{"iban": {"pattern": "^[A-Z]{2}[0-9]{2}[A-Z0-9]+$", "required": true}}',
|
||
50, 50000, 120, 1),
|
||
|
||
('EUR', 'EU', 'Wise (TransferWise)', 'mobile_payment',
|
||
'{"wise_email": "", "full_name": ""}',
|
||
'{"wise_email": {"pattern": "^[^@]+@[^@]+\\.[^@]+$", "required": true}}',
|
||
20, 20000, 30, 2),
|
||
|
||
('EUR', 'EU', 'Revolut', 'mobile_payment',
|
||
'{"revolut_tag": "", "full_name": ""}',
|
||
'{"revolut_tag": {"pattern": "^@[a-zA-Z0-9_]+$", "required": true}}',
|
||
20, 20000, 15, 3),
|
||
|
||
('EUR', 'EU', 'N26', 'bank',
|
||
'{"iban": "", "account_holder": ""}',
|
||
'{"iban": {"pattern": "^DE[0-9]{20}$", "required": true}}',
|
||
50, 50000, 60, 4),
|
||
|
||
('EUR', 'EU', 'PayPal', 'mobile_payment',
|
||
'{"paypal_email": ""}',
|
||
'{"paypal_email": {"pattern": "^[^@]+@[^@]+\\.[^@]+$", "required": true}}',
|
||
10, 10000, 30, 5),
|
||
|
||
('EUR', 'DE', 'Deutsche Bank', 'bank',
|
||
'{"iban": "", "account_holder": ""}',
|
||
'{"iban": {"pattern": "^DE[0-9]{20}$", "required": true}}',
|
||
50, 50000, 60, 6),
|
||
|
||
('EUR', 'FR', 'BNP Paribas', 'bank',
|
||
'{"iban": "", "account_holder": ""}',
|
||
'{"iban": {"pattern": "^FR[0-9]{25}$", "required": true}}',
|
||
50, 50000, 60, 7),
|
||
|
||
('EUR', 'NL', 'ING Bank', 'bank',
|
||
'{"iban": "", "account_holder": ""}',
|
||
'{"iban": {"pattern": "^NL[0-9]{16}$", "required": true}}',
|
||
50, 50000, 60, 8),
|
||
|
||
-- ========== UNITED STATES (USD) ==========
|
||
('USD', 'US', 'Bank of America', 'bank',
|
||
'{"account_number": "", "routing_number": "", "account_holder": "", "account_type": ""}',
|
||
'{"account_number": {"minLength": 8, "required": true}, "routing_number": {"pattern": "^[0-9]{9}$", "required": true}}',
|
||
100, 50000, 180, 1),
|
||
|
||
('USD', 'US', 'Chase Bank', 'bank',
|
||
'{"account_number": "", "routing_number": "", "account_holder": ""}',
|
||
'{"account_number": {"minLength": 8, "required": true}, "routing_number": {"pattern": "^[0-9]{9}$", "required": true}}',
|
||
100, 50000, 180, 2),
|
||
|
||
('USD', 'US', 'Wells Fargo', 'bank',
|
||
'{"account_number": "", "routing_number": "", "account_holder": ""}',
|
||
'{"account_number": {"minLength": 8, "required": true}, "routing_number": {"pattern": "^[0-9]{9}$", "required": true}}',
|
||
100, 50000, 180, 3),
|
||
|
||
('USD', 'US', 'Zelle', 'mobile_payment',
|
||
'{"zelle_email_or_phone": "", "full_name": ""}',
|
||
'{"zelle_email_or_phone": {"minLength": 5, "required": true}}',
|
||
50, 20000, 15, 4),
|
||
|
||
('USD', 'US', 'Venmo', 'mobile_payment',
|
||
'{"venmo_username": "", "full_name": ""}',
|
||
'{"venmo_username": {"pattern": "^@[a-zA-Z0-9_-]+$", "required": true}}',
|
||
10, 5000, 15, 5),
|
||
|
||
('USD', 'US', 'Cash App', 'mobile_payment',
|
||
'{"cashtag": "", "full_name": ""}',
|
||
'{"cashtag": {"pattern": "^\\$[a-zA-Z0-9]+$", "required": true}}',
|
||
10, 5000, 15, 6),
|
||
|
||
('USD', 'US', 'PayPal', 'mobile_payment',
|
||
'{"paypal_email": ""}',
|
||
'{"paypal_email": {"pattern": "^[^@]+@[^@]+\\.[^@]+$", "required": true}}',
|
||
10, 10000, 30, 7),
|
||
|
||
('USD', 'US', 'Wise (USD)', 'mobile_payment',
|
||
'{"wise_email": "", "full_name": ""}',
|
||
'{"wise_email": {"pattern": "^[^@]+@[^@]+\\.[^@]+$", "required": true}}',
|
||
20, 20000, 30, 8),
|
||
|
||
('USD', 'US', 'Western Union', 'cash',
|
||
'{"mtcn": "", "receiver_name": "", "receiver_country": ""}',
|
||
'{"mtcn": {"pattern": "^[0-9]{10}$", "required": true}}',
|
||
50, 10000, 60, 9);
|
||
|
||
-- Initialize escrow balance
|
||
INSERT INTO public.platform_escrow_balance (token, total_locked, hot_wallet_address, last_audit_at) VALUES
|
||
('HEZ', 0, '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY', NOW()),
|
||
('PEZ', 0, '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY', NOW());
|