Merhabalar,
Kısa bir süre önce geliştirmeye başlamış olduğum çoklu ödeme sistemi kütüphanesini tanıtmak istiyorum.
Şuanlık sadece PayTR, Iyzico, Shopier entegresi gerçekleştirmiş bulunmaktayım en kısa sürede diğer ödeme firmalarınıda dahil edeceğim.
Şuanlık Test sürecindedir, neler eklenebilir bununla ilgili yorumda bulunursanız sevinirim.
https://github.com/mirarus/virtual-pos
Kolaylıkları;
- Birden çok ödeme altyapısını tek bir çatı altına toplayıp derli toplu kontrol edebilmek.
- Kolay bir şekilde callback ve iframe api entegresi.
Kurulum;
Ödeme Başlatma;
<?php
// composer require mirarus/virtual-pos
require "vendor/autoload.php";
use MirarusVirtualPosEnumsLocale;
use MirarusVirtualPosEnumsCurrency;
use MirarusVirtualPosEnumsBasketItemType;
use MirarusVirtualPosModelsBasket;
use MirarusVirtualPosModelsBasketItem;
use MirarusVirtualPosModelsOrder;
use MirarusVirtualPosModelsBuyer;
use MirarusVirtualPosModelsAddress;
use MirarusVirtualPosVirtualPos;
use MirarusVirtualPosProvidersPayTR;
use MirarusVirtualPosProvidersIyzico;
use MirarusVirtualPosProvidersShopier;
// PayTR için
$PayTR = new PayTR();
$PayTR->setApiId("--api-id--");
$PayTR->setApiKey("--api-key--");
$PayTR->setApiSecret("--api-secret--");
$PayTR->setApiSandbox(true);
$PayTR->setApiDebug(true);
$PayTR->setApiSuccessfulUrl("http://localhost/pay-success");
$PayTR->setApiFailedUrl("http://localhost/pay-failed");
// Iyzico için
$Iyzico = new Iyzico();
$Iyzico->setApiKey("--api-key--");
$Iyzico->setApiSecret("--api-secret--");
$Iyzico->setApiSandbox(true);
$Iyzico->setApiReturnUrl("http://localhost/pay-callback");
// Shopier için
$Shopier = new Shopier();
$Shopier->setApiKey("--api-key--");
$Shopier->setApiSecret("--api-secret--");
$Shopier->setWebSiteIndex(1);
$Shopier->setApiReturnUrl("http://localhost/pay-callback");
// Ortak Kullanım - Müşteri Bilgileri
$buyer = new Buyer();
$buyer->setId(1);
$buyer->setName("John Doe");
$buyer->setSurname("Smith");
$buyer->setEmail("john@doe.com");
$buyer->setPhone("905000000000");
$buyer->setIdentityNumber("11111111111");
// Ortak Kullanım - Müşteri Adres Bilgileri
$address = new Address();
$address->setAddress("... Mah. ... Sok. No: ...");
$address->setState("Keçiören");
$address->setCity("Ankara");
$address->setCountry("Turkey");
$address->setZipCode("06000");
// setInstallment Harici, Ortak Kullanım - Sipariş Bilgileri
$order = new Order();
$order->setId(10000);
$order->setPrice(10);
$order->setLocale(Locale::TR);
$order->setCurrency(Currency::TL);
$order->setInstallment(1); // Taksit Sayısı (PayTR için)
$order->setInstallments([1]); // Taksit Sayıları (Iyzico için)
// Ortak Kullanım - Sepet İçeriği
$basketItem = new BasketItem();
$basketItem->setId(1);
$basketItem->setName("Ayakkabı");
$basketItem->setPrice("10.30");
$basketItem->setQuantity(1);
$basketItem->setCategory("Giyim");
$basketItem->setType(BasketItemType::PHYSICAL);
// Ortak Kullanım - Sepet Bilgileri
$basket = new Basket();
$basket->setBasketItem($basketItem); // Sepet İçeriği (Shopier için ilk tanımlanan basketItem geçerli olacaktır)
// Sınıf Başlatma
$virtualPos = new VirtualPos();
$virtualPos->setProvider($PayTR); // $PayTR, $Iyzico veya $Shopier
$virtualPos->setBuyer($buyer);
$virtualPos->setAddress($address);
$virtualPos->setOrder($order);
$virtualPos->setBasket($basket);
// Ödeme Formu Oluştur
echo $virtualPos->createPaymentForm();Geri Dönüş Bildirimi / Callback;
require "vendor/autoload.php";
use MirarusVirtualPosVirtualPos;
use MirarusVirtualPosProvidersPayTR;
require "vendor/autoload.php";
use MirarusVirtualPosVirtualPos;
use MirarusVirtualPosProvidersPayTR;
use MirarusVirtualPosProvidersIyzico;
use MirarusVirtualPosProvidersShopier;
// PayTR için
$PayTR = new PayTR();
$PayTR->setApiKey("--api-key--");
$PayTR->setApiSecret("--api-secret--");
// Iyzico için
$Iyzico = new Iyzico();
$Iyzico->setApiKey("--api-key--");
$Iyzico->setApiSecret("--api-secret--");
$Iyzico->setApiSandbox(true);
// Shopier için
$Shopier = new Shopier();
$Shopier->setApiSecret("--api-secret--");
// Sınıf Başlatma
$virtualPos = new VirtualPos();
$virtualPos->setProvider($PayTR); // $PayTR, $Iyzico veya $Shopier
// CallBack İşlemi - DB İşlemleri vs. yapılabilir, Return Gönderilemez
$createCallback = $virtualPos->createCallback(function($data) {
// data: [orderId, status, paymentData]
// PayTR callback tarafında gönderilmesi istenen OK ifadesi dahili olarak aktarılmaktadır.
print_r($data);
// CallBack Proccess
});