Пример #1
0
        public Transaction_Result Refund(Refund_Details details)
        {
            try
            {
                var gateway = newClient();

                Result <Transaction> Tresult;
                if (details.Amount.HasValue)
                {
                    Tresult = gateway.Transaction.Refund(details.TransactionIndex, details.Amount.Value);
                }
                else
                {
                    Tresult = gateway.Transaction.Refund(details.TransactionIndex);
                }

                Transaction_Result result = formatResult(null, Tresult);
                return(result);
            }
            catch (Exception ex)
            {
                return(new Transaction_Result
                {
                    isApproved = false,
                    hasServerError = true,
                    ErrorText = ex.Message
                });
            }
        }
Пример #2
0
        public Transaction_Result Refund(Refund_Details details)
        {
            try
            {
                var xmlString = getRefundXML(userID, details.TransactionIndex, "NA", details.Amount.Value.ToString("F2"));
                var xml       = PostXMLTransaction("https://www.vcs.co.za/vvonline/ccxmlauth.asp", xmlString);

                XmlNode authResponse = xml.GetElementsByTagName("RefundResponse").Item(0);
                var     responseNode = authResponse.SelectNodes("Response").Item(0);
                var     refNode      = authResponse.SelectNodes("Reference").Item(0);
                var     addResNode   = authResponse.SelectNodes("AdditionalResponseData").Item(0);

                var approved = responseNode.InnerText.Contains("APPROVED") && !responseNode.InnerText.Contains("NOT");

                var result = new Transaction_Result
                {
                    isApproved       = approved,
                    ApprovalCode     = approved ? responseNode.InnerText : "",
                    TransactionIndex = refNode.InnerText,
                    ProcessorCode    = addResNode.InnerText,
                    FullRequest      = xmlString,
                    FullResponse     = xml.OuterXml,
                    hasServerError   = false,
                    ErrorCode        = !approved ? responseNode.InnerText : "",
                    ErrorText        = addResNode.InnerText
                };

                return(result);
            }
            catch (Exception ex)
            {
                return(new Transaction_Result
                {
                    isApproved = false,
                    hasServerError = true,
                    ErrorText = ex.Message
                });
            }
        }
Пример #3
0
        public Transaction_Result Refund(Refund_Details details)
        {
            try
            {
                var gateway = newClient();

                object[] arrResults = gateway.fProcess(
                    "01",                                                               //GatewayID
                    MerchantUID,                                                        //MerchantUID
                    PaymentApplicationUID,                                              //ApplicationUID
                    "4",                                                                //4 Credit Request                                              //Action
                    details.TransactionIndex,                                           //TransactionIndex
                    "",                                                                 //Terminal
                    "",                                                                 //Mode
                    "",                                                                 //MerchantReference
                    details.Amount.HasValue ? details.Amount.Value.ToString("F2") : "", //Amount
                    "",                                                                 //Currency
                    "",                                                                 //CashBackAmount
                    "",                                                                 //CardType
                    "",                                                                 //AccountType
                    "",                                                                 //CardNumber
                    "",                                                                 //CardHolder
                    "",                                                                 //CCVNumber
                    "",                                                                 //ExpiryMonth
                    "",                                                                 //ExpiryYear
                    "",                                                                 //Budget - 0 Straight, 1 budget
                    "",                                                                 //BudgetPeriod
                    "",                                                                 //AuthorizationNumber
                    "",                                                                 //PIN
                    "",                                                                 //DebugMode
                    "",                                                                 //eCommerceIndicator
                    "",                                                                 //verifiedByVisaXID
                    "",                                                                 //verifiedByVisaCAFF
                    "",                                                                 //secureCodeUCAF
                    "",                                                                 //UCI
                    "",                                                                 //IP Address
                    "",                                                                 //Shipping Country Code,
                    ""                                                                  //Purchase Items ID
                    );


                var results = formatResult(arrResults);

                string cardnumber  = details.CardNumber;
                string last4digits = "";
                if (!String.IsNullOrEmpty(cardnumber))
                {
                    Regex rgx = new Regex(@"[^\d]");
                    cardnumber  = rgx.Replace(cardnumber, String.Empty); //removes dashes spaces, etc
                    last4digits = cardnumber.Substring(details.CardNumber.Length - 4);
                }


                var stringwriter = new System.IO.StringWriter();
                var serializer   = new XmlSerializer(details.GetType());
                serializer.Serialize(stringwriter, details);
                var fullrequest = stringwriter.ToString();

                if (!String.IsNullOrEmpty(cardnumber))
                {
                    fullrequest = fullrequest.Replace(cardnumber, last4digits);
                }

                if (!String.IsNullOrEmpty(details.CVV))
                {
                    fullrequest = fullrequest.Replace(details.CVV, "***");
                }


                results.FullRequest = fullrequest;

                return(results);
            }
            catch (Exception ex)
            {
                return(new Transaction_Result
                {
                    isApproved = false,
                    hasServerError = true,
                    ErrorText = ex.Message
                });
            }
        }
Пример #4
0
        public Transaction_Result Refund(Refund_Details details)
        {
            try
            {
                var gateway = newClient();

                DoTransactionResponseMessage gateWayResult = gateway.doTransaction(
                    "ONE_ZERO",
                    SafeKey,
                    transactionType.CREDIT,
                    authenticationType.NA,
                    new additionalInfo {
                    merchantReference = "REFUND-" + details.TransactionIndex, payUReference = details.TransactionIndex
                },
                    null,
                    new basket {
                    amountInCents = (details.Amount * 100).ToString(), currencyCode = details.CurrencyCode
                },
                    null,
                    new creditCard[]
                {
                    new creditCard
                    {
                        amountInCents = (details.Amount * 100).ToString(),
                    }
                },
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null
                    );

                var results = gateWayResult;


                if (results.successful)
                {
                    return(new Transaction_Result
                    {
                        isApproved = true,
                        ApprovalCode = results.resultCode,
                        ResultCode = results.resultCode,
                        ResultText = results.resultMessage,
                        TransactionIndex = results.payUReference,
                        hasServerError = false,
                        FullRequest = getXmlString(details),
                        FullResponse = getXmlString(results)
                    });
                }
                else
                {
                    return(new Transaction_Result
                    {
                        isApproved = false,
                        hasServerError = false,
                        ErrorCode = results.resultCode,
                        ErrorText = results.resultMessage,
                        FullResponse = getXmlString(results),
                        FullRequest = getXmlString(details)
                    });
                }
            }
            catch (Exception ex)
            {
                return(new Transaction_Result
                {
                    isApproved = false,
                    hasServerError = true,
                    ErrorText = ex.Message
                });
            }
        }
Пример #5
0
        public Transaction_Result Refund(Refund_Details details)
        {
            try
            {
                var     xmlString = getRefundXML(PayGateID, Password, details.TransactionIndex, details.Amount.HasValue ? (details.Amount * 100).ToString() : "");
                var     xml       = GatewayUtils.PostXMLTransaction(url, xmlString);
                XmlNode protocol  = xml.GetElementsByTagName("protocol").Item(0);
                XmlNode errorNode = protocol.SelectNodes("errorrx").Item(0);

                var reqXmlDoc = new XmlDocument();
                reqXmlDoc.LoadXml(xmlString);

                var reqstringwriter = new System.IO.StringWriter();
                reqXmlDoc.Save(reqstringwriter);

                var respstringwriter = new System.IO.StringWriter();
                xml.Save(respstringwriter);

                if (errorNode == null)
                {
                    XmlNode successNode       = protocol.SelectNodes("refundrx").Item(0);
                    string  transactionID     = successNode.Attributes.GetNamedItem("tid").Value;   //The unique reference number assign by PayGate to the original transaction.
                    string  customerReference = successNode.Attributes.GetNamedItem("cref").Value;  //This is your reference number for use by your internal systems. Must be different per transaction
                    string  status            = successNode.Attributes.GetNamedItem("stat").Value;  //Transaction status.
                    string  statusDesc        = successNode.Attributes.GetNamedItem("sdesc").Value; //Transaction status description.
                    string  resultCode        = successNode.Attributes.GetNamedItem("res").Value;   //Result Code
                    string  resultDesc        = successNode.Attributes.GetNamedItem("rdesc").Value; //Result Code description.
                    return(new Transaction_Result
                    {
                        TransactionIndex = transactionID,
                        isApproved = status != "0" && status != "2",
                        ApprovalCode = statusDesc,
                        ResultCode = resultCode,
                        ResultText = resultDesc,
                        FullRequest = reqstringwriter.ToString(),
                        FullResponse = respstringwriter.ToString()
                    });
                }
                else
                {
                    string errorCode = errorNode.Attributes.GetNamedItem("ecode").Value;
                    string errorDesc = errorNode.Attributes.GetNamedItem("edesc").Value;

                    return(new Transaction_Result
                    {
                        isApproved = false,
                        hasServerError = false,
                        ErrorCode = errorCode,
                        ErrorText = errorDesc,
                    });
                }
            }
            catch (Exception ex)
            {
                return(new Transaction_Result
                {
                    isApproved = false,
                    hasServerError = true,
                    ErrorText = ex.Message
                });
            }
        }
 public Transaction_Result Refund(Refund_Details details)
 {
     throw new NotImplementedException();
 }
Пример #7
0
        public Transaction_Result Refund(Refund_Details details)
        {
            string qs = getRefundQS(CompanyID, Outlet, details.TransactionIndex, details.Amount.Value.ToString("F2"), Username, Password, details.CardNumber, details.ExpYear.ToString(), details.ExpMonth.ToString(), details.CVV);

            return(PostManagerTransaction("https://manager.setcom.co.za/captures2s.cfm", qs));
        }