Beispiel #1
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);
        }
        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)}");
            }
        }
        public void RedirectGetAction([FromQuery(Name = "orderRef")] string orderRef, [FromQuery(Name = "payload")] string payload, [FromQuery(Name = "redirectResult")] string redirectResult)
        {
            var details = new PaymentCompletionDetails();

            if (payload != null)
            {
                details.Payload = payload;
            }
            if (redirectResult != null)
            {
                details.RedirectResult = redirectResult;
            }

            RedirectAction(orderRef, details);
        }
        public void RedirectPostAction([FromForm(Name = "MD")] string MD, [FromForm(Name = "PaRes")] string PaRes, [FromForm(Name = "payload")] string Payload, [FromQuery(Name = "orderRef")] string orderRef)
        {
            var details = new PaymentCompletionDetails();

            if (Payload != null)
            {
                details.Payload = Payload;
            }
            else
            {
                details.MD    = MD;
                details.PaRes = PaRes;
            }

            RedirectAction(orderRef, details);
        }