80 lines
2.6 KiB
PHP
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");
|
|
}
|
|
}
|
|
} |