コード例 #1
0
        /// <summary>
        ///  POST payments/details API call async
        /// </summary>
        /// <param name="paymentsDetailsRequest"></param>
        /// <returns>PaymentsResponse</returns>
        public async Task <PaymentsResponse> PaymentDetailsAsync(PaymentsDetailsRequest paymentsDetailsRequest)
        {
            var jsonRequest  = Util.JsonOperation.SerializeRequest(paymentsDetailsRequest);
            var jsonResponse = await _paymentDetails.RequestAsync(jsonRequest);

            return(JsonConvert.DeserializeObject <PaymentsResponse>(jsonResponse));
        }
コード例 #2
0
        /// <summary>
        ///  POST payments/details API call
        /// </summary>
        /// <param name="paymentsDetailsRequest"></param>
        /// <returns></returns>
        public PaymentsResponse PaymentDetails(PaymentsDetailsRequest paymentsDetailsRequest)
        {
            var jsonRequest  = Util.JsonOperation.SerializeRequest(paymentsDetailsRequest);
            var jsonResponse = _paymentDetails.Request(jsonRequest);

            return(JsonConvert.DeserializeObject <PaymentsResponse>(jsonResponse));
        }
コード例 #3
0
        /// <summary>
        ///  POST payments/details API call async
        /// </summary>
        /// <param name="paymentsDetailsRequest"></param>
        /// <returns>PaymentsResponse</returns>
        public async Task <PaymentResponse> PaymentDetailsAsync(PaymentsDetailsRequest paymentsDetailsRequest, RequestOptions requestOptions = null)
        {
            var jsonRequest  = Util.JsonOperation.SerializeRequest(paymentsDetailsRequest);
            var jsonResponse = await _paymentDetails.RequestAsync(jsonRequest, requestOptions);

            return(Util.JsonOperation.Deserialize <PaymentResponse>(jsonResponse));
        }
コード例 #4
0
        /// <summary>
        ///  POST payments/details API call
        /// </summary>
        /// <param name="paymentsDetailsRequest"></param>
        /// <returns>PaymentsResponse</returns>
        public PaymentResponse PaymentDetails(PaymentsDetailsRequest paymentsDetailsRequest, RequestOptions requestOptions = null)
        {
            var jsonRequest  = Util.JsonOperation.SerializeRequest(paymentsDetailsRequest);
            var jsonResponse = _paymentDetails.Request(jsonRequest, requestOptions);

            return(Util.JsonOperation.Deserialize <PaymentResponse>(jsonResponse));
        }
コード例 #5
0
        public ActionResult <string> SubmitAdditionalDetails([FromBody] PaymentsDetailsRequest req)
        {
            _logger.LogInformation($"Request for PaymentDetails API::\n{req}\n");

            try
            {
                var res = _checkout.PaymentDetails(req);

                if (res.Action != null)
                {
                    return(res.ToJson());
                }
                else
                {
                    var dict = new Dictionary <string, string>()
                    {
                        { "pspReference", res.PspReference },
                        { "resultCode", res.ResultCode.ToString() },
                        { "refusalReason", res.RefusalReason }
                    };
                    return(JsonConvert.SerializeObject(dict));
                }
            }
            catch (Adyen.HttpClient.HttpClientException e)
            {
                _logger.LogError($"Request for PaymentDetails failed::\n{e.ResponseBody}\n");
                throw e;
            }
        }
コード例 #6
0
        /// <summary>
        ///Checkout Details request
        /// </summary>
        /// <returns>Returns a sample PaymentsDetailsRequest object with test data</returns>
        protected PaymentsDetailsRequest CreateDetailsRequest()
        {
            var paymentData = "Ab02b4c0!BQABAgCJN1wRZuGJmq8dMncmypvknj9s7l5Tj...";
            var details     = new PaymentCompletionDetails()
            {
                MD    = "sdfsdfsdf...",
                PaReq = "sdfsdfsdf..."
            };
            var paymentsDetailsRequest = new PaymentsDetailsRequest(details: details, paymentData: paymentData);

            return(paymentsDetailsRequest);
        }
コード例 #7
0
        private void RedirectAction(string orderRef, PaymentCompletionDetails details)
        {
            _logger.LogInformation($"Redirect request received\nRef: {orderRef}");
            var paymentData = _cache.Get <string>(orderRef);

            var req = new PaymentsDetailsRequest(details: details, paymentData: paymentData);

            _logger.LogInformation($"Request for PaymentDetails API::\n{req}\n");
            try
            {
                var res = _checkout.PaymentDetails(req);
                _logger.LogInformation($"Response for PaymentDetails API::\n{res}\n");
                if (res.PspReference != "")
                {
                    string redirectURL;
                    // Conditionally handle different result codes for the shopper
                    switch (res.ResultCode)
                    {
                    case ResultCodeEnum.Authorised:
                        redirectURL = "/Home/Result/success";
                        break;

                    case ResultCodeEnum.Pending:
                    case ResultCodeEnum.Received:
                        redirectURL = "/Home/Result/pending";
                        break;

                    case ResultCodeEnum.Refused:
                        redirectURL = "/Home/Result/failed";
                        break;

                    default:
                    {
                        var reason = res.RefusalReason;
                        if (reason == "")
                        {
                            reason = res.ResultCode.ToString();
                        }
                        redirectURL = $"/Home/Result/error?reason={WebUtility.UrlEncode(reason)}";
                        break;
                    }
                    }
                    // now redirect
                    Response.Redirect(redirectURL);
                }
            }
            catch (Adyen.HttpClient.HttpClientException e)
            {
                _logger.LogError($"Request for PaymentDetails failed::\n{e.ResponseBody}\n");
                Response.Redirect($"/Home/Result/error?reason={WebUtility.UrlEncode(e.ResponseBody)}");
            }
        }