iyzipay-php

iyzipay-php

Build Status Latest Stable Version Coverage Status

You can sign up for an iyzico account at https://iyzico.com

Requirements

PHP 5.3 and later.

Note

Minimum TLS v1.2 will be supported after March 2018. Please upgrade your openssl version to minimum 1.0.1. If you have any questions, please open an issue on Github or contact us at integration@iyzico.com.

Installation

Composer

You can install the bindings via Composer. Run the following command:

composer require iyzico/iyzipay-php

To use the bindings, use Composer’s autoload:

require_once('vendor/autoload.php');

Manual Installation

If you do not wish to use Composer, you can download the latest release. Then, to use the bindings, include the IyzipayBootstrap.php file.

require_once('/path/to/iyzipay-php/IyzipayBootstrap.php');

Usage

$options = new \Iyzipay\Options();
$options->setApiKey("your api key");
$options->setSecretKey("your secret key");
$options->setBaseUrl("https://sandbox-api.iyzipay.com");
        
$request = new \Iyzipay\Request\CreatePaymentRequest();
$request->setLocale(\Iyzipay\Model\Locale::TR);
$request->setConversationId("123456789");
$request->setPrice("1");
$request->setPaidPrice("1.2");
$request->setCurrency(\Iyzipay\Model\Currency::TL);
$request->setInstallment(1);
$request->setBasketId("B67832");
$request->setPaymentChannel(\Iyzipay\Model\PaymentChannel::WEB);
$request->setPaymentGroup(\Iyzipay\Model\PaymentGroup::PRODUCT);

$paymentCard = new \Iyzipay\Model\PaymentCard();
$paymentCard->setCardHolderName("John Doe");
$paymentCard->setCardNumber("5528790000000008");
$paymentCard->setExpireMonth("12");
$paymentCard->setExpireYear("2030");
$paymentCard->setCvc("123");
$paymentCard->setRegisterCard(0);
$request->setPaymentCard($paymentCard);

$buyer = new \Iyzipay\Model\Buyer();
$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->setBuyer($buyer);

$shippingAddress = new \Iyzipay\Model\Address();
$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);

$billingAddress = new \Iyzipay\Model\Address();
$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);

$basketItems = array();
$firstBasketItem = new \Iyzipay\Model\BasketItem();
$firstBasketItem->setId("BI101");
$firstBasketItem->setName("Binocular");
$firstBasketItem->setCategory1("Collectibles");
$firstBasketItem->setCategory2("Accessories");
$firstBasketItem->setItemType(\Iyzipay\Model\BasketItemType::PHYSICAL);
$firstBasketItem->setPrice("0.3");
$basketItems[0] = $firstBasketItem;

$secondBasketItem = new \Iyzipay\Model\BasketItem();
$secondBasketItem->setId("BI102");
$secondBasketItem->setName("Game code");
$secondBasketItem->setCategory1("Game");
$secondBasketItem->setCategory2("Online Game Items");
$secondBasketItem->setItemType(\Iyzipay\Model\BasketItemType::VIRTUAL);
$secondBasketItem->setPrice("0.5");
$basketItems[1] = $secondBasketItem;

$thirdBasketItem = new \Iyzipay\Model\BasketItem();
$thirdBasketItem->setId("BI103");
$thirdBasketItem->setName("Usb");
$thirdBasketItem->setCategory1("Electronics");
$thirdBasketItem->setCategory2("Usb / Cable");
$thirdBasketItem->setItemType(\Iyzipay\Model\BasketItemType::PHYSICAL);
$thirdBasketItem->setPrice("0.2");
$basketItems[2] = $thirdBasketItem;
$request->setBasketItems($basketItems);

$payment = \Iyzipay\Model\Payment::create($request, $options);

See other samples under samples directory.

Development

Install dependencies:

composer install

Mock test cards

Test cards that can be used to simulate a successful payment:

Card NumberBankCard Type
5890040000000016AkbankMaster Card (Debit)
5526080000000006AkbankMaster Card (Credit)
4766620000000001DenizbankVisa (Debit)
4603450000000000DenizbankVisa (Credit)
4729150000000005Denizbank BonusVisa (Credit)
4987490000000002FinansbankVisa (Debit)
5311570000000005FinansbankMaster Card (Credit)
9792020000000001FinansbankTroy (Debit)
9792030000000000FinansbankTroy (Credit)
5170410000000004Garanti BankasıMaster Card (Debit)
5400360000000003Garanti BankasıMaster Card (Credit)
374427000000003Garanti BankasıAmerican Express
4475050000000003HalkbankVisa (Debit)
5528790000000008HalkbankMaster Card (Credit)
4059030000000009HSBC BankVisa (Debit)
5504720000000003HSBC BankMaster Card (Credit)
5892830000000000Türkiye İş BankasıMaster Card (Debit)
4543590000000006Türkiye İş BankasıVisa (Credit)
4910050000000006VakıfbankVisa (Debit)
4157920000000002VakıfbankVisa (Credit)
5168880000000002Yapı ve Kredi BankasıMaster Card (Debit)
5451030000000000Yapı ve Kredi BankasıMaster Card (Credit)

Cross border test cards:

Card NumberCountry
4054180000000007Non-Turkish (Debit)
5400010000000004Non-Turkish (Credit)
6221060000000004Iran

Test cards to get specific error codes:

Card NumberDescription
5406670000000009Success but cannot be cancelled, refund or post auth
4111111111111129Not sufficient funds
4129111111111111Do not honour
4128111111111112Invalid transaction
4127111111111113Lost card
4126111111111114Stolen card
4125111111111115Expired card
4124111111111116Invalid cvc2
4123111111111117Not permitted to card holder
4122111111111118Not permitted to terminal
4121111111111119Fraud suspect
4120111111111110Pickup card
4130111111111118General error
4131111111111117Success but mdStatus is 0
4141111111111115Success but mdStatus is 4
41511111111111123dsecure initialize failed

Mock APM Accounts

Mock APM Accounts that can be used to simulate a payment with alternative payment method:

Account Holder NameDescription
successSucceeded payment after succeeded initialize
fail-after-initFailed payment after succeeded initialize
errorFailed initialize

Testing

Install dependencies as mentioned above (which will resolve PHPUnit), then you can run the test suite:

./vendor/bin/phpunit

Or to run an individual test file:

./vendor/bin/phpunit tests/Iyzipay/Tests/Model/PaymentTest.php