支払ゲートウェイアダプタの例の作成
支払ゲートウェイアダプタの最後のセクションでは、アダプタによる要求および応答の作成方法を定義する必要があります。これらのクラスの実装は、ゲートウェイおよびプラットフォームの要件によって大きく異なる場合があります。確認できるように、いくつか一般的な例を用意しました。
例
- buildCaptureRequest
-
1private String buildCaptureRequest(commercepayments.CaptureRequest captureRequest) { 2 Boolean IS_MULTICURRENCY_ORG = UserInfo.isMultiCurrencyOrganization(); 3 QueryUtils qBuilderForAuth = new QueryUtils(PaymentAuthorization.SObjectType); 4 qBuilderForAuth.getSelectClause().addField('GatewayRefNumber', false); 5 qBuilderForAuth.setWhereClause(' WHERE Id =' + '\'' + captureRequest.paymentAuthorizationId + '\''); 6 PaymentAuthorization authObject = (PaymentAuthorization)Database.query(qBuilderForAuth.buildSOQL())[0]; 7 8 JSONGenerator jsonGeneratorInstance = JSON.createGenerator(true); 9 jsonGeneratorInstance.writeStartObject(); 10 jsonGeneratorInstance.writeStringField('merchantAccount', '{!$Credential.Username}'); 11 jsonGeneratorInstance.writeStringField('originalReference', authObject.GatewayRefNumber); 12 13 jsonGeneratorInstance.writeFieldName('modificationAmount'); 14 jsonGeneratorInstance.writeStartObject(); 15 jsonGeneratorInstance.writeStringField('value', String.ValueOf((captureRequest.amount * 100.0).intValue())); 16 jsonGeneratorInstance.writeEndObject(); 17 18 jsonGeneratorInstance.writeEndObject(); 19 return jsonGeneratorInstance.getAsString(); 20}
例
- createCaptureResponse
-
1private commercepayments.GatewayResponse createCaptureResponse(HttpResponse response) { 2 Map<String, Object> mapOfResponseValues = (Map 3 <String, Object>) JSON.deserializeUntyped(response.getBody()); 4 Integer statusCode = response.getStatusCode(); 5 String responceValue = (String)mapOfResponseValues.get('response'); 6 if(statusCode == 200) { 7 system.debug('Response - success - Capture received'); 8 commercepayments.CaptureResponse captureResponse = new commercepayments.CaptureResponse(); 9 captureResponse.setAsync(true); // Very important to treat this as an asynchronous transaction 10 captureResponse.setGatewayReferenceNumber((String)mapOfResponseValues.get('pspReference')); 11 captureResponse.setSalesforceResultCodeInfo(new commercepayments.SalesforceResultCodeInfo(commercepayments.SalesforceResultCode.Success)); 12 return captureResponse; 13 } else { 14 system.debug('Response - error - Capture not received by Gateway'); 15 String message = (String)mapOfResponseValues.get('message'); 16 commercepayments.GatewayErrorResponse error = new commercepayments.GatewayErrorResponse(String.valueOf(statusCode), message); 17 return error; 18 } 19}