3 个版本

0.1.2 2020年9月20日
0.1.1 2019年3月27日
0.1.0 2019年3月26日

#17 in #支付

MIT/Apache

245KB
6.5K SLoC

iyzipay-rust

Build Status crates.io

非官方 的 iyzipay Rust 客户端。

您可以在 https://iyzico.com 注册 iyzico 账户

要求

Rust 1.41.0 或更高版本

用法

let mut options = Options::new();
options.set_api_key("your api key");
options.set_secret_key("your secret key");
options.set_base_url("https://sandbox-api.iyzipay.com");

let mut request = CreatePaymentRequest::new();
request.set_locale(Locale::TR.value());
request.set_conversation_id("123456789");
request.set_price(BigDecimal::from_str("1").unwrap());
request.set_paid_price(BigDecimal::from_str("1.2").unwrap());
request.set_currency(Currency::TRY.to_string());
request.set_installment(1);
request.set_basket_id("B67832".to_string());
request.set_payment_channel(PaymentChannel::Web.value());
request.set_payment_group(PaymentGroup::Product.value());

let mut payment_card = PaymentCard::new();
payment_card.set_card_holder_name("John Doe");
payment_card.set_card_number("5528790000000008");
payment_card.set_expire_month("12");
payment_card.set_expire_year("2030");
payment_card.set_cvc("123");
payment_card.set_register_card(0);
request.set_payment_card(payment_card);

let mut buyer = Buyer::new();
buyer.set_id("BY789");
buyer.set_name("John");
buyer.set_surname("Doe");
buyer.set_gsm_number("+905350000000");
buyer.set_email("[email protected]");
buyer.set_identity_number("74300864791");
buyer.set_last_login_date("2015-10-05 12:43:35");
buyer.set_registration_date("2013-04-21 15:12:09");
buyer.set_registration_address("Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1");
buyer.set_ip("85.34.78.112");
buyer.set_city("Istanbul");
buyer.set_country("Turkey");
buyer.set_zip_code("34732");
request.set_buyer(buyer);

let mut shipping_address = Address::new();
shipping_address.set_contact_name("Jane Doe");
shipping_address.set_city("Istanbul");
shipping_address.set_country("Turkey");
shipping_address.set_address("Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1");
shipping_address.set_zip_code("34742");
request.set_shipping_address(shipping_address);

let mut billing_address = Address::new();
billing_address.set_contact_name("Jane Doe");
billing_address.set_city("Istanbul");
billing_address.set_country("Turkey");
billing_address.set_address("Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1");
billing_address.set_zip_code("34742");
request.set_billing_address(billing_address);

let mut basket_items: Vec<BasketItem> = Vec::new();

let mut first_basket_item = BasketItem::new();

first_basket_item.set_id("BI101");
first_basket_item.set_name("Binocular");
first_basket_item.set_category1("Collectibles");
first_basket_item.set_category2("Accessories");
first_basket_item.set_item_type(BasketItemType::Physical.value());
first_basket_item.set_price(BigDecimal::from_str("0.3").unwrap());

basket_items.push(first_basket_item);

let mut second_basket_item = BasketItem::new();

second_basket_item.set_id("BI102");
second_basket_item.set_name("Game code");
second_basket_item.set_category1("Game");
second_basket_item.set_category2("Online Game Items");
second_basket_item.set_item_type(BasketItemType::Virtual.value());
second_basket_item.set_price(BigDecimal::from_str("0.5").unwrap());

basket_items.push(second_basket_item);

let mut third_basket_item = BasketItem::new();
third_basket_item.set_id("BI103");
third_basket_item.set_name("Usb");
third_basket_item.set_category1("Electronics");
third_basket_item.set_category2("Usb / Cable");
third_basket_item.set_item_type(BasketItemType::Physical.value());
third_basket_item.set_price(BigDecimal::from_str("0.2").unwrap());

basket_items.push(third_basket_item);

request.set_basket_items(basket_items);


let payment = Payment::create(&request, &get_test_options()).unwrap();

请参阅 tests/sample 软件包中的其他示例。

模拟测试卡

用于模拟 成功 付款的测试卡

卡号 银行 卡类型
5890040000000016 阿克巴克 万事达卡(借记卡)
5526080000000006 阿克巴克 万事达卡(信用卡)
4766620000000001 丹尼斯银行 维萨卡(借记卡)
4603450000000000 丹尼斯银行 维萨卡(信用卡)
4729150000000005 丹尼斯银行 Bonus 维萨卡(信用卡)
4987490000000002 泛美银行 维萨卡(借记卡)
5311570000000005 泛美银行 万事达卡(信用卡)
9792020000000001 泛美银行 特洛伊(借记卡)
9792030000000000 泛美银行 特洛伊(信用卡)
5170410000000004 加兰蒂银行 万事达卡(借记卡)
5400360000000003 加兰蒂银行 万事达卡(信用卡)
374427000000003 加兰蒂银行 美国运通卡
4475050000000003 土耳其人民银行 维萨卡(借记卡)
5528790000000008 土耳其人民银行 万事达卡(信用卡)
4059030000000009 汇丰银行 维萨卡(借记卡)
5504720000000003 汇丰银行 万事达卡(信用卡)
5892830000000000 土耳其工商银行 万事达卡(借记卡)
4543590000000006 土耳其工商银行 维萨卡(信用卡)
4910050000000006 瓦基夫银行 维萨卡(借记卡)
4157920000000002 瓦基夫银行 维萨卡(信用卡)
5168880000000002 建筑和信贷银行 万事达卡(借记卡)
5451030000000000 建筑和信贷银行 万事达卡(信用卡)

跨境 测试卡

卡号 国家
4054180000000007 非土耳其(借记卡)
5400010000000004 非土耳其(信用卡)

用于获取特定 错误 代码的测试卡

卡号 描述
5406670000000009 成功但无法取消、退款或后授权
4111111111111129 资金不足
4129111111111111 不予承兑
4128111111111112 无效交易
4127111111111113 丢失的卡
4126111111111114 被盗的卡
4125111111111115 过期卡
4124111111111116 无效 cvc2
4123111111111117 不允许持卡人使用
4122111111111118 不允许终端使用
4121111111111119 欺诈嫌疑
4130111111111118 一般错误
4131111111111117 成功但 mdStatus 为 0
4141111111111115 成功但 mdStatus 为 4
4151111111111112 3dsecure 初始化失败
4151111111111393 仅限在线交易

测试

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

依赖项

~6–11MB
~237K SLoC