Shopier PHP SDK | Composer ile Dinamik Shopier Ödeme Entegrasyonu
Herkese Merhaba,
Shopier Sanal Pos Kullanımını kaldırdığı için böyle bir proje geliştirdim. Aktif olarak 6 farklı işletmenin web sitesinde sorunsuz çalışıyor.
Projeyi sizlere ücretsiz olarak sunmak istedim umarım işinize yarar. Canlıya almadan önce mutlaka test etmelisiniz.
Shopier ile herhangi bir ortaklık veya yasal iş birliği bulunmamaktadır. Legal Shopier API'ı ile karıştırılmamalı, Özel entegrasyon olduğunun farkında olarak kullanılmalıdır.
PHP projelerinde Shopier API entegrasyonunu daha düzenli, güvenli ve tekrar kullanılabilir hâle getirmek için geliştirdiğim açık kaynak Composer kütüphanesini paylaşıyorum:
Mebularts Shopier PHP SDK
GitHub Repository:
https://github.com/mebularts-dev/shopier
Bu paket; Shopier API işlemlerini düz PHP, Laravel, Symfony veya özel altyapılara bağlanmadan kullanabilmek için tasarlanmış framework bağımsız bir PHP SDK’sıdır.
Not: Paket alpha aşamasındadır. Canlı ödeme ve webhook akışlarında kullanmadan önce kendi Shopier hesabınızda test etmeniz önerilir.
Neler Sağlıyor?
- Composer ile kolay kurulum
- PHP 8.1+ desteği
- Framework bağımsız yapı
- Shopier ürün, sipariş, bakiye, iade ve webhook API işlemleri
- PAT ile API erişimi
- Webhook doğrulama ve API recheck desteği
- Typed DTO yapısı
- Merkezi exception ve hata yönetimi
- CLI ile temel sağlık ve listeleme komutları
- Dinamik Shopier ürün oluşturma
- Tek ürünlü veya çok ürünlü sepetten ödeme URL’si alma
- Mevcut e-ticaret projelerine minimum müdahale ile entegrasyon
Dinamik Shopier Ödeme Akışı
Paketin öne çıkan tarafı, mevcut e-ticaret sitenizdeki sepet bilgilerini kullanarak Shopier tarafında dinamik ürün oluşturabilmesidir.
Akış genel olarak şu şekilde ilerler:
Alıntı
- Sepette tek ürün varsa ürün adıyla ödeme ürünü oluşturabilirsiniz.
- Birden fazla ürün varsa sepet özetiyle tek bir ödeme ürünü oluşturabilirsiniz.
- Ürün, tutar, referans ve ödeme URL’sini kendi payment session yapınızda saklayabilirsiniz.
- Ödeme gerçekten doğrulanmadan siparişinizi paid durumuna almazsınız.
- Stok, e-posta, sepet temizleme, kargo ve ERP tetiklerini kendi mevcut akışınızda güvenle yönetirsiniz.
Kurulum
composer require mebularts/shopier
Temel kullanım:
<?php
require __DIR__ . '/vendor/autoload.php';
use Mebularts\Shopier\Shopier;
$shopier = Shopier::fromEnv();
$balance = $shopier->balance()->get();
foreach ($balance->items as $item) {
echo $item->currency . ': ' . $item->amount . PHP_EOL;
}Dinamik Checkout Örneği
use Mebularts\Shopier\Checkout\CartItemData;
use Mebularts\Shopier\Checkout\DynamicProductCheckoutRequest;
use Mebularts\Shopier\Support\Money;
$result = $shopier->checkout()->createDynamicProduct(
new DynamicProductCheckoutRequest(
reference: 'ORD-EXAMPLE-1001',
total: Money::from('1299.90', 'TRY'),
items: [
new CartItemData(
title: 'Sample T-Shirt',
quantity: 1,
unitPrice: Money::from('1299.90', 'TRY'),
variant: 'Black / XL',
imageUrl: 'https://example.com/products/sample-tshirt.jpg'
),
],
defaultImageUrl: 'https://example.com/assets/default-product.jpg'
)
);
// Bu bilgileri kendi payment session yapınızda saklayabilirsiniz:
// $result->productId
// $result->redirectUrl
// $result->expectedAmount
// $result->expectedCurrency
header('Location: ' . $result->redirectUrl, true, 303);
exit;Dinamik ürünün oluşturulması ödeme alındığı anlamına gelmez. Ödeme sonucu webhook veya API recheck üzerinden doğrulanmalıdır.
Webhook ve Ödeme Doğrulama
Webhook geldiğinde paket; uygun yapılandırmada imza doğrulaması veya Shopier API recheck üzerinden güvenli bir sonuç üretir.
$result = $shopier->webhooks()->receive(
rawBody: file_get_contents('php://input') ?: '',
headers: function_exists('getallheaders') ? getallheaders() : [],
);
if ($result->isVerified() && $result->isPaid()) {
// Tutar, currency, ürün ID ve sipariş referansını kontrol edin.
// Ardından kendi merkezi paid handler akışınızı çalıştırın.
}
http_response_code(200);Paket kendi başına sizin veritabanınıza yazmaz, stok düşmez veya e-posta göndermez. Bu akış kurulumunu kendi projenize uygun şekilde uyarlamalısınız.Kimler İçin Uygun?
- Düz PHP ile çalışan e-ticaret projeleri
- Laravel / Symfony projeleri
- Hazır e-ticaret scriptleri
- Özel checkout veya ödeme akışı kullanan siteler
- Legacy Shopier form/callback yapısından daha düzenli bir API katmanına geçmek isteyen geliştiriciler
- Shopier ödeme akışını kendi sipariş sistemine bağlamak isteyen ajanslar ve yazılımcılar
Güvenlik Yaklaşımı
- Return URL tek başına ödeme kanıtı kabul edilmez.
- Webhook veya API doğrulaması olmadan local sipariş paid yapılmaz.
- Token, webhook secret ve müşteri verileri loglara yazdırılmamalıdır.
- Aynı ödeme bildiriminin stok, mail veya kargo işlemlerini ikinci kez tetiklemesi engellenmelidir.
- Ödeme doğrulamasında tutar, para birimi, ürün ID ve sipariş referansı eşleştirilmelidir.
Açık Kaynak ve Bağımsız Proje
Bu paket ücretsiz ve açık kaynak olarak geliştirilmektedir.
Mebularts Shopier PHP SDK, Shopier ile resmi ortaklık veya temsilcilik iddiası taşımaz. Bağımsız bir topluluk kütüphanesi olarak geliştirilmiştir.
GitHub:
https://github.com/mebularts-dev/shopier
Yıldız vermeniz, issue açmanız, geri bildirim paylaşmanız ve katkı sağlamanız projenin gelişmesine yardımcı olur.
Ücretli Kurulum ve Entegrasyon Desteği
Paket ücretsizdir; ancak mevcut projeye özel kurulum, legacy geçişi, dinamik checkout akışı, webhook kurulumu, ödeme session yapısı, sipariş eşleştirme veya özel ödeme senaryoları için ücretli teknik destek alabilirsiniz.
İletişim:
- Web: https://www.mebularts.com.tr
- Telegram: https://t.me/mebularts
- WhatsApp: https://wa.me/12513160268