public static ThreedsInitialize Create(CreatePaymentRequest request, Options options) { ThreedsInitialize response = RestHttpClient.Create().Post<ThreedsInitialize>(options.BaseUrl + "/payment/3dsecure/initialize", GetHttpHeaders(request, options), request); if (response != null) { response.HtmlContent = DigestHelper.decodeString(response.HtmlContent); } return response; }
public static PaymentPreAuth Create(CreatePaymentRequest request, Options options) { return RestHttpClient.Create().Post<PaymentPreAuth>(options.BaseUrl + "/payment/preauth", GetHttpHeaders(request, options), request); }
public override void DoOperation() { try { //Validate Reques Header / Constants this.baseResponseMessage = ValidateInput(); if (!this.baseResponseMessage.header.IsSuccess) { throw new Exception(this.baseResponseMessage.header.ResponseMessage); } Options baseHeader = null; string errMsg = ""; string errCode = ""; bool result = true; //Operation switch (this.request.Header.OperationTypes) { case (int)OperationType.OperationTypes.ADD: #region PAYMENT //Create payments Iyzipay.Request.CreatePaymentRequest paymentRequest = PrepareRequest(ref result, ref errMsg, ref baseHeader, ref errCode); Payment payment = Payment.Create(paymentRequest, baseHeader); RetrievePaymentRequest request = new RetrievePaymentRequest(); request.Locale = Locale.TR.ToString(); request.ConversationId = payment.ConversationId; request.PaymentId = payment.PaymentId; request.PaymentConversationId = payment.ConversationId; //check payments Payment Checkpayments = Payment.Retrieve(request, baseHeader); if (Checkpayments.Status == Status.FAILURE.ToString()) { throw new Exception("Odeme basarısız"); } bool checkvalue = false; //add transaction CommonServices.AddTransaction(this.request, ref checkvalue); //response this.response = new ResponsePayment { CALLBACK_URL = paymentRequest.CallbackUrl, CARD_HOLDER_NAME = paymentRequest.PaymentCard.CardHolderName, CARD_REF_NUMBER = paymentRequest.PaymentCard.CardNumber, CONVERSATION_ID = payment.ConversationId, CURRENCY = payment.Currency, CUSTOMER_NUMBER = Convert.ToInt64(paymentRequest.Buyer.Id), IP = paymentRequest.Buyer.Ip, PAID_PRICE = payment.PaidPrice, PRICE = payment.Price, PAYMENT_CHANNEL = paymentRequest.PaymentChannel, PAYMENT_ID = Checkpayments.PaymentId, header = new ResponseHeader { IsSuccess = checkvalue == false ? false : true, ResponseCode = checkvalue == false ? CommonDefinitions.INTERNAL_TRANSACTION_ERROR : CommonDefinitions.SUCCESS, ResponseMessage = checkvalue == false ? CommonDefinitions.ERROR_MESSAGE : CommonDefinitions.SUCCESS_MESSAGE } }; #endregion break; case (int)OperationType.OperationTypes.DELETE: #region REFUND //Create ReFund FillOptionHeader(ref baseHeader); CreateRefundRequest refundRequest = new CreateRefundRequest(); refundRequest.ConversationId = this.request.CONVERSATION_ID; refundRequest.Locale = Locale.TR.ToString(); refundRequest.PaymentTransactionId = this.request.PAYMENT_ID; refundRequest.Price = this.request.PRICE; refundRequest.Ip = this.request.IP; refundRequest.Currency = this.request.CURRENCY; //check refund Refund refund = Refund.Create(refundRequest, baseHeader); if (refund.Status == Status.FAILURE.ToString()) { throw new Exception(" Geri ödeme basarısız"); } //Transaction checkvalue = false; //add transaction CommonServices.AddTransaction(this.request, ref checkvalue); //response this.response = new ResponsePayment { CALLBACK_URL = this.request.CALLBACK_URL, CARD_HOLDER_NAME = this.request.CARD_HOLDER_NAME, CARD_REF_NUMBER = this.request.CARD_REF_NUMBER, CONVERSATION_ID = refundRequest.ConversationId, CURRENCY = refundRequest.Currency, CUSTOMER_NUMBER = this.request.CUSTOMER_NUMBER, IP = refundRequest.Ip, PAID_PRICE = refundRequest.Price, PRICE = refundRequest.Price, PAYMENT_CHANNEL = this.request.PAYMENT_CHANNEL, PAYMENT_ID = refundRequest.PaymentTransactionId, header = new ResponseHeader { IsSuccess = checkvalue == false ? false : true, ResponseCode = checkvalue == false ? CommonDefinitions.INTERNAL_TRANSACTION_ERROR : CommonDefinitions.SUCCESS, ResponseMessage = checkvalue == false ? CommonDefinitions.ERROR_MESSAGE : CommonDefinitions.SUCCESS_MESSAGE } }; #endregion break; case (int)OperationType.OperationTypes.UPDATE: #region BKM PAYMENT CreateBkmInitializeRequest requestBKM = PrepareBkmRequest(ref baseHeader); BkmInitialize bkmInitialize = BkmInitialize.Create(requestBKM, baseHeader); RetrieveBkmRequest retrieveBKM = new RetrieveBkmRequest(); retrieveBKM.Locale = Locale.TR.ToString(); retrieveBKM.ConversationId = "123456789"; retrieveBKM.Token = "token"; Bkm bkm = Bkm.Retrieve(retrieveBKM, baseHeader); if (bkm.Status == Status.FAILURE.ToString()) { throw new Exception("Odeme basarısız"); } //Transaction checkvalue = false; //add transaction CommonServices.AddTransaction(this.request, ref checkvalue); //response this.response = new ResponsePayment { CALLBACK_URL = requestBKM.CallbackUrl, CARD_HOLDER_NAME = "", CARD_REF_NUMBER = "", CONVERSATION_ID = requestBKM.ConversationId, CURRENCY = "", CUSTOMER_NUMBER = Convert.ToInt64(requestBKM.Buyer.Id), IP = requestBKM.Buyer.Ip, PAID_PRICE = requestBKM.Price, PRICE = requestBKM.Price, PAYMENT_CHANNEL = requestBKM.PaymentSource, PAYMENT_ID = requestBKM.BasketId, header = new ResponseHeader { IsSuccess = checkvalue == false ? false : true, ResponseCode = checkvalue == false ? CommonDefinitions.INTERNAL_TRANSACTION_ERROR : CommonDefinitions.SUCCESS, ResponseMessage = checkvalue == false ? CommonDefinitions.ERROR_MESSAGE : CommonDefinitions.SUCCESS_MESSAGE } }; #endregion break; case (int)OperationType.OperationTypes.GET: #region 3D PAYMENT //Initialize 3D Payment Iyzipay.Request.CreatePaymentRequest payment3DRequest = Prepare3DRequest(ref baseHeader); ThreedsInitialize threedsInitialize = ThreedsInitialize.Create(payment3DRequest, baseHeader); if (threedsInitialize.Status == Status.FAILURE.ToString()) { throw new Exception("Odeme basarısız"); } //Create 3D Payment CreateThreedsPaymentRequest create3Drequestpayment = new CreateThreedsPaymentRequest(); create3Drequestpayment.Locale = Locale.TR.ToString(); create3Drequestpayment.ConversationId = payment3DRequest.ConversationId; create3Drequestpayment.PaymentId = this.request.PAYMENT_ID; create3Drequestpayment.ConversationData = "conversation data"; // ????? ThreedsPayment threedsPayment = ThreedsPayment.Create(create3Drequestpayment, baseHeader); if (threedsPayment.Status == Status.FAILURE.ToString()) { throw new Exception("Odeme basarısız"); } //Transaction checkvalue = false; //add transaction CommonServices.AddTransaction(this.request, ref checkvalue); //response this.response = new ResponsePayment { CALLBACK_URL = payment3DRequest.CallbackUrl, CARD_HOLDER_NAME = payment3DRequest.PaymentCard.CardHolderName, CARD_REF_NUMBER = payment3DRequest.PaymentCard.CardNumber, CONVERSATION_ID = payment3DRequest.ConversationId, CURRENCY = payment3DRequest.Currency, CUSTOMER_NUMBER = Convert.ToInt64(payment3DRequest.Buyer.Id), IP = payment3DRequest.Buyer.Ip, PAID_PRICE = payment3DRequest.PaidPrice, PRICE = payment3DRequest.Price, PAYMENT_CHANNEL = payment3DRequest.PaymentChannel, PAYMENT_ID = create3Drequestpayment.PaymentId, header = new ResponseHeader { IsSuccess = checkvalue == false ? false : true, ResponseCode = checkvalue == false ? CommonDefinitions.INTERNAL_TRANSACTION_ERROR : CommonDefinitions.SUCCESS, ResponseMessage = checkvalue == false ? CommonDefinitions.ERROR_MESSAGE : CommonDefinitions.SUCCESS_MESSAGE } }; #endregion break; default: break; } } catch (Exception ex) { log.Error("Payment Operation has an ERROR: [ERROR : " + ex.Message + "]"); throw new Exception("Ödeme sirasinda hata oluştu."); } }
private CreatePaymentRequest PrepareRequest(ref bool result, ref string errMsg, ref Options baseHeader, ref string errCode) { try { Iyzipay.Request.CreatePaymentRequest paymentRequest = new Iyzipay.Request.CreatePaymentRequest(); ResponsePersonalInformation responseCustomer = CommonServices.GetCustomer(this.request.CUSTOMER_NUMBER); ResponseCustomerAddress responseCustomerAddress = CommonServices.GetCustomerAddress(this.request.CUSTOMER_NUMBER); ResponseBoats responseBoat = CommonServices.GetBoatInfo(this.request.BOAT_ID); baseHeader = new Options(); baseHeader.ApiKey = this.request.ApiKey; // "sandbox-lJr5mWuuVSnwTa5Dt8bE6ohOi6chI463"; baseHeader.SecretKey = this.request.SecretKey; // "sandbox-yLkfxt1paeOWTZjV7qzn3rwyFPRrC6Cj"; baseHeader.BaseUrl = this.request.BaseUrl; // "https://sandbox-merchant.iyzipay.com"; string cvc = ""; if (String.IsNullOrEmpty(this.request.PaymentCard.CARD_CVV)) { cvc = "000"; } else { cvc = this.request.PaymentCard.CARD_CVV; } paymentRequest.PaymentCard = new Iyzipay.Model.PaymentCard() { CardHolderName = this.request.PaymentCard.CARD_HOLDER_NAME, CardNumber = Common.CipherAlgorithm.Decrypt(this.request.PaymentCard.CARD_REF_NUMBER, CipherAlgorithm.password), ExpireMonth = this.request.PaymentCard.CARD_EXPIRE_MONTH, ExpireYear = this.request.PaymentCard.CARD_EXPIRE_YEAR, Cvc = cvc, RegisterCard = 0//default }; paymentRequest.Buyer = new Iyzipay.Model.Buyer() { Id = this.request.CUSTOMER_NUMBER.ToString(), Name = responseCustomer.CUSTOMER_NAME, Surname = responseCustomer.CUSTOMER_SURNAME, GsmNumber = responseCustomer.PHONE_NUMBER, Email = responseCustomer.EMAIL, IdentityNumber = responseCustomer.IDENTIFICATION_ID.ToString(), LastLoginDate = DateTime.Now.ToShortDateString(), RegistrationDate = DateTime.Now.ToShortDateString(), RegistrationAddress = responseCustomerAddress.DESCRIPTION, Ip = this.request.IP, City = responseCustomerAddress.CITY, Country = responseCustomerAddress.COUNTRY, ZipCode = responseCustomerAddress.ZIPCODE }; paymentRequest.ShippingAddress = new Iyzipay.Model.Address() { ContactName = responseCustomer.CUSTOMER_NAME + " " + responseCustomer.CUSTOMER_SURNAME, City = responseCustomerAddress.CITY, Country = responseCustomerAddress.COUNTRY, ZipCode = responseCustomerAddress.ZIPCODE, Description = responseCustomerAddress.DESCRIPTION }; paymentRequest.BillingAddress = new Iyzipay.Model.Address() { ContactName = responseCustomer.CUSTOMER_NAME + " " + responseCustomer.CUSTOMER_SURNAME, City = responseCustomerAddress.CITY, Country = responseCustomerAddress.COUNTRY, ZipCode = responseCustomerAddress.ZIPCODE, Description = responseCustomerAddress.DESCRIPTION }; List <BasketItem> basketItems = new List <BasketItem>(); BasketItem firstBasketItem = new BasketItem(); firstBasketItem.Id = GenerateNumberManager.GenerateBasketId(); firstBasketItem.Name = responseBoat.BOAT_NAME; firstBasketItem.Category1 = responseBoat.TOUR_TYPE; firstBasketItem.Category2 = Enum.GetName(typeof(Enums.TourType), responseBoat.TOUR_TYPE); firstBasketItem.ItemType = BasketItemType.VIRTUAL.ToString(); firstBasketItem.Price = responseBoat.TOUR_TYPE == "1" ? responseBoat.PRICE : responseBoat.PRIVATE_PRICE; basketItems.Add(firstBasketItem); paymentRequest.BasketItems = basketItems; paymentRequest.Locale = Locale.TR.ToString(); paymentRequest.ConversationId = this.request.CONVERSATION_ID; paymentRequest.Price = this.request.PRICE; paymentRequest.PaidPrice = (Convert.ToDecimal(this.request.PAID_PRICE) / 100).ToString().Replace(',', '.'); paymentRequest.Installment = 0; paymentRequest.BasketId = firstBasketItem.Id;//Sepet Id'si. paymentRequest.PaymentChannel = this.request.PAYMENT_CHANNEL.ToString(); paymentRequest.PaymentGroup = PaymentGroup.PRODUCT.ToString(); switch (this.request.CURRENCY) { case "949": paymentRequest.Currency = Iyzipay.Model.Currency.TRY.ToString(); break; case "840": paymentRequest.Currency = Iyzipay.Model.Currency.USD.ToString(); break; case "978": paymentRequest.Currency = Iyzipay.Model.Currency.EUR.ToString(); break; case "826": paymentRequest.Currency = Iyzipay.Model.Currency.GBP.ToString(); break; case "364": paymentRequest.Currency = Iyzipay.Model.Currency.IRR.ToString(); break; default: paymentRequest.Currency = ""; break; } if (String.IsNullOrEmpty(paymentRequest.Currency)) { errCode = CommonDefinitions.INTERNAL_SYSTEM_ERROR; errMsg = CommonDefinitions.CURRENCY_CODE_IS_NOT_VALID; result = false; log.Info("iyzico Sale Call.. Error on PrepareRequest. Detail : " + errMsg); } return(paymentRequest); } catch (Exception ex) { log.Error("Prepare payment data has occured an ERROR. [Error: " + ex.Message + "]"); throw ex; } }
public void Should_Initialize_Threeds() { CreatePaymentRequest request = new CreatePaymentRequest(); request.Locale = Locale.TR.ToString(); request.ConversationId = "123456789"; request.Price = "1"; request.PaidPrice = "1.2"; request.Currency = Currency.TRY.ToString(); request.Installment = 1; request.BasketId = "B67832"; request.PaymentChannel = PaymentChannel.WEB.ToString(); request.PaymentGroup = PaymentGroup.PRODUCT.ToString(); request.CallbackUrl = "https://www.merchant.com/callback"; PaymentCard paymentCard = new PaymentCard(); paymentCard.CardHolderName = "John Doe"; paymentCard.CardNumber = "5528790000000008"; paymentCard.ExpireMonth = "12"; paymentCard.ExpireYear = "2030"; paymentCard.Cvc = "123"; paymentCard.RegisterCard = 0; request.PaymentCard = paymentCard; Buyer buyer = new Buyer(); buyer.Id = "BY789"; buyer.Name = "John"; buyer.Surname = "Doe"; buyer.GsmNumber = "+905350000000"; buyer.Email = "*****@*****.**"; buyer.IdentityNumber = "74300864791"; buyer.LastLoginDate = "2015-10-05 12:43:35"; buyer.RegistrationDate = "2013-04-21 15:12:09"; buyer.RegistrationAddress = "Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1"; buyer.Ip = "85.34.78.112"; buyer.City = "Istanbul"; buyer.Country = "Turkey"; buyer.ZipCode = "34732"; request.Buyer = buyer; Address shippingAddress = new Address(); shippingAddress.ContactName = "Jane Doe"; shippingAddress.City = "Istanbul"; shippingAddress.Country = "Turkey"; shippingAddress.Description = "Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1"; shippingAddress.ZipCode = "34742"; request.ShippingAddress = shippingAddress; Address billingAddress = new Address(); billingAddress.ContactName = "Jane Doe"; billingAddress.City = "Istanbul"; billingAddress.Country = "Turkey"; billingAddress.Description = "Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1"; billingAddress.ZipCode = "34742"; request.BillingAddress = billingAddress; List<BasketItem> basketItems = new List<BasketItem>(); BasketItem firstBasketItem = new BasketItem(); firstBasketItem.Id = "BI101"; firstBasketItem.Name = "Binocular"; firstBasketItem.Category1 = "Collectibles"; firstBasketItem.Category2 = "Accessories"; firstBasketItem.ItemType = BasketItemType.PHYSICAL.ToString(); firstBasketItem.Price = "0.3"; basketItems.Add(firstBasketItem); BasketItem secondBasketItem = new BasketItem(); secondBasketItem.Id = "BI102"; secondBasketItem.Name = "Game code"; secondBasketItem.Category1 = "Game"; secondBasketItem.Category2 = "Online Game Items"; secondBasketItem.ItemType = BasketItemType.VIRTUAL.ToString(); secondBasketItem.Price = "0.5"; basketItems.Add(secondBasketItem); BasketItem thirdBasketItem = new BasketItem(); thirdBasketItem.Id = "BI103"; thirdBasketItem.Name = "Usb"; thirdBasketItem.Category1 = "Electronics"; thirdBasketItem.Category2 = "Usb / Cable"; thirdBasketItem.ItemType = BasketItemType.PHYSICAL.ToString(); thirdBasketItem.Price = "0.2"; basketItems.Add(thirdBasketItem); request.BasketItems = basketItems; ThreedsInitialize threedsInitialize = ThreedsInitialize.Create(request, options); PrintResponse<ThreedsInitialize>(threedsInitialize); Assert.AreEqual(Status.SUCCESS.ToString(), threedsInitialize.Status); Assert.AreEqual(Locale.TR.ToString(), threedsInitialize.Locale); Assert.AreEqual("123456789", threedsInitialize.ConversationId); Assert.IsNotNull(threedsInitialize.SystemTime); Assert.IsNull(threedsInitialize.ErrorCode); Assert.IsNull(threedsInitialize.ErrorMessage); Assert.IsNull(threedsInitialize.ErrorGroup); Assert.IsNotNull(threedsInitialize.HtmlContent); }