Arka Plan
Arka Plan
Mevcut projem, birden fazla ödeme geçidini tek bir arayüz üzerinden yönetmek için Omnipay kütüphanesini kullanıyor. Başlangıçta, Omnipay sürücüsü olan bir sağlayıcı ile devam etmeyi planladım. Ancak entegrasyon sürecinin ortasında Creem’e geçtim. Proje zaten Omnipay ile yapılandırıldığından, bir sürücü yazdım: romansh/omnipay-creem.
Omnipay, ödeme geçitlerini bir satırlık kod ile değiştirmek gerektiğinde iyi bir seçenektir. Ancak, en düşük ortak payda soyutlamasıdır: purchase() ve completePurchase() ile sınırlıdır; diğer her şeyi (webhook yönlendirme, etkinlik dağıtımı, konfigürasyon yönetimi, tekrar deneme mantığı) kendiniz inşa etmelisiniz.
Bir noktada Creem’in resmi bir Laravel SDK’sı için geliştirici ödülü sunduğunu keşfettim. API’siyle zaten çalıştığım için, eksiklikleri hissediyordum ve bunun doğru bir şekilde inşa edilmesine karar verdim: kutudan çıkar çıkmaz tüm muşamba işlerini halleden Laravel-native bir paket. Böyle bir paket, başlangıçta olsaydı, muhtemelen Omnipay sürücüsünü yazmak yerine onu kullanırdım.
Açıklama: Bu makale aynı zamanda o ödülün bir parçasıdır. Ancak, paketler gerçek bir eksikliği dolduruyor ve bunu yazardım.
Tipik Ödeme Entegrasyonlarının Sorunları
Tipik Ödeme Entegrasyonlarının Sorunları
Çoğu ödeme entegrasyonu, her uygulama için bir API anahtarı etrafında inşa edilmiştir. Bu, aşağıdaki ihtiyaçlar ortaya çıktığında işler:
- Çoklu kiracılık: her kiracının kendi faturalama hesabı olması
- Birden Fazla Mağaza: farklı ürünler veya markalar için ayrı Creem hesapları
- Staging ile Production: ortam başına
.envdosyasını değiştirmeden - Bölüm Faturalama: aynı uygulama içinde izole faturalama
Neler Yaptım
Neler Yaptım
romansh/laravel-creem, Laravel-native desenlerle tam özellikli bir SDK’dır.
İçinde neler var:
- Tam API kapsama alanı: Ürünler, Ödemeler, Müşteriler, Abonelikler, İşlemler, Lisanslar, İndirim Kodları
- Çoklu profil yapılandırması: her istekte API anahtarlarını değiştirme
Creem::profile('store_b')veyaCreem::withConfig([...])ile çevrimiçi geçersiz kılma - Webhooks doğru bir şekilde: otomatik kayıtlı rotalar, HMAC imza doğrulaması, yazılı Laravel etkinlikleri dahil
GrantAccess/RevokeAccess - Artisan araçları:
php artisan creem:test-webhook checkout.completedgerçek API’yi vurmadan yerel test için - Laravel 10 / 11 / 12, PHP 8.1-8.4
- İyi test edilmiş: birim + özellik testleri, PSR-12, tam PHPDoc
Ödeme Oluşturma
Ödeme Oluşturma
use Romansh\LaravelCreem\Facades\Creem;
$checkout = Creem::checkouts()->create([
'product_id' => ,
=> route(),
=> [=> $user->email],
]);
return redirect($checkout[]);
Çoklu Profil Uygulaması
Çoklu Profil Uygulaması
// Ürün hattı başına farklı bir Creem hesabı kullanın
$txns = Creem::profile()->transactions()->list();
Webhook Dinleyicisi: Ödeme Üzerinden Erişim Verme
Webhook Dinleyicisi: Ödeme Üzerinden Erişim Verme
Event::listen(GrantAccess::class, function (GrantAccess $e) {
$user = User::where(, $e->customer[])->first();
$user?->update([=> , => now()]);
});
Hızlı Başlangıç
Hızlı Başlangıç
composer require romansh/laravel-creem
php artisan vendor:publish --tag=creem-config
API anahtarınızı CREEM_API_KEY ve CREEM_WEBHOOK_SECRET olarak .env dosyasına ekleyin ve işiniz hazır.
Etkileşimli Demo Uygulaması
Etkileşimli Demo Uygulaması
Ayrıca romansh/laravel-creem-demo adında, her özelliği bir web arayüzü üzerinden keşfetmek için inşa edilmiş tam çalışan bir uygulama bulunmaktadır: tarayıcıda API anahtarlarını yapılandırın, ürünler oluşturun, ödemeleri tetikleyin, abonelikleri yönetin ve webhook olaylarını gerçek zamanlı olarak izleyin.
composer create-project romansh/laravel-creem-demo my-creem-app
cd my-creem-app && docker-compose up -d
Docker kurulumu, webhook’ların yerel olarak çalışması için isteğe bağlı bir Cloudflare Tüneli içerir.
Ekran Görüntüleri
Ekran Görüntüleri

API Kurulumu: kimlik bilgileri, webhook URL’si, profil sekmeleri

Webhooks ve Erişim: canlı etkinlik günlüğü, gerçek zamanlı GrantAccess/RevokeAccess

İşlemler: ödeme geçmişi, tutar ve müşteri e-postası

İndirimler: yüzdelik/benzer sabit indirim kodları oluşturma

Abonelikler: tekrarlayan planlarla faturalama süreleri

Tek Seferlik Ödemeler: ürün ön izleme penceresi, ödeme akışı
Bağlantılar
Bağlantılar
Geri bildirim ve sorunlar GitHub veya aşağıdaki yorumlarda memnuniyetle karşılanır. Bu paketlerden birini kullanıyorsanız, nasıl sonuçlandığını duymaktan memnuniyet duyarım.
Kaynak: Orijinal Makale


