Unofficial rust client for iyzipay.
You can sign up for an iyzico account at https://iyzico.com
Rust 1.41.0 or newer
```rust let mut options = Options::new(); options.setapikey("your api key"); options.setsecretkey("your secret key"); options.setbaseurl("https://sandbox-api.iyzipay.com");
let mut request = CreatePaymentRequest::new(); request.setlocale(Locale::TR.value()); request.setconversationid("123456789"); request.setprice(BigDecimal::fromstr("1").unwrap()); request.setpaidprice(BigDecimal::fromstr("1.2").unwrap()); request.setcurrency(Currency::TRY.tostring()); request.setinstallment(1); request.setbasketid("B67832".tostring()); request.setpaymentchannel(PaymentChannel::Web.value()); request.setpaymentgroup(PaymentGroup::Product.value());
let mut paymentcard = PaymentCard::new(); paymentcard.setcardholdername("John Doe"); paymentcard.setcardnumber("5528790000000008"); paymentcard.setexpiremonth("12"); paymentcard.setexpireyear("2030"); paymentcard.setcvc("123"); paymentcard.setregistercard(0); request.setpaymentcard(paymentcard);
let mut buyer = Buyer::new(); buyer.setid("BY789"); buyer.setname("John"); buyer.setsurname("Doe"); buyer.setgsmnumber("+905350000000"); buyer.setemail("email@email.com"); buyer.setidentitynumber("74300864791"); buyer.setlastlogindate("2015-10-05 12:43:35"); buyer.setregistrationdate("2013-04-21 15:12:09"); buyer.setregistrationaddress("Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1"); buyer.setip("85.34.78.112"); buyer.setcity("Istanbul"); buyer.setcountry("Turkey"); buyer.setzipcode("34732"); request.set_buyer(buyer);
let mut shippingaddress = Address::new(); shippingaddress.setcontactname("Jane Doe"); shippingaddress.setcity("Istanbul"); shippingaddress.setcountry("Turkey"); shippingaddress.setaddress("Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1"); shippingaddress.setzipcode("34742"); request.setshippingaddress(shippingaddress);
let mut billingaddress = Address::new(); billingaddress.setcontactname("Jane Doe"); billingaddress.setcity("Istanbul"); billingaddress.setcountry("Turkey"); billingaddress.setaddress("Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1"); billingaddress.setzipcode("34742"); request.setbillingaddress(billingaddress);
let mut basket_items: Vec
let mut firstbasketitem = BasketItem::new();
firstbasketitem.setid("BI101"); firstbasketitem.setname("Binocular"); firstbasketitem.setcategory1("Collectibles"); firstbasketitem.setcategory2("Accessories"); firstbasketitem.setitemtype(BasketItemType::Physical.value()); firstbasketitem.setprice(BigDecimal::fromstr("0.3").unwrap());
basketitems.push(firstbasket_item);
let mut secondbasketitem = BasketItem::new();
secondbasketitem.setid("BI102"); secondbasketitem.setname("Game code"); secondbasketitem.setcategory1("Game"); secondbasketitem.setcategory2("Online Game Items"); secondbasketitem.setitemtype(BasketItemType::Virtual.value()); secondbasketitem.setprice(BigDecimal::fromstr("0.5").unwrap());
basketitems.push(secondbasket_item);
let mut thirdbasketitem = BasketItem::new(); thirdbasketitem.setid("BI103"); thirdbasketitem.setname("Usb"); thirdbasketitem.setcategory1("Electronics"); thirdbasketitem.setcategory2("Usb / Cable"); thirdbasketitem.setitemtype(BasketItemType::Physical.value()); thirdbasketitem.setprice(BigDecimal::fromstr("0.2").unwrap());
basketitems.push(thirdbasket_item);
request.setbasketitems(basket_items);
let payment = Payment::create(&request, &gettestoptions()).unwrap(); ``` See other samples under tests/sample package.
Test cards that can be used to simulate a successful payment:
Card Number | Bank | Card Type ----------- | ---- | --------- 5890040000000016 | Akbank | Master Card (Debit) 5526080000000006 | Akbank | Master Card (Credit) 4766620000000001 | Denizbank | Visa (Debit) 4603450000000000 | Denizbank | Visa (Credit) 4729150000000005 | Denizbank Bonus | Visa (Credit) 4987490000000002 | Finansbank | Visa (Debit) 5311570000000005 | Finansbank | Master Card (Credit) 9792020000000001 | Finansbank | Troy (Debit) 9792030000000000 | Finansbank | Troy (Credit) 5170410000000004 | Garanti Bankası | Master Card (Debit) 5400360000000003 | Garanti Bankası | Master Card (Credit) 374427000000003 | Garanti Bankası | American Express 4475050000000003 | Halkbank | Visa (Debit) 5528790000000008 | Halkbank | Master Card (Credit) 4059030000000009 | HSBC Bank | Visa (Debit) 5504720000000003 | HSBC Bank | Master Card (Credit) 5892830000000000 | Türkiye İş Bankası | Master Card (Debit) 4543590000000006 | Türkiye İş Bankası | Visa (Credit) 4910050000000006 | Vakıfbank | Visa (Debit) 4157920000000002 | Vakıfbank | Visa (Credit) 5168880000000002 | Yapı ve Kredi Bankası | Master Card (Debit) 5451030000000000 | Yapı ve Kredi Bankası | Master Card (Credit)
Cross border test cards:
Card Number | Country ----------- | ------- 4054180000000007 | Non-Turkish (Debit) 5400010000000004 | Non-Turkish (Credit)
Test cards to get specific error codes:
Card Number | Description ----------- | ----------- 5406670000000009 | Success but cannot be cancelled, refund or post auth 4111111111111129 | Not sufficient funds 4129111111111111 | Do not honour 4128111111111112 | Invalid transaction 4127111111111113 | Lost card 4126111111111114 | Stolen card 4125111111111115 | Expired card 4124111111111116 | Invalid cvc2 4123111111111117 | Not permitted to card holder 4122111111111118 | Not permitted to terminal 4121111111111119 | Fraud suspect 4130111111111118 | General error 4131111111111117 | Success but mdStatus is 0 4141111111111115 | Success but mdStatus is 4 4151111111111112 | 3dsecure initialize failed 4151111111111393 | Restricted for online transactions
api_key=yourApiKey secret_key=yourSecretKey base_url=https://sandbox-api.iyzipay.com cargo test sample::payment_sample::should_create_payment -- --exact
api_key=yourApiKey secret_key=yourSecretKey base_url=https://sandbox-api.iyzipay.com cargo test sample::apm_sample::should_initialize_apm_payment -- --exact