Ejemplo n.º 1
0
        public IPaymentResponse IciciResponseHandler(IGatewayCharge gatewayResponse)
        {
            NameValueCollection nvcResponseQueryString = HttpUtility.ParseQueryString(gatewayResponse.QueryString);

            try
            {
                var secureHash      = nvcResponseQueryString["VPC_SECUREHASH"];
                var txnResponseCode = nvcResponseQueryString["VPC_TXNRESPONSECODE"];
                var orderInfo       = nvcResponseQueryString["VPC_ORDERINFO"];
                var merchTxnRef     = nvcResponseQueryString["VPC_MERCHTXNREF"];
                var transactionNo   = nvcResponseQueryString["VPC_TRANSACTIONNO"];
                var amount          = nvcResponseQueryString["vpc_Amount"];

                txnResponseCode = txnResponseCode != null && txnResponseCode.Length > 0 ? txnResponseCode : "Unknown";
                var paymentConfirmationNumber = transactionNo != null && transactionNo.Length > 0 ? transactionNo : "Unknown";
                amount = amount != null && amount.Length > 0 ? amount : "0.00";

                if (txnResponseCode.Equals("0"))
                {
                    return(GetPaymentResponse(true, PaymentGatewayError.None));
                }
                else
                {
                    return(GetPaymentResponse(false, GetPaymentGatewayErrorCode(txnResponseCode)));
                }
            }
            catch (Exception ex)
            {
                _logger.Log(LogCategory.Error, new Exception("Failed to process transaction", ex));
                return(GetPaymentResponse(false, GetPaymentGatewayErrorCode(ex.Message)));
            }
        }
Ejemplo n.º 2
0
        public IPaymentResponse AmazonPayResponseHandler(IGatewayCharge gatewayCharge)
        {
            NameValueCollection nvcResponseQueryString = HttpUtility.ParseQueryString(gatewayCharge.QueryString);

            var sellerOrderId             = nvcResponseQueryString["sellerOrderId"];
            var orderTotalAmount          = nvcResponseQueryString["orderTotalAmount"];
            var reasonCode                = nvcResponseQueryString["reasonCode"];
            var paymentConfirmationNumber = nvcResponseQueryString["amazonOrderId"];
            var status      = nvcResponseQueryString["status"];
            var description = nvcResponseQueryString["description"];

            if (status.ToString().ToUpper() == "SUCCESS")
            {
                if (paymentConfirmationNumber.ToUpper().Equals("FAIL") || string.IsNullOrWhiteSpace(paymentConfirmationNumber))
                {
                    return(GetPaymentResponse(false, GetPaymentGatewayErrorCode(reasonCode)));
                }
                else
                {
                    return(GetPaymentResponse(true, PaymentGatewayError.None));
                }
            }
            else
            {
                return(GetPaymentResponse(false, GetPaymentGatewayErrorCode(reasonCode)));
            }
        }
Ejemplo n.º 3
0
        public IPaymentResponse AmexResponseHandler(IGatewayCharge gatewayCharge)
        {
            NameValueCollection nvcResponseQueryString = HttpUtility.ParseQueryString(gatewayCharge.QueryString);

            VpcRequest vpcRequest = new VpcRequest(_settings.GetConfigSetting <string>(SettingKeys.PaymentGateway.Amex.VpcPaymentCaptureServerUrl), _settings.GetConfigSetting <string>(SettingKeys.PaymentGateway.Amex.SecureSecret));

            vpcRequest.AddVpcResponseFields(nvcResponseQueryString);

            string vpcTxnResponseCode = vpcRequest.GetResultField("vpc_TxnResponseCode", "Unknown");
            string vpc3DSstatus       = vpcRequest.GetResultField("vpc_3DSstatus", "Unknown");
            string vpcTransactionNo   = vpcRequest.GetResultField("vpc_TransactionNo", "Unknown");
            string vpcMerchTxnRef     = vpcRequest.GetResultField("vpc_MerchTxnRef", "Unknown");
            string vpcAmount          = vpcRequest.GetResultField("vpc_Amount", "Unknown");

            if (vpcTxnResponseCode.Equals("0") && vpc3DSstatus.Equals("Y"))
            {
                try
                {
                    VpcRequest vpcCaptureRequest = new VpcRequest(_settings.GetConfigSetting <string>(SettingKeys.PaymentGateway.Amex.VpcPaymentCaptureServerUrl), _settings.GetConfigSetting <string>(SettingKeys.PaymentGateway.Amex.SecureSecret));

                    vpcCaptureRequest.AddVpcRequestFields("vpc_Version", _settings.GetConfigSetting <string>(SettingKeys.PaymentGateway.Amex.VpcVersion));
                    vpcCaptureRequest.AddVpcRequestFields("vpc_Command", _settings.GetConfigSetting <string>(SettingKeys.PaymentGateway.Amex.VpcCommand));
                    vpcCaptureRequest.AddVpcRequestFields("vpc_AccessCode", _settings.GetConfigSetting <string>(SettingKeys.PaymentGateway.Amex.AccessKey));
                    vpcCaptureRequest.AddVpcRequestFields("vpc_Merchant", _settings.GetConfigSetting <string>(SettingKeys.PaymentGateway.Amex.MerchantId));
                    vpcCaptureRequest.AddVpcRequestFields("vpc_TransNo", vpcTransactionNo);
                    vpcCaptureRequest.AddVpcRequestFields("vpc_MerchTxnRef", vpcMerchTxnRef);
                    vpcCaptureRequest.AddVpcRequestFields("vpc_Amount", vpcAmount);
                    vpcCaptureRequest.AddVpcRequestFields("vpc_User", _settings.GetConfigSetting <string>(SettingKeys.PaymentGateway.Amex.UserName));
                    vpcCaptureRequest.AddVpcRequestFields("vpc_Password", _settings.GetConfigSetting <string>(SettingKeys.PaymentGateway.Amex.Password));

                    vpcCaptureRequest.SendVpcCaptureRequest();

                    string vpcCaptureTxnResponseCode = vpcRequest.GetResultField("vpc_TxnResponseCode", "Unknown");
                    string paymentConfirmationNumber = vpcRequest.GetResultField("vpc_TransactionNo", "Unknown");
                    string vpcCaptureMerchTxnRef     = vpcRequest.GetResultField("vpc_MerchTxnRef", "Unknown");

                    if (vpcCaptureTxnResponseCode.Equals("0"))
                    {
                        return(GetPaymentResponse(true, PaymentGatewayError.None));
                    }
                    else
                    {
                        return(GetPaymentResponse(false, GetPaymentGatewayErrorCode(vpcCaptureTxnResponseCode)));
                    }
                }
                catch (Exception ex)
                {
                    _logger.Log(LogCategory.Error, new Exception("Failed to process transaction", ex));
                    return(GetPaymentResponse(false, GetPaymentGatewayErrorCode(ex.Message)));
                }
            }
            else
            {
                return(GetPaymentResponse(false, GetPaymentGatewayErrorCode(vpcTxnResponseCode)));
            }
        }
Ejemplo n.º 4
0
        public IPaymentResponse CcavenueResponseHandler(IGatewayCharge gatewayResponse)
        {
            //NameValueCollection nvcResponseQueryString = HttpUtility.ParseQueryString(gatewayResponse.QueryString);
            try
            {
                CCACrypto           ccaCrypto      = new CCACrypto();
                NameValueCollection nvcEncResponse = HttpUtility.ParseQueryString(gatewayResponse.QueryString);
                var    encResponseValue            = nvcEncResponse["encResp"];
                string encResponse = ccaCrypto.Decrypt(encResponseValue, _settings.GetConfigSetting <string>(SettingKeys.PaymentGateway.Ccavenue.WorkingKey));

                NameValueCollection nvcResponseQueryString = new NameValueCollection();
                string[]            segments = encResponse.Split('&');
                foreach (string seg in segments)
                {
                    string[] parts = seg.Split('=');
                    if (parts.Length > 0)
                    {
                        string Key   = parts[0].Trim();
                        string Value = parts[1].Trim();
                        nvcResponseQueryString.Add(Key, Value);
                    }
                }

                var orderId = nvcResponseQueryString["order_id"];
                var paymentConfirmationNumber = nvcResponseQueryString["tracking_id"];
                var orderStatus   = nvcResponseQueryString["order_status"];
                var statusMessage = nvcResponseQueryString["status_message"];
                var amount        = nvcResponseQueryString["amount"];
                var paymentMode   = nvcResponseQueryString["payment_mode"];

                bool payStatus = orderStatus.ToUpper().Equals("SUCCESS") && !paymentConfirmationNumber.ToUpper().Equals("FAIL") && !string.IsNullOrWhiteSpace(paymentConfirmationNumber);

                if (payStatus)
                {
                    _transactionStatusUpdater.UpdateTranscationStatus(Convert.ToInt64(orderId));
                }

                _transactionPaymentDetailRepository.Save(new TransactionPaymentDetail
                {
                    TransactionId    = Convert.ToInt64(orderId),
                    PaymentOptionId  = paymentMode == "Net Banking" ? PaymentOptions.NetBanking : PaymentOptions.CashCard,
                    PaymentGatewayId = PaymentGateway.CCAvenue,
                    RequestType      = "Charge Recieved",
                    Amount           = amount != null ? amount.ToString() : "",
                    PayConfNumber    = paymentConfirmationNumber,
                    PaymentDetail    = "{\"Response\":" + Newtonsoft.Json.JsonConvert.SerializeObject(nvcResponseQueryString.AllKeys.ToDictionary(k => k, k => nvcResponseQueryString[k])) + ",\"encRepsonse\":" + encResponseValue + "}",
                });
                return(GetPaymentResponse(payStatus, payStatus ? PaymentGatewayError.None : GetPaymentGatewayErrorCode(string.IsNullOrWhiteSpace(statusMessage) ? "Transaction declined" : statusMessage)));
            }
            catch (Exception ex)
            {
                _logger.Log(LogCategory.Error, new Exception("Failed to process transaction", ex));
                return(GetPaymentResponse(false, GetPaymentGatewayErrorCode(ex.Message)));
            }
        }
Ejemplo n.º 5
0
        public async Task <IPaymentResponse> NabTransactResponseHandler(IGatewayCharge gatewayResponse)
        {
            NameValueCollection nvcResponseQueryString = HttpUtility.ParseQueryString(gatewayResponse.QueryString);

            try
            {
                var resultText  = nvcResponseQueryString["restext"];
                var summaryCode = nvcResponseQueryString["summarycode"];
                var resultCode  = nvcResponseQueryString["rescode"];
                var paymentConfirmationNumber = nvcResponseQueryString["txnid"];
                var fingerPrint = nvcResponseQueryString["fingerprint"];
                var orderId     = nvcResponseQueryString["refid"];

                _transactionPaymentDetailRepository.Save(new TransactionPaymentDetail
                {
                    TransactionId    = Convert.ToInt64(orderId),
                    PaymentOptionId  = PaymentOptions.None,
                    PaymentGatewayId = PaymentGateway.NabTransact,
                    RequestType      = "Charge Recieved",
                    Amount           = "",
                    PayConfNumber    = paymentConfirmationNumber,
                    PaymentDetail    = "{\"Response\":" + Newtonsoft.Json.JsonConvert.SerializeObject(nvcResponseQueryString.AllKeys.ToDictionary(k => k, k => nvcResponseQueryString[k])) + "}",
                });

                if (summaryCode.Equals("1"))
                {
                    if (resultCode.Equals("00") || resultCode.Equals("08") || resultCode.Equals("11"))
                    {
                        await _mediator.Publish(new TransactionEvent
                        {
                            TransactionStatus = TransactionStatus.Success,
                            TransactionId     = Convert.ToInt64(orderId)
                        });

                        return(GetPaymentResponse(true, PaymentGatewayError.None, PaymentGateway.NabTransact));
                    }
                    else
                    {
                        return(GetPaymentResponse(false, GetPaymentGatewayErrorCode(resultCode), PaymentGateway.NabTransact));
                    }
                }
                else
                {
                    return(GetPaymentResponse(false, GetPaymentGatewayErrorCode(resultCode), PaymentGateway.NabTransact));
                }
            }
            catch (Exception ex)
            {
                _logger.Log(LogCategory.Error, new Exception("Failed to handle response", ex));
                return(GetPaymentResponse(false, GetPaymentGatewayErrorCode(ex.Message), PaymentGateway.NabTransact));
            }
        }
Ejemplo n.º 6
0
        public IPaymentResponse HdfcResponseHandler(IGatewayCharge gatewayResponse)
        {
            NameValueCollection nvcResponseQueryString = HttpUtility.ParseQueryString(gatewayResponse.QueryString);
            var paymentId = nvcResponseQueryString["MD"];
            var paymentAuthenticationResponse = nvcResponseQueryString["PaRes"];

            try
            {
                string response = gatewayResponse.Response;//HdfcChargerHelper.HttpWebRequestHandler(_settings.GetConfigSetting<string>(SettingKeys.PaymentGateway.Hdfc.PayerAuthenticationUrl), GetHdfcEnrolledRequest(paymentId, paymentAuthenticationResponse));
                string result   = HdfcChargerHelper.GetResultField(response, "result");
                string error    = HdfcChargerHelper.GetResultField(response, "error_text");
                var    amount   = HdfcChargerHelper.GetResultField(response, "amt");
                paymentId = HdfcChargerHelper.GetResultField(response, "paymentid");
                string paymentConfirmationNumber = HdfcChargerHelper.GetResultField(response, "tranid");
                var    transactionId             = HdfcChargerHelper.GetResultField(response, "trackid");
                bool   payStatus = result.ToUpper().Equals("CAPTURED") ? true : false;
                if (payStatus)
                {
                    if (transactionId != null)
                    {
                        _transactionStatusUpdater.UpdateTranscationStatus(Convert.ToInt64(transactionId));
                        _transactionPaymentDetailRepository.Save(new TransactionPaymentDetail
                        {
                            TransactionId    = Convert.ToInt64(transactionId),
                            PaymentOptionId  = PaymentOptions.CreditCard,
                            PaymentGatewayId = PaymentGateway.HDFC,
                            RequestType      = "Enrolled Recieved",
                            Amount           = amount.ToString(),
                            PayConfNumber    = paymentConfirmationNumber,
                            PaymentDetail    = "{\"QueryString\":" + JsonConvert.SerializeObject(nvcResponseQueryString.AllKeys.ToDictionary(k => k, k => nvcResponseQueryString[k])) + ",\"Response\":{\"Result\":\"" + result + "\",\"Error\":\"" + error + "\",\"Amount\":\"" + amount + "\",\"PaymentConfirmationNumber\":\"" + paymentConfirmationNumber + "\",\"PaymentId\":\"" + paymentId + "\",\"TrackId\":\"" + transactionId + "\"}}"
                        });
                    }
                }
                return(GetPaymentResponse(payStatus ? true : false, payStatus ? PaymentGatewayError.None : HdfcChargerHelper.GetPaymentGatewayErrorCode(string.IsNullOrWhiteSpace(error) ? "Transaction declined" : error)));
            }
            catch (Exception ex)
            {
                _logger.Log(LogCategory.Error, new Exception("Failed to process transaction", ex));
                return(GetPaymentResponse(false, HdfcChargerHelper.GetPaymentGatewayErrorCode(ex.Message)));
            }
        }
Ejemplo n.º 7
0
        public IPaymentResponse PaypalResponseHandler(IGatewayCharge gatewayCharge)
        {
            NameValueCollection nvcResponseQueryString = HttpUtility.ParseQueryString(gatewayCharge.QueryString);
            var token   = nvcResponseQueryString["TOKEN"];
            var payerId = nvcResponseQueryString["PAYERID"];

            try
            {
                if (token != null && payerId != null)
                {
                    NVPCodec encoder = new NVPCodec();
                    NVPCodec decoder = new NVPCodec();
                    encoder["METHOD"] = "DoExpressCheckoutPayment";
                    encoder["TOKEN"]  = token;
                    encoder["PAYMENTREQUEST_0_PAYMENTACTION"] = "Sale";
                    encoder["PAYERID"] = payerId;
                    encoder["PAYMENTREQUEST_0_AMT"]          = gatewayCharge.Amount.ToString();
                    encoder["PAYMENTREQUEST_0_CURRENCYCODE"] = "USD";

                    string nvpRequest  = encoder.ConvertToNvpString();
                    string nvpResponse = HttpNvpRequestHandler(nvpRequest);

                    decoder.ConvertToNameValueCollection(nvpResponse);

                    string acknowledgementStatus = decoder["ACK"].ToLower();
                    if (acknowledgementStatus != null && (acknowledgementStatus == "success" || acknowledgementStatus == "successwithwarning"))
                    {
                        string paypalEmail = GetExpressCheckoutDetails(token, payerId);
                        var    paymentConfirmationNumber = string.Empty;

                        if (decoder["PAYMENTINFO_0_TRANSACTIONID"] != null)
                        {
                            paymentConfirmationNumber = decoder["PAYMENTINFO_0_TRANSACTIONID"].ToLower();
                        }

                        if (!string.IsNullOrWhiteSpace(paymentConfirmationNumber))
                        {
                            if (!string.IsNullOrWhiteSpace(paypalEmail))
                            {
                                paymentConfirmationNumber = paypalEmail + "~" + paymentConfirmationNumber;
                            }
                        }
                        else
                        {
                            paymentConfirmationNumber = paypalEmail;
                        }

                        return(GetPaymentResponse(true, PaymentGatewayError.None));
                    }
                    else
                    {
                        return(GetPaymentResponse(false, GetPaymentGatewayErrorCode(decoder["L_ERRORCODE0"].ToString())));
                    }
                }
                else
                {
                    return(token != null?GetPaymentResponse(false, PaymentGatewayError.InvalidToken) : GetPaymentResponse(false, PaymentGatewayError.InvalidPayerId));
                }
            }
            catch (Exception ex)
            {
                _logger.Log(LogCategory.Error, new Exception("Failed to handle response", ex));
                return(GetPaymentResponse(false, GetPaymentGatewayErrorCode(ex.Message)));
            }
        }