この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

支払ゲートウェイアダプタの例の作成

支払ゲートウェイアダプタの最後のセクションでは、アダプタによる要求および応答の作成方法を定義する必要があります。これらのクラスの実装は、ゲートウェイおよびプラットフォームの要件によって大きく異なる場合があります。確認できるように、いくつか一般的な例を用意しました。

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}