diff --git a/in-person-payments-example/Controllers/ApiController.cs b/in-person-payments-example/Controllers/ApiController.cs index b780cd6..f24b535 100644 --- a/in-person-payments-example/Controllers/ApiController.cs +++ b/in-person-payments-example/Controllers/ApiController.cs @@ -85,10 +85,10 @@ public async Task> CreatePayment([FromBody] { case ResultType.Success: table.PaymentStatus = PaymentStatus.Paid; - table.PaymentStatusDetails.PoiTransactionId = paymentResponse.POIData.POITransactionID.TransactionID; - table.PaymentStatusDetails.PoiTransactionTimeStamp = paymentResponse.POIData.POITransactionID.TimeStamp; - table.PaymentStatusDetails.SaleTransactionId = paymentResponse.SaleData.SaleTransactionID.TransactionID; - table.PaymentStatusDetails.SaleTransactionTimeStamp = paymentResponse.SaleData.SaleTransactionID.TimeStamp; + table.PaymentStatusDetails.PoiTransactionId = paymentResponse.POIData?.POITransactionID?.TransactionID; + table.PaymentStatusDetails.PoiTransactionTimeStamp = paymentResponse.POIData?.POITransactionID?.TimeStamp; + table.PaymentStatusDetails.SaleTransactionId = paymentResponse.SaleData?.SaleTransactionID?.TransactionID; + table.PaymentStatusDetails.SaleTransactionTimeStamp = paymentResponse.SaleData?.SaleTransactionID?.TimeStamp; return Ok(new CreatePaymentResponse() { @@ -97,10 +97,10 @@ public async Task> CreatePayment([FromBody] case ResultType.Failure: table.PaymentStatus = PaymentStatus.NotPaid; table.PaymentStatusDetails.RefusalReason = "Payment terminal responded with: " + paymentResponse.Response.ErrorCondition; - table.PaymentStatusDetails.PoiTransactionId = paymentResponse.POIData.POITransactionID.TransactionID; - table.PaymentStatusDetails.PoiTransactionTimeStamp = paymentResponse.POIData.POITransactionID.TimeStamp; - table.PaymentStatusDetails.SaleTransactionId = paymentResponse.SaleData.SaleTransactionID.TransactionID; - table.PaymentStatusDetails.SaleTransactionTimeStamp = paymentResponse.SaleData.SaleTransactionID.TimeStamp; + table.PaymentStatusDetails.PoiTransactionId = paymentResponse.POIData?.POITransactionID?.TransactionID; + table.PaymentStatusDetails.PoiTransactionTimeStamp = paymentResponse.POIData?.POITransactionID?.TimeStamp; + table.PaymentStatusDetails.SaleTransactionId = paymentResponse.SaleData?.SaleTransactionID?.TransactionID; + table.PaymentStatusDetails.SaleTransactionTimeStamp = paymentResponse.SaleData?.SaleTransactionID?.TimeStamp; return Ok(new CreatePaymentResponse() { diff --git a/in-person-payments-example/Options/AdyenOptions.cs b/in-person-payments-example/Options/AdyenOptions.cs index faa790d..824af25 100644 --- a/in-person-payments-example/Options/AdyenOptions.cs +++ b/in-person-payments-example/Options/AdyenOptions.cs @@ -24,7 +24,12 @@ public class AdyenOptions /// /// Your unique ID for the POS system (cash register) to send this request from. /// - public string ADYEN_POS_SALE_ID { get; set; } + public string ADYEN_POS_SALE_ID { get; set; } + /// + /// Default: null, unless you want to override this to point to a different endpoint based on your region. + /// See https://docs.adyen.com/point-of-sale/design-your-integration/terminal-api/#cloud. + /// + public string ADYEN_TERMINAL_API_CLOUD_ENDPOINT { get; set; } } } \ No newline at end of file diff --git a/in-person-payments-example/Startup.cs b/in-person-payments-example/Startup.cs index c31f11d..ba0655c 100644 --- a/in-person-payments-example/Startup.cs +++ b/in-person-payments-example/Startup.cs @@ -35,6 +35,7 @@ public void ConfigureServices(IServiceCollection services) options.ADYEN_API_KEY = Configuration[nameof(AdyenOptions.ADYEN_API_KEY)]; options.ADYEN_HMAC_KEY = Configuration[nameof(AdyenOptions.ADYEN_HMAC_KEY)]; options.ADYEN_POS_POI_ID = Configuration[nameof(AdyenOptions.ADYEN_POS_POI_ID)]; + options.ADYEN_TERMINAL_API_CLOUD_ENDPOINT = Configuration[nameof(AdyenOptions.ADYEN_TERMINAL_API_CLOUD_ENDPOINT)]; options.ADYEN_POS_SALE_ID = "SALE_ID_POS_42"; } ); @@ -57,7 +58,8 @@ public void ConfigureServices(IServiceCollection services) XApiKey = options.Value.ADYEN_API_KEY, // Test environment. Environment = Adyen.Model.Environment.Test, - Timeout = 180 + Timeout = 180, + CloudApiEndPoint = options.Value.ADYEN_TERMINAL_API_CLOUD_ENDPOINT }, provider.GetRequiredService(), httpClientName diff --git a/in-person-payments-loyalty-example/Startup.cs b/in-person-payments-loyalty-example/Startup.cs index 3766342..4c7033e 100644 --- a/in-person-payments-loyalty-example/Startup.cs +++ b/in-person-payments-loyalty-example/Startup.cs @@ -58,7 +58,7 @@ public void ConfigureServices(IServiceCollection services) XApiKey = options.Value.ADYEN_API_KEY, // Test environment. Environment = Adyen.Model.Environment.Test, - Timeout = 180, + Timeout = 180 }, provider.GetRequiredService(), httpClientName