erkineren / shopier
Shopier Entegrasyon - Php Api Sdk
Fund package maintenance!
Patreon
Installs: 3 391
Dependents: 0
Suggesters: 0
Security: 0
Stars: 50
Watchers: 3
Forks: 7
Open Issues: 0
Requires
- ext-json: *
Requires (Dev)
- vlucas/phpdotenv: ^4.1
This package is auto-updated.
Last update: 2024-04-05 10:55:39 UTC
README
Yazdığınız özel yazılımlarınıza Shopier ile Ödeme Alma metodu ekleyebilirsiniz.
Shopier Api Entegrasyonu ile çok kolay bir şekilde entegrasyon sağlayın.
Installation (Kurulum)
composer require erkineren/shopier
Usage (Kullanım)
<?php // example/index.php use Shopier\Enums\ProductType; use Shopier\Enums\WebsiteIndex; use Shopier\Exceptions\NotRendererClassException; use Shopier\Exceptions\RendererClassNotFoundException; use Shopier\Exceptions\RequiredParameterException; use Shopier\Models\Address; use Shopier\Models\Buyer; use Shopier\Renderers\AutoSubmitFormRenderer; use Shopier\Renderers\IframeRenderer; use Shopier\Renderers\ShopierButtonRenderer; use Shopier\Shopier; require_once __DIR__ . '/bootstrap.php'; $shopier = new Shopier(getenv('SHOPIER_API_KEY'), getenv('SHOPIER_API_SECRET')); // Satın alan kişi bilgileri $buyer = new Buyer([ 'id' => 101, 'name' => 'Erkin', 'surname' => 'Eren', 'email' => 'eren@erkin.net', 'phone' => '8503023601' ]); // Fatura ve kargo adresi birlikte tanımlama // Ayrı ayrı da tanımlanabilir $address = new Address([ 'address' => 'Kızılay Mh.', 'city' => 'Ankara', 'country' => 'Turkey', 'postcode' => '06100', ]); // shopier parametrelerini al $params = $shopier->getParams(); // Geri dönüş sitesini ayarla $params->setWebsiteIndex(WebsiteIndex::SITE_1); // Satın alan kişi bilgisini ekle $params->setBuyer($buyer); // Fatura ve kargo adresini aynı şekilde ekle $params->setAddress($address); // Sipariş numarası ve sipariş tutarını ekle $params->setOrderData('52003', '1.0'); // Sipariş edilen ürünü ekle $params->setProductData('Test Product', ProductType::DOWNLOADABLE_VIRTUAL); try { /** * Shopier İle Güvenli Öde şeklinde butona tıklanınca ödeme sayfasına yönlendiren renderer */ $renderer = new ShopierButtonRenderer($shopier); $renderer ->setName('Shopier ile Güvenli Öde'); /** * Otomatik ödeme sayfasına yönlendiren renderer */ $renderer = new AutoSubmitFormRenderer($shopier); /** * Otomatik ödeme sayfasına iframe olarak yönlendiren renderer */ $renderer = new IframeRenderer($shopier); $renderer ->setWidth(600) ->setHeight(750) ->setCenter(true); $shopier->goWith($renderer); } catch (RequiredParameterException $e) { // Zorunlu parametrelerden bir ve daha fazlası eksik } catch (NotRendererClassException $e) { // $shopier->createRenderer(...) metodunda verilen class adı AbstractRenderer sınıfından türetilmemiş ! } catch (RendererClassNotFoundException $e) { // $shopier->createRenderer(...) metodunda verilen class bulunamadı ! }
Renderer (Ödeme sayfasına yönlendirme yöntemleri)
Kütüphane içerisinde 3 adet Renderer vardır.
- ShopierButtonRenderer: Butona tıklanınca ödeme sayfasına gider. Shopier stilinde buton.
- AutoSubmitFormRenderer: Direk ödeme sayfasına gider.
- IframeRenderer: Iframe içerisinde direk ödeme sayfasına gider. (Siteden ayrılmadan pop-up yöntemler için)
ShopierButtonRenderer: Butona tıklanınca ödeme sayfasına gider. Shopier stilinde buton.
use Shopier\Renderers\ShopierButtonRenderer; $renderer = new ShopierButtonRenderer($shopier); $renderer ->setName('Shopier ile Güvenli Öde'); $shopier->goWith($renderer);
AutoSubmitFormRenderer: Sayfa açıldığı gibi direk ödeme sayfasına gider.
use Shopier\Renderers\AutoSubmitFormRenderer; $renderer = new AutoSubmitFormRenderer($shopier); $shopier->goWith($renderer);
IframeRenderer: Sayfa açıldığı gibi ödeme sayfasına gider.
use Shopier\Renderers\IframeRenderer; $renderer = new IframeRenderer($shopier); $renderer ->setWidth(600) ->setHeight(750) ->setCenter(true); $shopier->goWith($renderer);
Custom Renderer (Özel Yönlendirme Şekli Ekleme)
- Kendi rendererlarınızı oluşturmak için
AbstractRenderer
sınıfından yeni bir sınıf türeterekrender
metodu içerisine kendi yönlendirme uygulamanızı yazabilirsiniz veyaButtonRenderer
sınıfını kullanarak kendi butonlarınızı tasarlayabilirsiniz.
use Shopier\Renderers\ButtonRenderer; $renderer = $shopier->createRenderer(ButtonRenderer::class); $renderer ->withStyle("padding:15px; color: #fff; background-color:#51cbb0; border:1px solid #fff; border-radius:7px") ->withText('Shopier İle Güvenli Öde'); $shopier->goWith($renderer);
Verify Payment Response (Ödeme Sayfasından Dönen Verileri Kontrol Etme)
Ödeme sonrası dönüş url'nizdeki sayfa içerisinde (callback/return page) aşağıdaki gösterildiği gibi kontrol yapabilirsiniz.
<?php // example/return_url_page.php use Shopier\Models\ShopierResponse; require_once __DIR__ . '/bootstrap.php'; // $_POST içerisinde aşağıdaki şekilde veriler gelir //[ // 'platform_order_id' => '10002', // 'API_key' => '*****', // 'status' => 'success', // 'installment' => '0', // 'payment_id' => '954344654', // 'random_nr' => '123456', // 'signature' => 'f3EjDlXoPICsKssHT9iv/5ddCXIwk1ZcItlYXDqyYHrNso=', //]; $shopierResponse = ShopierResponse::fromPostData(); if (!$shopierResponse->hasValidSignature(getenv('SHOPIER_API_SECRET'))) { // TODO: Ödeme başarılı değil, hata mesajı göster die('Ödemeniz alınamadı'); } /* * * Ödeme başarıyla gerçekleşti. Ödeme sonrası işlemleri uygula * */ print_r($shopierResponse->toArray());
// $response_data dizisi aşağıdaki şekildedir
// Ödeme sonrasında Shopier tarafından sizin return_url'nize post edilen veridir.
Array
(
[platform_order_id] => 20002
[API_key] => *******************************
[status] => success
[installment] => 0
[payment_id] => 446549593
[random_nr] => 528061
[signature] => +e1klzFG7ZABS16xnHcZ8peqbvSZD3Pv9NU4pWiw0qE=
)
Parameter Initialize Methods (Parametre Ekleme Yöntemleri)
ShopierParams
, Buyer
ve Address
sınıfları BaseModel
sınıfında türemektedir.
ShippingAddress
ve BillingAddress
sınıfları Address
sınıfından türemektedir.
$params->setBuyer(Buyer::fromArray([...])); $params->setBillingAddress(new Address([...])); $params->setShippingAddress(new ShippingAddress([...]));
BaseModel içerisinde kullanılabilecek kullanışlı metotlar vardır:
public function __construct(array $values = []) public static function fromArray(array $properties) public function toArray() public function toJson()
Enums
Kütüphane içerisinde 4 adet enum sınıf bulunmaktadır.
- Curreny
Currency::TL Currency::USD Currency::EUR
- Language
Language::TR Language::EN
- ProductType
ProductType::REAL ProductType::DOWNLOADABLE_VIRTUAL ProductType::DEFAULT_TYPE
- WebsiteIndex
WebsiteIndex::SITE_1 WebsiteIndex::SITE_2 WebsiteIndex::SITE_3 WebsiteIndex::SITE_4 WebsiteIndex::SITE_5
Exceptions
- NotRendererClassException:
createRender()
metodu içerisinde gönderilen sınıf AbstractRenderer sınıfından türememiş - RendererClassNotFoundException: `createRender()`` metodu içerisinde gönderilen sınıf bulunamadı
- RequiredParameterException:
ShopierParams
sınıfındaki zorunlu propertylerden bir veya birkaçı boş
Support (Destek)
Entegrasyon talepleriniz için tıklayınız.
Email: hello@erkin.net