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}