Files
manjapro_v6/paymentlink/services/PaymentMethodMapper.php
T
2026-08-20 18:39:37 +07:00

80 lines
2.6 KiB
PHP

<?php
class PaymentMethodMapper
{
/**
* =====================================================
* MASTER MAPPING (WINPAY)
* =====================================================
*/
private static $map = [
// ================= QRIS =================
'qris' => [
'type' => 'qris',
'channel' => 'QRIS',
'endpoint' => '/v1.0/qr/qr-mpm-generate'
],
// ================= VA =================
'va_bri' => ['type' => 'va', 'channel' => 'BRI'],
'va_bni' => ['type' => 'va', 'channel' => 'BNI'],
'va_bca' => ['type' => 'va', 'channel' => 'BCA'],
'va_cimb' => ['type' => 'va', 'channel' => 'CIMB'],
'va_mandiri' => ['type' => 'va', 'channel' => 'MANDIRI'],
'va_permata' => ['type' => 'va', 'channel' => 'PERMATA'],
'va_bsi' => ['type' => 'va', 'channel' => 'BSI'],
'va_muamalat' => ['type' => 'va', 'channel' => 'MUAMALAT'],
'va_indomaret' => ['type' => 'va', 'channel' => 'INDOMARET'],
'va_alfamart' => ['type' => 'va', 'channel' => 'ALFAMART'],
// ================= EWALLET =================
'ewallet_dana' => ['type' => 'ewallet', 'channel' => 'DANA'],
'ewallet_ovo' => ['type' => 'ewallet', 'channel' => 'OVO'],
'ewallet_sc' => ['type' => 'ewallet', 'channel' => 'SC'],
'ewallet_spay' => ['type' => 'ewallet', 'channel' => 'SPAY'],
];
/**
* =====================================================
* PUBLIC FUNCTION
* =====================================================
*/
public static function map($method)
{
if (!isset(self::$map[$method])) {
throw new Exception("Metode tidak dikenali: " . $method);
}
$data = self::$map[$method];
return [
'type' => $data['type'],
'channel' => $data['channel'],
'endpoint' => $data['endpoint'] ?? self::getDefaultEndpoint($data['type'])
];
}
/**
* =====================================================
* DEFAULT ENDPOINT PER TYPE
* =====================================================
*/
private static function getDefaultEndpoint($type)
{
switch ($type) {
case 'va':
return '/v1.0/transfer-va/create-va';
case 'qris':
return '/v1.0/qr/qr-mpm-generate';
case 'ewallet':
return '/v1.0/debit/payment-host-to-host';
default:
throw new Exception("Type tidak dikenali");
}
}
}