Note: This release is in preview. Features described here don’t become generally available until the latest general availability date that Salesforce announces for this release. Before then, and where features are noted as beta, pilot, or developer preview, we can’t guarantee general availability within any particular time frame or at all. Make your purchase decisions only on the basis of generally available products and features.

YourGatewayAPI

YourGatewayAPI is a base class that connects the Salesforce Billing package to your payment gateway package. All user gateway API classes will be different based on your needs. However, we've provided a template that you can use to help create your own.
Available in:

YourGatewayAPI references the following public classes.
1global class YourGatewayAPI 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 YourGatewayName  class
12    private static YourGatewayName YourGatewayNameInstance;
13    
14     // ============================================================================
15    // VARIABLES
16    // ============================================================================
17
18    // Attribute to implement singleton pattern for AuthorizeDotNet class
19    private static final String GENERATE_TOKEN = 'generateToken';
20    private static final String AUTHORIZE_TRANSACTION = 'authorizeTransaction';
21    private static final String CHARGE_TRANSACTION = 'chargeTransaction';
22    private static final String VOID_TRANSACTION = 'voidTransaction';
23    private static final String REFUND_TRANSACTION = 'refundTransaction'; 
24    private static final String CAPTURE_TRANSACTION = 'captureTransaction';
25    private static final String VOID_REFUND_TRANSACTION = 'voidRefundTransaction';
26    private static final String VOID_TOKEN_TRANSACTION = 'voidTokenTransaction';
27    private static final String GET_PAYMENT_STATUS = 'getPaymentStatus';
28    private static final String GET_REFUND_STATUS = 'getRefundStatus';
29    private static final String NON_REFERRED_REFUND = 'nonReferredRefund';
30    private static final String PROCESS_PAYMENTS = 'processPayments';
31    
32    // ============================================================================
33    // Methods
34    // ============================================================================
35    /**
36    * @name service
37    * @description service method to create an only instance of TransactionService class
38    *              if serviceInstance is NULL then only create a new instance otherwise 
39    *              return the existing one
40    * @param   NA 
41    * @return TransactionService instance
42    * @exception
43    * @author 
44    * @created 
45    * @remark 
46    * @change
47    */   
48    @TestVisible
49    private static YourGatewayName service()
50    {
51        if (NULL == YourGatewayNameInstance)
52        {
53            YourGatewayNameInstance = YourGatewayName.getInstance();
54        }
55        return YourGatewayNameInstance;
56    }
57
58    /**
59    * @name processPayments
60    * @description Method to generate Token
61    * @param 
62    * @return
63    * @exception
64    * @author 
65    * @created 2016-11-03
66    * @remark 
67    * @change
68    */   
69    global static Map<String, blng.TransactionResult> processPayments(Map<String, blng.TransactionParameter> mapOfTransactionParameterById, blng.PaymentGatewayParameter paymentGatewayParameter)
70    {
71        if(paymentGatewayParameter.getTransactionType() == GENERATE_TOKEN)
72        {
73            return generateToken(mapOfTransactionParameterById);
74        }
75        else if(paymentGatewayParameter.getTransactionType() == AUTHORIZE_TRANSACTION)
76        {
77            return authorizeTransaction(mapOfTransactionParameterById);
78        }
79        else if(paymentGatewayParameter.getTransactionType() == CHARGE_TRANSACTION)
80        {
81            return chargeTransaction(mapOfTransactionParameterById);
82        }
83        else if(paymentGatewayParameter.getTransactionType() == VOID_TRANSACTION)
84        {
85            return voidTransaction(mapOfTransactionParameterById);
86        }
87        else if(paymentGatewayParameter.getTransactionType() == REFUND_TRANSACTION)
88        {
89            return refundTransaction(mapOfTransactionParameterById);
90        }
91        else if(paymentGatewayParameter.getTransactionType() == CAPTURE_TRANSACTION)
92        {
93            return captureTransaction(mapOfTransactionParameterById);
94        }
95        else if(paymentGatewayParameter.getTransactionType() == VOID_REFUND_TRANSACTION)
96        {
97            return voidRefundTransaction(mapOfTransactionParameterById);
98        }
99        else if(paymentGatewayParameter.getTransactionType() == VOID_TOKEN_TRANSACTION)
100        {
101            return voidTokenTransaction(mapOfTransactionParameterById);
102        }
103        else if(paymentGatewayParameter.getTransactionType() == GET_PAYMENT_STATUS)
104        {
105            return getPaymentStatus(mapOfTransactionParameterById);
106        }
107        else if(paymentGatewayParameter.getTransactionType() == GET_REFUND_STATUS)
108        {
109            return getRefundStatus(mapOfTransactionParameterById);
110        }
111        else if(paymentGatewayParameter.getTransactionType() == NON_REFERRED_REFUND)
112        {
113            return nonReferredRefund(mapOfTransactionParameterById);
114        }
115
116        return NULL;
117    }
118    
119    /**
120    * @name generateToken
121    * @description Method to generate Token for a Payment Method
122    * @param Map[Key => String [unique Id],Value => TransactionParameter]
123    * @return Map[Key => String [unique Id],Value => TransactionResult]
124    * @exception 
125    * @author 
126    * @created 
127    * @remark 
128    * @change
129    */    
130    global static Map<String, blng.TransactionResult> generateToken(Map<String, blng.TransactionParameter> mapOfTransactionParameterById) 
131    {
132        return service().generateToken(mapOfTransactionParameterById);
133    }
134
135    /**
136    * @name voidTokenTransaction
137    * @description Method to void Token for a Payment method Token
138    * @param Map[Key => String [unique Id],Value => TransactionParameter]
139    * @return Map[Key => String [unique Id],Value => TransactionResult]
140    * @exception
141    * @author 
142    * @created
143    * @remark
144    * @change
145    */    
146    global static Map<String, blng.TransactionResult> voidTokenTransaction(Map<String, blng.TransactionParameter> mapOfTransactionParameterById) 
147    {
148        return service().voidTokenTransaction(mapOfTransactionParameterById);
149    }
150
151
152    /**
153    * @name authorizeTransaction
154    * @description Method to Authorize a payment for a Invoice
155    * @param Map[Key => String [unique Id],Value => TransactionParameter]
156    * @return Map[Key => String [unique Id],Value => TransactionResult]
157    * @exception
158    * @author
159    * @created
160    * @remark 
161    * @change
162    */  
163    global static Map<String, blng.TransactionResult> authorizeTransaction(Map<String, blng.TransactionParameter> mapOfTransactionParameterById) 
164    {
165        return service().authorizeTransaction(mapOfTransactionParameterById);
166    }
167
168    /**
169    * @name chargeTransaction
170    * @description Method to Charge a payment for a Invoice
171    * @param Map[Key => String [unique Id],Value => TransactionParameter]
172    * @return Map[Key => String [unique Id],Value => TransactionResult]
173    * @exception
174    * @author  
175    * @created 
176    * @remark 
177    * @change 
178    */      
179    global static Map<String, blng.TransactionResult> chargeTransaction(Map<String, blng.TransactionParameter> mapOfTransactionParameterById) 
180    {
181        return service().chargeTransaction(mapOfTransactionParameterById);
182    }
183
184    /**
185    * @name captureTransaction
186    * @description Method to capture a payment for a Authorize Transaction
187    * @param Map[Key => String [unique Id],Value => TransactionParameter]
188    * @return Map[Key => String [unique Id],Value => TransactionResult]
189    * @exception 
190    * @author
191    * @created
192    * @remark 
193    * @change
194    */      
195    global static Map<String, blng.TransactionResult> captureTransaction(Map<String, blng.TransactionParameter> mapOfTransactionParameterById) 
196    {
197        return service().captureTransaction(mapOfTransactionParameterById);
198    }
199
200
201    /**
202    * @name voidTransaction
203    * @description Method to Void a payment for a Invoice
204    * @param Map[Key => String [unique Id],Value => TransactionParameter]
205    * @return Map[Key => String [unique Id],Value => TransactionResult]
206    * @exception
207    * @author
208    * @created
209    * @remark 
210    * @change 
211    */      
212    global static Map<String, blng.TransactionResult> voidTransaction(Map<String, blng.TransactionParameter> mapOfTransactionParameterById) 
213    {
214        return service().voidTransaction(mapOfTransactionParameterById);
215    }
216
217    /**
218    * @name refundTransaction
219    * @description Method to Refund a payment for a payment Transaction
220    * @param Map[Key => String [unique Id],Value => TransactionParameter]
221    * @return Map[Key => String [unique Id],Value => TransactionResult]
222    * @exception
223    * @author
224    * @created
225    * @remark
226    * @change
227    */ 
228    global static Map<String, blng.TransactionResult> refundTransaction(Map<String, blng.TransactionParameter> mapOfTransactionParameterById) 
229    {
230        return service().refundTransaction(mapOfTransactionParameterById);
231    }
232
233    /**
234    * @name nonReferencedRefund
235    * @description Method to non Referenced Refund a payment for a Invoice
236    * @param Map[Key => String [unique Id],Value => TransactionParameter]
237    * @return Map[Key => String [unique Id],Value => TransactionParameter]
238    * @exception
239    * @author
240    * @created
241    * @remark
242    * @change
243    */ 
244    global static Map<String, blng.TransactionResult> nonReferredRefund(Map<String, blng.TransactionParameter> mapOfTransactionParameterById) 
245    {
246        return service().nonReferencedRefund(mapOfTransactionParameterById);
247    }
248
249    /**
250    * @name voidRefundTransaction
251    * @description Method to Void refund for a Refund Transaction
252    * @param Map[Key => String [unique Id],Value => TransactionParameter]
253    * @return Map[Key => String [unique Id],Value => TransactionResult]
254    * @exception
255    * @author
256    * @created
257    * @remark 
258    * @change
259    */      
260    global static Map<String, blng.TransactionResult> voidRefundTransaction(Map<String, blng.TransactionParameter> mapOfTransactionParameterById) 
261    {
262        return service().voidRefundTransaction(mapOfTransactionParameterById);
263    }
264    
265    /**
266    * @name getPaymentStatus
267    * @description Method to get payment status for a Payment Transaction
268    * @param Map[Key => String [unique Id],Value => TransactionParameter]
269    * @return Map[Key => String [unique Id],Value => TransactionResult]
270    * @exception
271    * @author
272    * @created
273    * @remark 
274    * @change
275    */      
276    global static Map<String, blng.TransactionResult> getPaymentStatus(Map<String, blng.TransactionParameter> mapOfTransactionParameterById) 
277    {
278        return service().getPaymentStatus(mapOfTransactionParameterById);
279    }
280    
281    /**
282    * @name getRefundStatus
283    * @description Method to get refund status for a Refund Transaction
284    * @param Map[Key => String [unique Id],Value => TransactionParameter]
285    * @return Map[Key => String [unique Id],Value => TransactionResult]
286    * @exception
287    * @author
288    * @created
289    * @remark 
290    * @change
291    */      
292    global static Map<String, blng.TransactionResult> getRefundStatus(Map<String, blng.TransactionParameter> mapOfTransactionParameterById) 
293    {
294         return service().getPaymentStatus(mapOfTransactionParameterById);
295    }
296     /**
297     * @name populateGatewayStatus
298     * @description Method that populates the GatewayStatus enum on the TransactionResult,
299     * given return codes that are already set in the TransactionResults
300     * @param transactionResult
301     */
302    global static void populateGatewayStatus(blng.TransactionResult transactionResult)
303    {
304        service().populateGatewayStatus(transactionResult);
305    }
306}