/// <summary> /// This feature allows you to make collections using a Token code that was previously created by our system, /// and which was used to store your customers’ credit cards data safely. /// </summary> /// <param name="isTest"></param> /// <param name="pCommand"></param> /// <param name="pLanguage"></param> /// <param name="pCreditCardTokenId"></param> /// <param name="pTX_VALUE"></param> /// <param name="pBuyer"></param> /// <param name="pOrderShippingAddress"></param> /// <param name="pPayer"></param> /// <param name="pExtraParameters"></param> /// <param name="pPaymentCountry"></param> /// <param name="pPaymentMethod"></param> /// <param name="pType"></param> /// <param name="pUserAgent"></param> /// <param name="pDescription"></param> /// <param name="pNotifyUrl"></param> /// <param name="pReferenceCode"></param> /// <param name="pCookie"></param> /// <param name="pDeviceSessionId"></param> /// <param name="pIpAddress"></param> /// <returns></returns> public static async Task<RootPayUIndividualPaymentWithTokenResponse> IndividualPaymentWithToken(bool isTest, string pCommand, string pLanguage, string pCreditCardTokenId, Request_TXVALUE pTX_VALUE, bool calculateTaxes, Request_IndividualPaymentWithToken_Buyer pBuyer, Address pOrderShippingAddress, Request_IndividualPaymentWithToken_Payer pPayer, Request_ExtraParameters pExtraParameters, string pPaymentCountry, string pPaymentMethod, string pType, string pUserAgent, string pDescription, string pNotifyUrl, string pReferenceCode, string pCookie, string pDeviceSessionId, string pIpAddress) { try { string productionOrTestApiKey = ConfigurationManager.AppSettings["PAYU_API_KEY"]; string productionOrTestApiLogIn = ConfigurationManager.AppSettings["PAYU_API_LOGIN"]; string productionOrTestMerchantId = ConfigurationManager.AppSettings["PAYU_API_MERCHANTID"]; int productionOrTestAccountId = int.Parse(ConfigurationManager.AppSettings["PAYU_API_ACCOUNTID"]); string productionOrTestUrl = ConfigurationManager.AppSettings["PAYU_API_CONNECTION_URL"] + PayU_Constants.DefaultProductionPaymentsConnectionUrl; var url = productionOrTestUrl; if (url != null) { string source = productionOrTestApiKey + "~" + productionOrTestMerchantId + "~" + pReferenceCode + "~" + pTX_VALUE.value + "~" + pTX_VALUE.currency; MD5 md5Hash = MD5.Create(); string pSignature = CryptoHelper.GetMd5Hash(md5Hash, source); var jsonObject = new RootPayUIndividualPaymentWithTokenRequest() { command = pCommand, language = pLanguage, merchant = new Merchant() { apiKey = productionOrTestApiKey, apiLogin = productionOrTestApiLogIn }, transaction = new Request_IndividualPaymentWithToken_Transaction() { cookie = pCookie, creditCardTokenId = pCreditCardTokenId, deviceSessionId = pDeviceSessionId, userAgent = pUserAgent, ipAddress = pIpAddress, paymentCountry = pPaymentCountry, paymentMethod = pPaymentMethod, type = pType, payer = pPayer, order = new Request_IndividualPaymentWithToken_Order() { accountId = productionOrTestAccountId, buyer = pBuyer, description = pDescription, language = pLanguage, notifyUrl = pNotifyUrl, referenceCode = pReferenceCode, shippingAddress = pOrderShippingAddress, additionalValues = calculateTaxes ? new Request_AdditionalValues() { TX_VALUE = pTX_VALUE, TX_TAX = new Request_TXTAX() { currency = pTX_VALUE.currency, value = Tax_BaseReturnHelper.CalculateTaxValue(pTX_VALUE.value) }, TX_TAX_RETURN_BASE = new Request_TXTAXRETURNBASE() { currency = pTX_VALUE.currency, value = Tax_BaseReturnHelper.CalculateBaseReturnValue(pTX_VALUE.value) } } : new Request_AdditionalValues() { TX_VALUE = pTX_VALUE, TX_TAX = new Request_TXTAX() { currency = pTX_VALUE.currency, value = 0.0 }, TX_TAX_RETURN_BASE = new Request_TXTAXRETURNBASE() { currency = pTX_VALUE.currency, value = 0.0 } }, signature = pSignature }, extraParameters = pExtraParameters }, test = isTest }; string requestJson = JsonConvert.SerializeObject(jsonObject); HttpWebResponse resp = await HtttpWebRequestHelper.SendJSONToPayUGeneralApi(url, requestJson, HttpMethod.POST); if (resp == null) return null; if (resp.StatusCode == HttpStatusCode.OK) { using (System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream())) { string res = await sr.ReadToEndAsync(); var des = JsonConvert.DeserializeObject<RootPayUIndividualPaymentWithTokenResponse>(res); sr.Close(); if (des != null) { return des; } } } else { throw new Exception(resp.StatusCode + "; " + resp.StatusDescription); } } } catch (Exception) { throw; } return null; }
static void Main(string[] args) { Task.Run(async () => { var pLanguaje = PayU_Constants.LANGUAGE_ES; var pCommand = PayU_Constants.COMMAND_SUBMIT_TRANSACTION; var pReferenceCode = "TestCOlombia07"; var pDescription = "Test order Panama"; var pNotifyUrl = "http://pruebaslap.xtrweb.com/lap/pruebconf.php"; var pShippingAddress = new Address() { country = PayU_Constants.COUNTRY_CO }; var pBuyer = new Request_CreditCard_Buyer() { fullName = "APPROVED", emailAddress = "*****@*****.**", dniNumber = "1155255887", shippingAddress = new Address() { street1 = "Calle 93 B 17 – 25", city = "Panama", state = "Panama", country = "CO", postalCode = "000000", phone = "5582254" } }; var pTX_VALUE = new Request_TXVALUE() { value = 100000, currency = "COP" }; var pCreditCard = new Request_CreditCard_CreditCard() { number = "4111111111111111", securityCode = "123", expirationDate = "2018/01", name = "test" }; var pType = PayU_Constants.TRANSACTION_TYPE_AUTHORIZATION_AND_CAPTURE; var pPaymentMethod = PayU_Constants.PAYMENT_METHOD_VISA; var pPaymentCountry = "CO"; var pPayer = new Request_CreditCard_Payer() { fullName = "APPROVED", emailAddress = "*****@*****.**" }; var pIpAddress = "127.0.0.1"; var pCookie = "cookie_52278879710130"; var pUserAgent = "Firefox"; var pExtraParameters = new Request_ExtraParameters() { INSTALLMENTS_NUMBER = 1, RESPONSE_URL = "http://www.misitioweb.com/respuesta.php" }; var pDeviceSessionId = "vghs6tvkcle931686k1900o6e1"; var pTest = false; List<Request_Recurring_AdditionalValue> pAddirionalValues = new List<Request_Recurring_AdditionalValue>(); var plan_Val = new Request_Recurring_AdditionalValue() { name = "PLAN_VALUE", value = "6000", currency = PayU_Constants.CURRENCY_COP }; //var plan_Tax = new Request_Recurring_AdditionalValue() //{ // name = "PLAN_TAX", // value = "160", // currency = PayU_Constants.CURRENCY_COP //}; //var return_Base = new Request_Recurring_AdditionalValue() //{ // name = "PLAN_TAX_RETURN_BASE", // value = "1000", // currency = PayU_Constants.CURRENCY_COP //}; pAddirionalValues.Add(plan_Val); //pAddirionalValues.Add(plan_Tax); //pAddirionalValues.Add(return_Base); Console.WriteLine("Making a ping to the Payu API"); Console.WriteLine((await QueriesService.PingTheApi(pTest, PayU_Constants.METHOD_PING, pLanguaje)).code); Console.WriteLine("Registering a Payment in the PayU system"); var payment = await PaymentsService.MakeACreditCardPayment(pTest, pCommand, pLanguaje, pCreditCard, pTX_VALUE, true, pBuyer, pShippingAddress, pPayer, pExtraParameters, pPaymentCountry, pPaymentMethod, pType, pUserAgent, pDescription, pNotifyUrl, pReferenceCode, pCookie, pDeviceSessionId, pIpAddress); Console.WriteLine(payment.code); Console.WriteLine("Getting available list of bank ready in the PayU system"); Console.WriteLine((await PaymentsService.GetAvailableBankList(pTest, PayU_Constants.COMMAND_GET_BANKS_LIST, pLanguaje, PayU_Constants.COUNTRY_CO, PayU_Constants.PAYMENT_METHOD_PSE)).code); Console.WriteLine("Getting an order by reference code"); Console.WriteLine((await QueriesService.GetOrderByReferenceCode(pTest, PayU_Constants.COMMAND_ORDER_DETAIL_BY_REFERENCE_CODE, pLanguaje, pReferenceCode)).code); //Console.WriteLine("creating a recurring plan in the PayU system"); //Console.WriteLine(RecurringPaymentsService.CreateAPlan(pLanguaje, "PuntoHome Premium Plan", "YEAR", "1", "4", "1", "1", "1", "0", "PHME_Premium_Plan_1", pAddirionalValues).id); //Console.WriteLine("query that plan in the PayU system"); //var planExist = RecurringPaymentsService.GetAPlan(PayU_Constants.LANGUAGE_ES, "PHME_Premium_Plan_1"); //Console.WriteLine(planExist != null ? planExist.id : "plan does not exist"); //Console.WriteLine("updating a recurring plan in the PayU system"); //Console.WriteLine(RecurringPaymentsService.UpdateAPlan(pLanguaje, "Larnia Premium Plan", "1", "1", "4", "PHME_Premium_Plan_1", pAddirionalValues).id); //Console.WriteLine("query updated plan in the PayU system"); //planExist = RecurringPaymentsService.GetAPlan(PayU_Constants.LANGUAGE_ES, "PHME_Premium_Plan_1"); //Console.WriteLine(planExist != null ? planExist.id : "plan does not exist"); //Console.WriteLine("Getting an order by id code"); //Console.WriteLine(QueriesService.GetOrderById(false, PayU_Constants.COMMAND_ORDER_DETAIL, // PayU_Constants.LANGUAGE_ES, payment.transactionResponse.orderId).code); //Console.WriteLine("Adding new costumer to payu"); //var costId = RecurringPaymentsService.CreateACustomer(PayU_Constants.LANGUAGE_ES, "*****@*****.**", "Juan Carlos Hernandez Ramos"); //Console.WriteLine(costId.id); //Console.WriteLine("Query costumer to payu"); //var custumer = RecurringPaymentsService.GetACustomer(PayU_Constants.LANGUAGE_ES, "35c576td0iya"); //Console.WriteLine("Add New card to a subscription"); //var planCreditCard = new Request_Subscription_Creation_NewCard_CreditCard() //{ // number = "4916523740316159", // document = "103242915", // expMonth = "01", // expYear = "2018", // name = "test", // type = PayU_Constants.PAYMENT_METHOD_VISA, // address = new Request_Recurring_Address() // { // line1 = "Calle 93 B 17 – 25", // line2 = "Calle 93 B 17 – 25", // line3 = "Calle 93 B 17 – 25", // city = "Panama", // state = "Panama", // country = "CO", // postalCode = "000000", // phone = "5582254" // } //}; //var planList = new List<Request_Subscription_Creation_NewCard_CreditCard>(); //planList.Add(planCreditCard); //var planCustomer = new Request_Subscription_Creation_NewCard_Customer() //{ // id = costId.id, // creditCards = planList //}; //Console.WriteLine(RecurringPaymentsService.CreateASubscriptionNewCard(PayU_Constants.LANGUAGE_ES, "1", "1", "0", planCustomer, // new Request_Subscription_Creation_NewCard_Plan() { planCode = "PHME_Premium_Plan_1" }).id); //Console.WriteLine("Create a credit card token"); //var createdCreditCard = RecurringPaymentsService.CreateACreditCard(PayU_Constants.LANGUAGE_ES, planCreditCard.document, planCreditCard.expMonth, planCreditCard.expYear, // planCreditCard.name, planCreditCard.number, planCreditCard.type, planCreditCard.address, costId.id); //Console.WriteLine(createdCreditCard.token); //Console.WriteLine("Query created credit card token"); //var cQueryToken = RecurringPaymentsService.GetACustomer(PayU_Constants.LANGUAGE_ES, "1ed3amsh85jq"); //Console.WriteLine("Query created subscription"); //var cQuerysubs = RecurringPaymentsService.GetASubscription(PayU_Constants.LANGUAGE_ES, "6a8df74s2au1"); //var ValidUntil = cQuerysubs.currentPeriodEnd > 0 ? new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Local).AddMilliseconds(cQuerysubs.currentPeriodEnd) : cQuerysubs.currentPeriodEnd == -1 ? DateTime.UtcNow.Date.AddMonths(2) : (DateTime?)null; //ValidUntil = cQuerysubs.currentPeriodStart > 0 ? new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Local).AddMilliseconds(cQuerysubs.currentPeriodStart) : cQuerysubs.currentPeriodStart == -1 ? DateTime.UtcNow.Date.AddMonths(2) : (DateTime?)null; //Console.WriteLine("Query created billing"); //var cQuerybill = RecurringPaymentsService.GetAnAdditionalChargeBySubscriptionId(PayU_Constants.LANGUAGE_ES, "6a8df74s2au1"); //Console.WriteLine("delete subscription by id"); //var deletedSubs = RecurringPaymentsService.DeleteASubscription(PayU_Constants.LANGUAGE_ES, ""); //Console.WriteLine("Getting an order by reference code"); //var consultbyReference = QueriesService.GetOrderByReferenceCode(pTest, PayU_Constants.COMMAND_ORDER_DETAIL_BY_REFERENCE_CODE, pLanguaje, "Recurring_Larnia_Plan_2 - 35c576td0iya"); //var updatecredit = RecurringPaymentsService.UpdateASubscription(PayU_Constants.LANGUAGE_ES, "71276517-d745-478a-be18-733c9be4b79c", "fc910nd1zlba"); //var deletecredit = RecurringPaymentsService.DeleteACreditCard(PayU_Constants.LANGUAGE_ES, "1ed3amsh85jq", "71276517-d745-478a-be18-733c9be4b79c"); //Console.WriteLine(cQueryToken.number); //Console.WriteLine("Make a payment with created credit card token"); //var pBuyerT = new Request_IndividualPaymentWithToken_Buyer() //{ // fullName = "APPROVED", // emailAddress = "*****@*****.**", // dniNumber = "1155255887", // shippingAddress = new Address() // { // street1 = "Calle 93 B 17 – 25", // city = "Panama", // state = "Panama", // country = "CO", // postalCode = "000000", // phone = "5582254" // } //}; //var pPayerT = new Request_IndividualPaymentWithToken_Payer() //{ // fullName = "APPROVED", // emailAddress = "*****@*****.**" //}; //var payToken = TokenizationService.IndividualPaymentWithToken(false, PayU_Constants.COMMAND_SUBMIT_TRANSACTION, PayU_Constants.LANGUAGE_ES, // cQueryToken.token, pTX_VALUE, pBuyerT, pShippingAddress, pPayerT, pExtraParameters, PayU_Constants.COUNTRY_CO, cQueryToken.type, // PayU_Constants.TRANSACTION_TYPE_AUTHORIZATION_AND_CAPTURE, pUserAgent, pDescription, pNotifyUrl, pReferenceCode, pCookie, // pDeviceSessionId, pIpAddress); //Console.WriteLine(payToken.code); //Console.WriteLine("Delete created credit card"); //var cdeleteToken = RecurringPaymentsService.DeleteACreditCard(PayU_Constants.LANGUAGE_ES, costId.id, createdCreditCard.token); //Console.WriteLine("creating a recurring plan in the PayU system"); //Console.WriteLine(RecurringPaymentsService.CreateAPlan(PayU_Constants.LANGUAGE_ES, "Recurring_Larnia_Plan_10", "MONTH", "1", "-1", "1", "0", "0", "1", "Recurring_Larnia_Plan_10", pAddirionalValues).id); //Console.WriteLine(RecurringPaymentsService.CreateAPlan(PayU_Constants.LANGUAGE_ES, "Recurring_Larnia_Plan_20", "MONTH", "1", "-1", "1", "0", "0", "1", "Recurring_Larnia_Plan_20", pAddirionalValues).id); //Console.WriteLine(RecurringPaymentsService.CreateAPlan(PayU_Constants.LANGUAGE_ES, "Recurring_Larnia_Plan_30", "MONTH", "1", "-1", "1", "0", "0", "1", "Recurring_Larnia_Plan_30", pAddirionalValues).id); //Console.WriteLine(RecurringPaymentsService.CreateAPlan(PayU_Constants.LANGUAGE_ES, "Recurring_Larnia_Plan_40", "MONTH", "1", "-1", "1", "0", "0", "1", "Recurring_Larnia_Plan_40", pAddirionalValues).id); //var deletedPlan = RecurringPaymentsService.DeleteAPlan(PayU_Constants.LANGUAGE_ES, "Recurring_Larnia_Plan_10"); //deletedPlan = RecurringPaymentsService.DeleteAPlan(PayU_Constants.LANGUAGE_ES, "Recurring_Larnia_Plan_20"); //deletedPlan = RecurringPaymentsService.DeleteAPlan(PayU_Constants.LANGUAGE_ES, "Recurring_Larnia_Plan_30"); //deletedPlan = RecurringPaymentsService.DeleteAPlan(PayU_Constants.LANGUAGE_ES, "Recurring_Larnia_Plan_40"); Console.WriteLine("Press any key to stop..."); Console.ReadKey(); }).Wait(); }