public override int TokenPayment(Payment payment) { if (!EnabledFor3d(payment.TransactionType)) { return(590); } int ret = 10; try { xmlSent = "version=" + Tools.URLString(providerVersion) + "&ipaddress=" + "&merchant_account=" + Tools.URLString(payment.ProviderUserID) + "&first_name=" + Tools.URLString(payment.FirstName) + "&last_name=" + Tools.URLString(payment.LastName) + "&address1=" + Tools.URLString(payment.Address1()) + "&city=" + Tools.URLString(payment.Address2()) + "&state=" + Tools.URLString(payment.State) // USA only, do NOT include in hash + "&zip_code=" + Tools.URLString(payment.PostalCode()) + "&country=" + Tools.URLString(payment.CountryCode()) + "&phone=" + Tools.URLString(payment.PhoneCell) + "&email=" + Tools.URLString(payment.EMail) + "&merchant_order=" + Tools.URLString(payment.MerchantReference) + "&merchant_product_desc=" + Tools.URLString(payment.PaymentDescription) + "&amount=" + Tools.URLString(payment.PaymentAmount.ToString()) + "¤cy=" + Tools.URLString(payment.CurrencyCode) + "&merchant_card_number=" + Tools.URLString(payment.CardToken); // Checksum (SHA1) ret = 20; string chk = Tools.URLString(payment.ProviderUserID) + Tools.URLString(payment.FirstName) + Tools.URLString(payment.LastName) + Tools.URLString(payment.Address1()) + Tools.URLString(payment.Address2()) + Tools.URLString(payment.PostalCode()) + Tools.URLString(payment.CountryCode()) + Tools.URLString(payment.PhoneCell) + Tools.URLString(payment.EMail) + Tools.URLString(payment.MerchantReference) + Tools.URLString(payment.PaymentDescription) + Tools.URLString(payment.PaymentAmount.ToString()) + Tools.URLString(payment.CurrencyCode) + Tools.URLString(payment.CardToken) + Tools.URLString(payment.ProviderKey); ret = 40; xmlSent = xmlSent + "&control=" + HashSHA1(chk); Tools.LogInfo("TransactionT24.TokenPayment/20", "Post=" + xmlSent + ", Key=" + payment.ProviderKey, 30); ret = PostHTML(payment.ProviderURL); } catch (Exception ex) { Tools.LogException("TransactionT24.TokenPayment/90", "Ret=" + ret.ToString() + ", XML Sent=" + xmlSent, ex); } return(ret); }
private string CardAddress(Payment payment) { string addr = ""; if (payment.Address1(0).Length > 0) { addr = addr + "<address1>" + payment.Address1(0) + "</address1>"; } if (payment.Address2(0).Length > 0) { addr = addr + "<address2>" + payment.Address2(0) + "</address2>"; } if (payment.Address3(0).Length > 0) { addr = addr + "<address3>" + payment.Address3(0) + "</address3>"; } if (payment.PostalCode(0).Length > 0) { addr = addr + "<postalCode>" + payment.PostalCode(0) + "</postalCode>"; } if (payment.State.Length > 0) { addr = addr + "<state>" + payment.State + "</state>"; } if (payment.CountryCode(0).Length > 0) { addr = addr + "<countryCode>" + payment.CountryCode(0) + "</countryCode>"; } if (addr.Length > 0) { addr = "<cardAddress><address>" + addr + "</address></cardAddress>"; } return(addr); }
public override int GetToken(Payment payment) { int ret = 10; try { xmlSent = "version=" + Tools.URLString(providerVersion) + "&ipaddress=" + "&merchant_account=" + Tools.URLString(payment.ProviderUserID) + "&first_name=" + Tools.URLString(payment.FirstName) + "&last_name=" + Tools.URLString(payment.LastName) + "&address1=" + Tools.URLString(payment.Address1()) + "&city=" + Tools.URLString(payment.Address2()) + "&state=" + Tools.URLString(payment.State) // USA only, do not include in hash + "&zip_code=" + Tools.URLString(payment.PostalCode()) + "&country=" + Tools.URLString(payment.CountryCode()) + "&phone=" + Tools.URLString(payment.PhoneCell) + "&email=" + Tools.URLString(payment.EMail) + "&merchant_order=" + Tools.URLString(payment.MerchantReference) + "&merchant_product_desc=" + Tools.URLString(payment.PaymentDescription) + "&amount=" + Tools.URLString(payment.PaymentAmount.ToString()) + "¤cy=" + Tools.URLString(payment.CurrencyCode) + "&credit_card_type=" + Tools.URLString(payment.CardType) + "&credit_card_number=" + Tools.URLString(payment.CardNumber) + "&expire_month=" + Tools.URLString(payment.CardExpiryMM) + "&expire_year=" + Tools.URLString(payment.CardExpiryYY) + "&cvv2=" + Tools.URLString(payment.CardCVV); // Checksum (SHA1) ret = 20; string chk = Tools.URLString(payment.ProviderUserID) + Tools.URLString(payment.FirstName) + Tools.URLString(payment.LastName) + Tools.URLString(payment.Address1()) + Tools.URLString(payment.Address2()) + Tools.URLString(payment.PostalCode()) + Tools.URLString(payment.CountryCode()) + Tools.URLString(payment.PhoneCell) + Tools.URLString(payment.EMail) + Tools.URLString(payment.MerchantReference) + Tools.URLString(payment.PaymentDescription) + Tools.URLString(payment.PaymentAmount.ToString()) + Tools.URLString(payment.CurrencyCode) + Tools.URLString(payment.CardType) + Tools.URLString(payment.CardNumber) + Tools.URLString(payment.CardExpiryMM) + Tools.URLString(payment.CardExpiryYY) + Tools.URLString(payment.CardCVV) + Tools.URLString(payment.ProviderKey); // Do NOT include "State" in the checksum (David Tin, 2017/08/29) // + Tools.URLString(payment.State) // ret = 30; // xmlSent = xmlSent + "&address2="; // if ( payment.Address(2).Length > 0 && payment.Address(2) != payment.Address(255) ) // { // xmlSent = xmlSent + Tools.URLString(payment.Address(2)); // chk = chk + payment.Address(2); // } ret = 40; xmlSent = xmlSent + "&control=" + HashSHA1(chk); Tools.LogInfo("TransactionT24.GetToken/10", "Post=" + xmlSent + ", Key=" + payment.ProviderKey, 10); ret = PostHTML(payment.ProviderURL); payToken = Tools.XMLNode(xmlResult, "merchant_card_number"); payRef = Tools.XMLNode(xmlResult, "transaction_id"); Tools.LogInfo("TransactionT24.GetToken/20", "ResultCode=" + ResultCode + ", payRef=" + payRef + ", payToken=" + payToken, 10); // Removed at Deon Smith's request (2017/08/25) // This code is correct, complete and tested. Merely un-comment it // // if ( ret == 0 ) // Do refund // { // Tools.LogInfo("TransactionT24.GetToken/30","(Refund) Transaction Id=" + payRef,177); // ret = 50; // xmlSent = "merchant_account=" + Tools.URLString(payment.ProviderUserID) // + "&order_id=" + Tools.URLString(payRef) // + "&amount=" + Tools.URLString(payment.PaymentAmount.ToString()) // + "¤cy=" + Tools.URLString(payment.CurrencyCode) // + "&version=" + Tools.URLString(providerVersion); // ret = 60; // chk = payment.ProviderUserID // + payRef // + payment.PaymentAmount.ToString() // + payment.CurrencyCode // + providerVersion // + payment.ProviderKey; // ret = 70; // xmlSent = xmlSent + "&control=" + HashSHA1(chk); // Tools.LogInfo("TransactionT24.GetToken/40","(Refund) POST="+xmlSent+", Key="+payment.ProviderKey,177); // ret = PostHTML(BureauURL + "/Refund"); // } } catch (Exception ex) { Tools.LogException("TransactionT24.GetToken/90", "Ret=" + ret.ToString() + ", XML Sent=" + xmlSent, ex); } return(ret); }
// Moved to Transaction.cs // private string customerId; // private string paymentMethodId; public override int GetToken(Payment payment) { int ret = 10; err = ""; payToken = ""; customerId = ""; paymentMethodId = ""; strResult = ""; resultCode = "991"; resultMsg = "Fail"; Tools.LogInfo("GetToken/10", "Merchant Ref=" + payment.MerchantReference, 10, this); try { // Testing // StripeConfiguration.ApiKey = "sk_test_51It78gGmZVKtO2iKBZF7DA5JisJzRqvibQdXSfBj9eQh4f5UDvgCShZIjznOWCxu8MtcJG5acVkDcd8K184gIegx001uXlHI5g"; // Testing ret = 20; StripeConfiguration.ApiKey = payment.ProviderPassword; // Secret key ret = 30; var tokenOptions = new TokenCreateOptions { Card = new TokenCardOptions { Number = payment.CardNumber, ExpMonth = payment.CardExpiryMonth, ExpYear = payment.CardExpiryYear, Cvc = payment.CardCVV } }; ret = 40; var tokenService = new TokenService(); var token = tokenService.Create(tokenOptions); payToken = token.Id; err = err + ", tokenId=" + Tools.NullToString(payToken); ret = 50; var paymentMethodOptions = new PaymentMethodCreateOptions { Type = "card", Card = new PaymentMethodCardOptions { Token = token.Id } }; ret = 60; var paymentMethodService = new PaymentMethodService(); var paymentMethod = paymentMethodService.Create(paymentMethodOptions); paymentMethodId = paymentMethod.Id; err = err + ", paymentMethodId=" + Tools.NullToString(paymentMethodId); ret = 70; string tmp = (payment.FirstName + " " + payment.LastName).Trim(); var customerOptions = new CustomerCreateOptions { Name = payment.CardName, // (payment.FirstName + " " + payment.LastName).Trim(), Email = payment.EMail, Phone = payment.PhoneCell, Description = payment.MerchantReference + (tmp.Length > 0 ? " (" + tmp + ")" : ""), PaymentMethod = paymentMethod.Id }; ret = 75; if (payment.Address1(0).Length > 0 || payment.Address2(0).Length > 0 || payment.ProvinceCode.Length > 0 || payment.CountryCode(0).Length > 0) { ret = 80; customerOptions.Address = new AddressOptions() { Line1 = payment.Address1(0), // Line2 = payment.Address2(0), City = payment.Address2(0), State = payment.ProvinceCode, PostalCode = payment.PostalCode(0) }; ret = 85; if (payment.CountryCode(0).Length == 2) { customerOptions.Address.Country = payment.CountryCode(0).ToUpper(); } } ret = 90; var customerService = new CustomerService(); var customer = customerService.Create(customerOptions); // customer.Currency = payment.CurrencyCode.ToLower(); customerId = customer.Id; err = err + ", customerId=" + Tools.NullToString(customerId); ret = 100; strResult = customer.StripeResponse.Content; // resultMsg = Tools.JSONValue(strResult,"status"); resultCode = customer.StripeResponse.ToString(); int k = resultCode.ToUpper().IndexOf(" STATUS="); ret = 110; err = err + ", StripeResponse=" + Tools.NullToString(resultCode); // customer.StripeResponse.ToString() is as follows: // <Stripe.StripeResponse status=200 Request-Id=req_bI0B5glG6r6DNe Date=2021-05-28T09:35:23> if (k > 0) { resultCode = resultCode.Substring(k + 8).Trim(); k = resultCode.IndexOf(" "); if (k > 0) { resultCode = resultCode.Substring(0, k); } } else { resultCode = "999"; } ret = 120; err = err + ", strResult=" + Tools.NullToString(strResult) + ", resultCode=" + Tools.NullToString(resultCode); customer = null; customerService = null; customerOptions = null; paymentMethod = null; paymentMethodService = null; paymentMethodOptions = null; token = null; tokenService = null; tokenOptions = null; if (resultCode.StartsWith("2") && payToken.Length > 0 && paymentMethodId.Length > 0 && customerId.Length > 0) { resultMsg = "Success"; ret = 0; // Tools.LogInfo ("GetToken/189","Ret=0" + err,255,this); } else { Tools.LogInfo("GetToken/197", "Ret=" + ret.ToString() + err, 231, this); } } catch (Exception ex) { err = "Ret=" + ret.ToString() + err; Tools.LogInfo("GetToken/198", err, 231, this); Tools.LogException("GetToken/199", err, ex, this); } return(ret); }
public override int GetToken(Payment payment) { string url = Tools.ConfigValue("SystemURL") + "/Succeed.aspx?TransRef=" + Tools.XMLSafe(payment.MerchantReference); int ret = 300; Tools.LogInfo("TransactionIkajo.GetToken/10", "Sale, Merchant Ref=" + payment.MerchantReference, 10); try { string md5Signature = HashMD5(Tools.XMLSafe(payment.CardExpiryMM + payment.CardExpiryYY) + Tools.XMLSafe(payment.CardNumber) + Tools.XMLSafe(payment.CardType) + Tools.XMLSafe(payment.CardCVV) + Tools.XMLSafe(payment.Address1()) + Tools.XMLSafe(payment.Address2()) + Tools.XMLSafe(payment.CountryCode()) + Tools.XMLSafe(payment.EMail) + Tools.XMLSafe(payment.MandateIPAddress) + Tools.XMLSafe(payment.FirstName + " " + payment.LastName) + Tools.XMLSafe(payment.PhoneCell) + Tools.XMLSafe(payment.State) + Tools.XMLSafe(payment.PostalCode()) + Tools.XMLSafe("YES") + Tools.XMLSafe(payment.ProviderUserID) + Tools.XMLSafe(payment.PaymentAmountDecimal) + Tools.XMLSafe(payment.CurrencyCode) + Tools.XMLSafe(payment.PaymentDescription) + Tools.XMLSafe(payment.MerchantReference) + Tools.XMLSafe(url) + Tools.XMLSafe(payment.ProviderPassword)); if (saleReq == null) { saleReq = new SaleRequest(); } saleReq.cardExpiration = Tools.XMLSafe(payment.CardExpiryMM + payment.CardExpiryYY); saleReq.cardNumber = Tools.XMLSafe(payment.CardNumber); saleReq.cardType = Tools.XMLSafe(payment.CardType); saleReq.cardVerificationCode = Tools.XMLSafe(payment.CardCVV); saleReq.customerAddress = Tools.XMLSafe(payment.Address1()); saleReq.customerCity = Tools.XMLSafe(payment.Address2()); saleReq.customerCountry = Tools.XMLSafe(payment.CountryCode()); saleReq.customerEmail = Tools.XMLSafe(payment.EMail); saleReq.customerIP = Tools.XMLSafe(payment.MandateIPAddress); saleReq.customerName = Tools.XMLSafe(payment.FirstName + " " + payment.LastName); saleReq.customerPhoneNumber = Tools.XMLSafe(payment.PhoneCell); saleReq.customerState = Tools.XMLSafe(payment.State); saleReq.customerZipCode = Tools.XMLSafe(payment.PostalCode()); saleReq.initRecurring = "YES"; saleReq.merchantID = Tools.XMLSafe(payment.ProviderUserID); saleReq.orderAmount = Tools.XMLSafe(payment.PaymentAmountDecimal); saleReq.orderCurrency = Tools.XMLSafe(payment.CurrencyCode); saleReq.orderDescription = Tools.XMLSafe(payment.PaymentDescription); saleReq.orderReference = Tools.XMLSafe(payment.MerchantReference); saleReq.returnUrl = Tools.XMLSafe(url); saleReq.signature = md5Signature; Tools.LogInfo("TransactionIkajo.GetToken/20", "", 10); if (ikajo == null) { ikajo = new PtCardService(); } PCIBusiness.IkajoService.SaleResult result = ikajo.sale(saleReq); string x = "[TokenResult] StatusCode=" + result.statusCode + " | TransactionStatus=" + result.transactionStatus + " | TransactionError=" + result.transactionError + " | RecurringToken=" + result.recurringToken; Tools.LogInfo("TransactionIkajo.GetToken/30", x, 10); payToken = result.recurringToken; payRef = result.orderReference; resultCode = result.transactionStatus; resultMsg = result.transactionError; // if ( ret != 0 ) // Tools.LogInfo("TransactionIkajo.GetToken/50","ResultCode="+ResultCode + ", payToken=" + payToken,220); } catch (Exception ex) { Tools.LogInfo("TransactionIkajo.GetToken/98", "Ret=" + ret.ToString() + ", XML Sent=" + xmlSent, 255); Tools.LogException("TransactionIkajo.GetToken/99", "Ret=" + ret.ToString() + ", XML Sent=" + xmlSent, ex); } return(ret); }