Newer Version Available
Creating a PaymentGateways Interface
The
PaymentGateways interface uses the
processPayments method, which evaluates the payment
transaction’s type to perform a payment action.
The PaymentGateways interface calls the processPayments method, which evaluates the TransactionParameter object.
1global interface PaymentGateways
2{
3 Map<String, TransactionResult> processPayments(Map<String, TransactionParameter> mapOfTransactionParameterById,PaymentGatewayParameter paymentGatewayParameter);
4}The processPayments method can perform different actions based on the TransactionType value of the TransactionParameter’s paymentGatewayParameter. When you configure your PaymentGateways interface, define all the TransactionType string variables that processPayments can accept. Then, add your logic for identifying the transaction type and calling the appropriate method. We’ve provided a sample here for a CyberSource payment gateway implementation.
Example
1global class CyberSourceAPI implements blng.PaymentGateWay, blng.PaymentGateWays, blng.PaymentGateWayStatus
2{
3 // ============================================================================
4 // CONSTANT
5 // ============================================================================
6
7 // ============================================================================
8 // STATIC VARIABLES
9 // ============================================================================
10
11 // Attribute to implement singleton pattern for CyberSource class
12 private static CyberSource CyberSourceInstance;
13
14 // ============================================================================
15 // VARIABLES
16 // ============================================================================
17 //Billing sends following strings for the transactions
18 private static final String GENERATE_TOKEN = 'generateToken';
19 private static final String AUTHORIZE_TRANSACTION = 'authorizeTransaction';
20 private static final String CHARGE_TRANSACTION = 'chargeTransaction';
21 private static final String VOID_TRANSACTION = 'voidTransaction';
22 private static final String REFUND_TRANSACTION = 'refundTransaction';
23 private static final String CAPTURE_TRANSACTION = 'captureTransaction';
24 private static final String VOID_REFUND_TRANSACTION = 'voidRefundTransaction';
25 private static final String VOID_TOKEN_TRANSACTION = 'voidTokenTransaction';
26 private static final String GET_PAYMENT_STATUS = 'getPaymentStatus';
27 private static final String GET_REFUND_STATUS = 'getRefundStatus';
28 private static final String NON_REFERRED_REFUND = 'nonReferredRefund';
29 private static final String PROCESS_PAYMENTS = 'processPayments';
30 // ============================================================================
31 // Methods
32 // ============================================================================
33
34 global static Map<String, blng.TransactionResult> processPayments(Map<String, blng.TransactionParameter> mapOfTransactionParameterById, blng.PaymentGatewayParameter paymentGatewayParameter)
35 {
36 if(paymentGatewayParameter.getTransactionType() == GENERATE_TOKEN)
37 {
38 return generateToken(mapOfTransactionParameterById);
39 }
40 else if(paymentGatewayParameter.getTransactionType() == AUTHORIZE_TRANSACTION)
41 {
42 return authorizeTransaction(mapOfTransactionParameterById);
43 }
44 else if(paymentGatewayParameter.getTransactionType() == CHARGE_TRANSACTION)
45 {
46 return chargeTransaction(mapOfTransactionParameterById);
47 }
48 else if(paymentGatewayParameter.getTransactionType() == VOID_TRANSACTION)
49 {
50 return voidTransaction(mapOfTransactionParameterById);
51 }
52 else if(paymentGatewayParameter.getTransactionType() == REFUND_TRANSACTION)
53 {
54 return refundTransaction(mapOfTransactionParameterById);
55 }
56 else if(paymentGatewayParameter.getTransactionType() == CAPTURE_TRANSACTION)
57 {
58 return captureTransaction(mapOfTransactionParameterById);
59 }
60 else if(paymentGatewayParameter.getTransactionType() == VOID_REFUND_TRANSACTION)
61 {
62 return voidRefundTransaction(mapOfTransactionParameterById);
63 }
64 else if(paymentGatewayParameter.getTransactionType() == VOID_TOKEN_TRANSACTION)
65 {
66 return voidTokenTransaction(mapOfTransactionParameterById);
67 }
68 else if(paymentGatewayParameter.getTransactionType() == GET_PAYMENT_STATUS)
69 {
70 return getPaymentStatus(mapOfTransactionParameterById);
71 }
72 else if(paymentGatewayParameter.getTransactionType() == GET_REFUND_STATUS)
73 {
74 return getRefundStatus(mapOfTransactionParameterById);
75 }
76 else if(paymentGatewayParameter.getTransactionType() == NON_REFERRED_REFUND)
77 {
78 return nonReferredRefund(mapOfTransactionParameterById);
79 }
80
81 return NULL;
82 }
83}