WebBlocks Commerce Operatör Kılavuzu

Bu kılavuzda WebBlocks Commerce'in nasıl kurulacağı, yapılandırılacağı ve test edileceği açıklanmaktadır. Eklenti, oturum destekli genel alışveriş sepetini, müşteri ve teslimat adresi koleksiyonunu, ödemesiz test siparişi modunu, PayPal veya SumUp aracılığıyla çok satırlı barındırılan ödemeyi, ürün ve salt okunur sipariş yöneticisini, salt okunur şifreli sağlayıcı ayarlarını, gizli güvenli tanılamayı, genel ürün sayfalarını ve eklentiye ait Commerce Satın Alma Düğmesi bloğunu destekler. Ödeme kartı verileri, seçilen sağlayıcının barındırılan ödeme yüzeyinde kalır.

Store sahipleri görev odaklı başlamalıdır SumUp Hızlı Başlangıç. Bu operatör kılavuzu tekniktir mimari, API'ler, doğrulama ve gelişmiş sorun giderme için referans.

Eklenti, diğer katalog eklentileriyle birlikte kendi deposu olan webblocks-commerce-plugin'de geliştirilmiştir. Manuel olarak yüklenen bir eklenti paketi olarak kalır ve CMS çekirdeğine taşınmamalıdır.

Gereksinimleri

Belgelenen paket sürümü: 0.14.0. WebBlocks CMS ^1.61.0; PHP >=8.3.

PHP ext-intl, para birimi biçimlendirmesi için hem web hem de CLI çalışma zamanlarında gereklidir.

Mevcut Kullanıcı Akışı

  1. A CMS operatörü WebBlocks Commerce'i yükler ve etkinleştirir.
  2. Operatör, eklenti geçişlerini eklenti ayrıntı ekranından çalıştırır.
  3. Operatör PayPal, SumUp veya Test order (no payment)'yi ve Commerce Settings cinsinden uyumlu bir varsayılan para birimini seçer. Gerçek sağlayıcılar kimlik bilgilerini gerektirir; barındırma tarafından yönetilen ortam değerleri bunun yerine geçersiz kılma olarak kullanılabilir.
  4. Operatör, ödeme ve webhook hazırlığını onaylamak için Commerce Settings'yi açar.
  5. Operatör bir ticari ürün oluşturur.
  6. Ürün ayrıntıları ekranı genel satın alma URL'sini gösterir.
  7. Operatör bir sayfaya Commerce Buy Button bloğu ekler ve ürünü seçer.
  8. Blok, ürünü /plugins/webblocks-commerce/cart'ye ekler; ziyaretçi miktarları günceller ve gerekli iletişim ve teslimat ayrıntılarını girer.
  9. Test siparişi modunda Commerce, bekleyen ödenmemiş bir siparişi kaydeder ve bir sağlayıcıyla iletişime geçmeden doğrudan sipariş durumu sayfasına döner.
  10. PayPal veya SumUp ile ziyaretçi, seçilen sağlayıcının barındırılan sayfasında ödemeyi onaylar ve siteye geri döner.
  11. Gerçek sağlayıcı siparişleri, sağlayıcı tarafından doğrulanmış bir webhook ödemeyi onaylayana kadar beklemede kalır.
  12. Operatör müşteri, teslimat, öğe, vergi ve ödeme ayrıntılarını Commerce Orders altında inceler.

Eklentiyi Yükleyin

Eklenti deposundan eklenti ZIP'ini oluşturun:

composer plugin:build

Yapı, SHA-256 ile birlikte build/webblocks-commerce-{version}.zip'ye yazılmıştır.

Ardından manuel eklenti yaşam döngüsünü tamamlayın:

  1. System -> Plugins'yi açın.
  2. Oluşturulan WebBlocks Commerce ZIP dosyasını yükleyin.
  3. Eklenti ayrıntı ekranını inceleyin.
  4. Eklentiyi etkinleştirin.
  5. Eklenti Setup required rapor ediyorsa eklenti kurulumunu/geçişlerini çalıştırın.
  6. Durumun kurulum gerekliden hazıra değiştiğini doğrulayın.

Eklenti, webblocks_commerce_* tablolarına sahiptir. Eklentinin devre dışı bırakılması rotaları, menüleri, ayarları ve davranışları etkisiz hale getirir. Manuel olarak yüklenen devre dışı bırakılmış bir eklentinin kaldırılması, yüklenen paketi kaldırır ancak eklentiye ait tabloları korur.

API Otomasyonu

Güvenilir operatör araçları, CMS API belirtecinin açık eklenti, ticaret ve içerik özelliklerine sahip olması durumunda /webadmin/api aracılığıyla kurulum ve sayfa oluşturma iş akışını gerçekleştirebilir.

Eklenti yaşam döngüsü:

GET /webadmin/api/plugins
POST /webadmin/api/plugins/install
POST /webadmin/api/plugins/webblocks-commerce/enable
POST /webadmin/api/plugins/webblocks-commerce/setup
POST /webadmin/api/plugins/webblocks-commerce/disable
DELETE /webadmin/api/plugins/webblocks-commerce

Ticaret kaynakları:

GET /webadmin/api/commerce/products
POST /webadmin/api/commerce/products
PATCH /webadmin/api/commerce/products/{product}
GET /webadmin/api/commerce/orders
GET /webadmin/api/commerce/orders/{order}

Gerekli belirteç yetenekleri kasıtlı olarak bölünmüştür:

  • eklenti yaşam döngüsü: plugins.read, plugins.install, plugins.manage, plugins.setup ve yalnızca gerektiğinde plugins.uninstall
  • ürün çalışması: commerce.read ve commerce.products.write
  • sipariş incelemesi: commerce.orders.read
  • sayfa yerleşimi: content.validate ve content.apply

Satın alma düğmesi eklemek için API akışı:

  1. webblocks-commerce'yi kurun, etkinleştirin ve kurun.
  2. POST /webadmin/api/commerce/products ile aktif bir ürün oluşturun.
  3. GET /webadmin/api/block-types veya GET /webadmin/api/content-contract'yi okuyun.
  4. İçerik doğrulama/uygulama yoluyla bir webblocks-commerce-buy-button bloğu ekleyin.
  5. settings.commerce_product_id'yi Commerce API'nin döndürdüğü ürün kimliğine ayarlayın.

Ticari Satın Alma Düğmesi bloğu eklentiye aittir. Eklenti devre dışı bırakıldığında blok keşfinden gizlenir ve içerik doğrulama/uygulama eksik, bilinmeyen veya etkin olmayan ürün kimliklerini reddeder. Herkese açık oluşturucusu, eklentinin sahip olduğu sepete gönderi gönderir; Güvenilir HTML bloğu gerekli değildir. API, kart verilerini toplamaz; ziyaretçiler, yapılandırılmış PayPal veya SumUp tarafından barındırılan ödeme sayfasında ödemeyi tamamlarlar.

PayPal Yapılandırması

WebBlocks Commerce, PayPal REST API'lerini kullanır. PayPal, REST API'lerinin OAuth 2.0 erişim belirteçlerini kullandığını ve API çağrılarının, bir erişim belirteci karşılığında istemci kimliğini ve istemci sırrını değiştirdiğini belgeler. İstemci sırrını gizli tutun ve asla CMS içeriğine, doküman sayfalarına, ekran görüntülerine veya destek günlüklerine yapıştırmayın.

Resmi PayPal referansları:

Commerce Settings'yi açın, PayPal'yi seçin, Sandbox'yi seçin ve müşteri kimliğini, müşteri sırrını girin, ve web kancası kimliği. Alanlar salt yazılır: kaydedilen değerler eklenti ayarları tablosunda şifrelenir ve hiçbir zaman tarayıcıya geri dönüştürülmez. Bir alanı boş bırakmak, o alanın geçerli değerini korur; kaldırmak için açık temizleme onay kutusunu kullanın.

Barındırma tarafından yönetilen yapılandırma için aşağıdaki ortam değişkenleri desteklenmeye devam eder ve şifrelenmiş yönetici ayarlarına göre öncelik:

WEBBLOCKS_COMMERCE_GATEWAY=paypal
WEBBLOCKS_COMMERCE_PAYPAL_MODE=sandbox
WEBBLOCKS_COMMERCE_PAYPAL_CLIENT_ID=your-paypal-client-id
WEBBLOCKS_COMMERCE_PAYPAL_CLIENT_SECRET=your-paypal-client-secret
WEBBLOCKS_COMMERCE_PAYPAL_WEBHOOK_ID=your-paypal-webhook-id

WEBBLOCKS_COMMERCE_PAYPAL_MODE=live'yi yalnızca korumalı alan kontrolü ve web kancası doğrulaması test edildikten sonra kullanın.

PayPal Korumalı Alan Kurulumu

PayPal Geliştirici Kontrol Panelinde:

  1. Open Apps & Credentials.
  2. Varsayılan REST API uygulamasını kullanın veya yeni bir uygulama oluşturun.
  3. Korumalı alan istemci kimliğini ve istemci sırrını güvenli Ticaret Ayarları formuna (veya barındırma tarafından yönetilen geçersiz kılmaları kullanırken yükleme ortamına) kopyalayın.
  4. Uygulama web kancası ayarlarını oluşturun veya açın.
  5. Bu web kancası URL'sini ekleyin:
https://your-site.example/plugins/webblocks-commerce/webhooks/paypal
  1. En az şuraya abone olun:
CHECKOUT.ORDER.APPROVED
PAYMENT.CAPTURE.COMPLETED
  1. PayPal web kancası kimliğini Ticaret Ayarları formuna (veya ortam geçersiz kılma kullanıldığında WEBBLOCKS_COMMERCE_PAYPAL_WEBHOOK_ID) kopyalayın.
  2. Ödeme testi için PayPal korumalı alan alıcı ve satıcı hesaplarını kullanın.

Yerel HTTPS tünelleri için, web kancası URL'si olarak tünel HTTPS URL'sini kullanın. Üretim için nihai genel HTTPS sitesi URL'sini kullanın.

Özet Barındırılan Ödeme Yapılandırması

SumUp Barındırılan Ödeme, kart girişini ve desteklenen cüzdan kullanıcı arayüzünü SumUp tarafından barındırılan bir sayfada tutar. entegrasyon ödeme sunucusu tarafını oluşturur ve API anahtarını hiçbir zaman tarayıcıya göstermez.

Ekrandan ekrana mağaza sahibi iş akışı için SumUp Hızlı Başlangıç. Kısa kurulum sırası şöyledir:

  1. SumUp Kontrol Paneli altında bir korumalı alan satıcısı oluşturun ve seçin Geliştirici Ayarları → Korumalı Alanlar.
  2. Sol üst Kontrol Paneli hesap alanında gösterilen korumalı alan Satıcı Kimliği'yi kopyalayın.
  3. Ayarlar → Geliştiriciler İçin → Araç Seti → API Anahtarları altında gizli bir test API anahtarı oluşturun.
  4. Ticaret Ayarlarında ağ geçidini, modu, API anahtarını ve satıcı kodunu girin ve hazır olup olmadığınızı onaylayın.
  5. Canlı kimlik bilgilerini kullanmadan önce SumUp'ın belgelenmiş korumalı alan kartıyla test edin.

Resmi Özet referansları:

Commerce Settings'de, SumUp'yi seçin, Sandbox'yi seçin ve API anahtarını ve satıcı kodunu girin. Kaydedilen kimlik bilgileri kullanımda değilken şifrelenir ve salt yazılabilir durumda kalır. Barındırma tarafından yönetilen dağıtımlar bunun yerine bu ortam değişkenlerini ayarlayın; öncelik alırlar ve eşleşen form alanlarını oluştururlar salt okunur:

WEBBLOCKS_COMMERCE_GATEWAY=sumup
WEBBLOCKS_COMMERCE_DEFAULT_CURRENCY=EUR
WEBBLOCKS_COMMERCE_SUMUP_MODE=sandbox
WEBBLOCKS_COMMERCE_SUMUP_API_KEY=your-sumup-test-api-key
WEBBLOCKS_COMMERCE_SUMUP_MERCHANT_CODE=your-sandbox-merchant-code

Seçili korumalı alan satıcısı için oluşturulan gizli API anahtarını kullanın; SumUp Genel Anahtarını kullanmayın. Bir test gizli anahtarı normalde sk_test_ ile başlar. CMS bloklarına, site ayarlarına, ekran görüntüleri, destek günlükleri veya normal sohbet. WebBlocks Commerce bu geri aramayı otomatik olarak gönderiyor her ödemeyi oluşturduğunda:

https://your-site.example/plugins/webblocks-commerce/webhooks/sumup

Bu bağdaştırıcı için SumUp Dashboard'da manuel webhook kaydı gerekli değildir. Kamu HTTPS uç noktasına yine de SumUp tarafından ulaşılabilir olmalı ve bir güvenlik duvarı tarafından engellenmemelidir, bakım sayfası, HTTP şifresi veya proxy kuralı.

SumUp, yapılandırılmış return_url'yi CHECKOUT_STATUS_CHANGED ve ödeme kimliğiyle çağırır. bu yük ödeme kanıtı olarak kabul edilmez. WebBlocks Commerce ödemeyi şuradan alır: SumUp, daha sonra kimlik, satıcı kodu, sipariş referansı, tutar, para birimi, terminal durumu, ve bir siparişi ödendi olarak işaretlemeden önce başarılı işlem. Başarısız ve süresi dolmuş durum geçişleri ayrılmış envanteri serbest bırakın. Bilinmeyen olay türleri güvenli bir şekilde göz ardı edilir.

Hazırlık Tanılaması

Açık:

/webadmin/plugins/webblocks-commerce/settings

Ayarlar ekranı salt okunur kimlik bilgileri alanları sağlar ve kasıtlı olarak yalnızca güvenli tanılamayı gösterir:

  • aktif ağ geçidi
  • varsayılan para birimi ve yapılandırma kaynağı
  • PayPal modu
  • Özetleme modu
  • istemci kimliği yapılandırılmış veya eksik
  • İstemci sırrı yapılandırılmış veya eksik
  • Web kancası kimliği yapılandırılmış veya eksik
  • ödeme hazırlığı
  • Web kancasına hazır olma
  • beklenen web kancası URL'si
  • SumUp API anahtarı ve satıcı kodu yapılandırılmış veya eksik
  • Eklenti şeması hazırlığı

Ham PayPal sırlarını, SumUp API anahtarlarını, erişim belirteçlerini, web kancası yük imzalarını veya ödeme kimlik bilgilerini görüntülememelidir. Boş kimlik bilgisi alanları mevcut şifrelenmiş değerleri korur. Açık temizleme kontrolleri depolanan değerleri kaldırırken ortam tarafından yönetilen değerler CMS'den düzenlenemez veya silinemez.

Ürün Oluştur

Açık:

/webadmin/plugins/webblocks-commerce/products

Şunlarla bir ürün oluşturun:

  • başlık
  • slug
  • açıklama
  • durum
  • fiyat tutarı
  • para birimi
  • isteğe bağlı stok miktarı
  • isteğe bağlı SKU
  • isteğe bağlı site kapsamı

Ödeme için hazır olması gerektiğinde ürün durumunu Active olarak ayarlayın. Taslak ve arşivlenmiş ürünler genel ödeme işlemini başlatmıyor.

Para Birimi Davranışı

Varsayılan para birimi diğer Ticari ayarlarla birlikte saklanır ve yeni ürünler için kullanılır. WEBBLOCKS_COMMERCE_DEFAULT_CURRENCY, isteğe bağlı bir ortam geçersiz kılma işlemi olmaya devam ediyor; mevcut olduğunda, seçici salt okunurdur. Ürün para birimi etkin ağ geçidinin desteklenen listesinden seçilir ve dahili ürün API'si aynı kuralı uygular.

Arşivlenmemiş bir ürünün hedef tarafından desteklenmeyen bir para birimi kullanması durumunda ağ geçitlerinin değiştirilmesi engellenir ağ geçidi. Karışık döviz sepetleri reddedilmeye devam ediyor. Checkout, son ağ geçidi uyumluluğunu gerçekleştirir sipariş oluşturmadan veya envanter ayırmadan önce kontrol edin.

Fiyatlar tamsayı küçük birimlerdir, ancak küçük birim kesinliği her zaman yerine para birimine özgüdür iki rakam. Genel ve yönetici görünümleri, PHP intl aracılığıyla geçerli CMS yerel ayarını kullanır NumberFormatter, böylece semboller ve ayırıcılar EUR, USD, GBP, JPY ve her biri için yerelleştirilmiştir. seçilebilir para birimi Ağ geçidi istekleri aynı hassasiyeti kullanır. PayPal'a özgü sıfır ondalık sayı HUF ve TWD gereksinimleri karşılanır.

Ek Composer bağımlılığı yoktur. PHP ext-intl bir platform gereksinimidir ve hem web sunucusu hem de CLI için etkinleştirildi. Eklenti sağlık sonucu, kullanılamadığında uyarı verir. Desteklenen kodlar resmi bilgilere dayanmaktadır PayPal para birimi referansı ve SumUp Ödeme API'si numaralandırması; tüccar ülke ve hesap kısıtlamaları yine de sağlayıcı listelerini daraltabilir.

Ürün detay ekranı, ürünün genel satın alma URL'sini gösterir:

/plugins/webblocks-commerce/products/{slug}/buy

Bir Sayfaya Satın Al Düğmesi Ekleme

AEklenti etkinleştirildikten ve kuruluma hazır hale getirildikten sonra, sayfa oluşturucu blok seçici, eklentiye ait bir Commerce Buy Button bloğunu gösterir.

Önerilen iş akışı:

  1. Sayfa oluşturucuda çizimi, portföyü veya "Çalışmalar" sayfasını açın.
  2. ACommerce Buy Button'yi istenilen yuvaya ekleyin.
  3. Etkin bir ticari ürün seçin.
  4. İsteğe bağlı olarak düğme etiketini, hizalamayı ve fiyat gösterimini değiştirin.
  5. Çevredeki içerik hazır olduğunda sayfayı yayınlayın.

Blok, seçilen ürünü şuraya ekleyen yerel bir genel form oluşturur:

/plugins/webblocks-commerce/cart

Ürün satın alma URL'si, ürün ayrıntısı bağlantıları için kullanışlı olmayı sürdürür ve sepete ekleme işlemini ortaya çıkarır. Ödeme sepetten tamamlandığı için gerekli müşteri ve teslimat alanları atlanamaz. Sepet, ürün sayfası ve ödeme durumu görünümlerinin tümü CMS'yi genişletir Etkin sitenin üstbilgi ve altbilgi yuvalarını koruyan genel düzen.

Sağlayıcı tarafından barındırılan ödeme URL'lerini CMS içeriğine yapıştırmayın. Sipariş başına oluşturulurlar ve yalnızca ödeme başlangıç akışından gelmelidirler.

Ödeme Davranışı

Ziyaretçi bir Ticaret bloğunu veya ürün sayfasını kullandığında:

  1. Eklenti kurulumu, ürün durumunu, takip edilen stoğu ve sepet para birimini kontrol eder.
  2. Ürün, oturum destekli sunucu tarafındaki sepette saklanır; hiçbir ödeme verisi toplanmaz.
  3. Ziyaretçi adını, e-posta adresini, teslimat adresini ve isteğe bağlı telefon/adres ekini sağlar.
  4. Ödeme sırasında WebBlocks Commerce, müşteri/teslimat meta verilerini, yerelleştirilmiş satır başlıklarını, fiyatları, KDV'yi ve toplamları bekleyen bir siparişte dondurur ve stokları atomik olarak ayırır.
  5. Test siparişi modunda ziyaretçi doğrudan imzalanmış durum sayfasına döner ve hiçbir ödeme sağlayıcıyla iletişime geçilmez. Aktif adaptör, PayPal veya SumUp ile barındırılan bir ödeme oluşturur ve ziyaretçiyi başka bir yere yönlendirir.
  6. İmzalı bir iade sayfası, işlemin devam ettiğini bildirebilir ancak hiçbir zaman siparişin ödendiğini işaretlemez.
  7. PayPal web kancalarının imzası doğrulanır ve onaylanmış PayPal Siparişleri alınır.
  8. SumUp durum bildirimleri, yeni bir ödeme API'sinin alınmasını ve tam sipariş/işlem eşleşmesini tetikler.
  9. Yalnızca doğrulanan sağlayıcı sonucu, siparişi ve ödeme girişimini paid/succeeded'ye taşır.

Webhook olayları, ağ geçidi ve olay kimliği tarafından depolanır, böylece tekrarlanan dağıtım aynı anda gerçekleşir.

Siparişleri İncele

Açık:

/webadmin/plugins/webblocks-commerce/orders

Siparişler salt okunurdur. Sipariş ayrıntısı ekranı şunu gösterir:

  • sipariş numarası
  • Müşteri adı, gerekli e-posta, isteğe bağlı telefon ve genel alışveriş sepeti tarafından kaydedilen teslimat adresi
  • sipariş durumu
  • satır öğeleri
  • ödeme girişimleri
  • Ağ geçidi ödeme ve ödeme referansları
  • zaman damgaları

Manuel durum düzenleme, geri ödemeler, nakliye ücreti hesaplaması ve sipariş karşılama iş akışları kasıtlı olarak ertelenir. Müşteri ve teslimat adresi yakalama, KDV anlık görüntüleri ve envanter rezervasyonu uygulanır.

Ödemesiz Test Siparişleri

Test order (no payment) seçeneğini Commerce Settings içinde seçerek mağaza formunu ve sipariş kayıt akışını PayPal veya SumUp ile bağlantı kurmadan doğrulayabilirsiniz. Herkese açık sepet bu modu açıkça belirtir, müşteri ve teslimat bilgilerini ister, bekleyen bir sipariş oluşturur, takip edilen stoğu ayırır, denetim kayıtlarının bütünlüğü için bekleyen bir sahte ödeme girişimi kaydeder ve ödeme alınmadığını belirten imzalı bir onay sayfasına yönlendirir. Ücretli müşteri siparişlerini kabul etmeden önce ayarları yapılmış gerçek bir sağlayıcıya geri dönün.

PayPal Korumalı Alan Doğrulama Kontrol Listesi

Canlı moda geçmeden önce bu kontrol listesini kullanın:

  • WebBlocks Commerce yüklü, etkin ve kuruluma hazır.
  • Commerce Settingsşemanın hazır olduğunu gösterir.
  • Commerce Settingsağ geçidini gösterirpaypal.
  • PayPal müşteri kimliği yapılandırıldı.
  • PayPal istemci sırrı yapılandırıldı.
  • PayPal webhook kimliği yapılandırıldı.
  • Webhook URL'si HTTPS kullanır ve şunu işaret eder:/plugins/webblocks-commerce/webhooks/paypal.
  • Bir ürün etkindir ve beklenen fiyata/para birimine sahiptir.
  • Ürün satın alma URL'si herkese açık olarak açılır.
  • Bir sayfaCommerce Buy Buttonbeklenen ürünü ekler/plugins/webblocks-commerce/cart.
  • Ödeme işlemi başlatıldığında PayPal'a yönlendirme yapılıyor.
  • Korumalı alan alıcısı ödemeyi onaylayabilir.
  • Ziyaretçi imzalanan başarı sayfasına geri döner.
  • Sipariş, webhook onayından önce beklemede kalır.
  • PayPal teslim ederCHECKOUT.ORDER.APPROVED.
  • Web kancası başarıyla doğrulandı.
  • PayPal sipariş yakalama işlemi tamamlanır.
  • CMS siparişi şu şekilde olur:paid.
  • Ödeme girişimi şu şekilde olur:succeeded.
  • Aynı web kancasının yeniden gönderilmesi, ödeme denemelerinin tekrarlanmasına neden olmaz.
  • Geçersiz webhook imzaları reddedilir ve siparişler ödendi olarak işaretlenmez.
  • Yönetici ekranlarında, genel sayfalarda, günlüklerde, ekran görüntülerinde veya belgelerde hiçbir PayPal sırrı görünmez.

Özet Korumalı Alan Doğrulama Kontrol Listesi

  • SumUp Dashboard içinde test ortamının satıcısı seçilmiştir.
  • Merchant ID ve sk_test_ gizli anahtarı aynı test hesabına aittir.
  • Commerce Settings, sumup ağ geçidini, test ortamı modunu ve ödeme işleminin hazır olduğunu gösterir.
  • Test API anahtarı ve test ortamının satıcı kodu ayarlanmıştır; anahtarın değeri ekranda gösterilmez.
  • Bir Commerce bloğu etkin EUR ürününü /plugins/webblocks-commerce/cart sepetine ekler.
  • Ödeme işlemi başlamadan önce miktar, KDV ve son tutar doğrudur.
  • Ödeme işlemini başlatmak bir bekleyen sipariş oluşturur ve checkout.sumup.com adresine yönlendirir.
  • SumUp ödeme referansı CMS sipariş numarasıyla eşleşir.
  • Test ortamında ödeme tamamlandığında CHECKOUT_STATUS_CHANGED olayı /plugins/webblocks-commerce/webhooks/sumup adresine gönderilir.
  • İşleyici ödeme kaydını SumUp üzerinden alır ve işlemin başarılı olduğunu doğrular.
  • CMS siparişi paid, ödeme girişimi ise succeeded durumuna geçer.
  • Aynı ödenmiş sipariş bildiriminin yeniden gönderilmesi ikinci bir ödeme girişimi oluşturmaz.
  • Satıcı kodu, referans, tutar veya para birimi eşleşmiyorsa sipariş hiçbir zaman ödenmiş olarak işaretlenmez.
  • Başarısız veya süresi dolmuş SumUp ödeme işlemleri ayrılmış stoğu serbest bırakır.
  • Belgelenen başarılı test kartı 4200 0000 0000 0091, gelecekteki herhangi bir son kullanma tarihi ve herhangi bir üç haneli CVV ile tamamlanır.

Canlı Mod Kontrol Listesi

WEBBLOCKS_COMMERCE_PAYPAL_MODE=live'ye geçmeden önce:

  • PayPal'in gerektirdiği durumlarda operatörün bir PayPal İşletme hesabına sahip olduğunu doğrulayın.
  • PayPal Developer Dashboard'da canlı REST uygulamasını oluşturun veya seçin.
  • Korumalı alan istemci kimliğini, istemci sırrını ve web kancası kimliğini canlı değerlerle değiştirin.
  • Canlı web kancası URL'sini üretim HTTPS etki alanıyla yapılandırın.
  • Üretim tesisinin genel PayPal web kancası isteklerini alabildiğini doğrulayın.
  • Operatör için uygunsa düşük değerli bir canlı ödeme çalıştırın.
  • CMS admin'deki siparişi inceleyin.

Korumalı alanı ve canlı kimlik bilgilerini ayrı tutun. Korumalı alan web kancası kimliklerini canlı modda yeniden kullanmayın.

SumUp canlı modu için doğrulanmış gerçek satıcı hesabını seçin, ayrı bir sk_live_ oluşturun gizli API anahtarı, bu hesabın canlı Satıcı Kimliğini kullanın, WEBBLOCKS_COMMERCE_SUMUP_MODE=live'yi ayarlayın, uygulama yapılandırmasını yenileyin ve kabul edilebilir düşük değerli bir ödeme yapın. Asla yeniden kullanmayın veya korumalı alan satıcısını, test anahtarını, canlı satıcıyı veya canlı anahtarı karıştırın.

Sorun Giderme

Satın alma sayfasında ödeme işleminin hazır olmadığı belirtiliyorsa:

  • Open Commerce Settings.
  • Seçilen ağ geçidinin paypal veya sumup olduğunu doğrulayın.
  • PayPal için müşteri kimliğinin ve müşteri sırrının yapılandırıldığını onaylayın.
  • SumUp için API anahtarının ve satıcı kodunun yapılandırıldığını onaylayın.
  • Ürünün aktif olduğunu ve geçerli bir fiyata sahip olduğunu onaylayın.
  • Eklenti geçişlerinin çalıştığını onaylayın.

Ödeme işlemi PayPal'a yönlendiriliyor ancak sipariş beklemede kalıyorsa:

  • PayPal webhook URL'sinin doğru olduğunu onaylayın.
  • WEBBLOCKS_COMMERCE_PAYPAL_WEBHOOK_ID'nin PayPal'da yapılandırılan web kancasıyla eşleştiğini doğrulayın.
  • PayPal'ın CHECKOUT.ORDER.APPROVED gönderdiğini onaylayın.
  • Siteye HTTPS üzerinden PayPal'dan erişilebildiğini doğrulayın.
  • Webhook imza doğrulamasının başarısız olmadığını doğrulayın.

Bir web kancası reddedilirse:

  • Webhook olayının eşleşen PayPal modundan gelip gelmediğini kontrol edin.
  • Korumalı alan kimlik bilgilerinin canlı webhook kimlikleriyle karıştırılmadığını kontrol edin.
  • Webhook kimliğinin, müşteri kimlik bilgileriyle aynı PayPal REST uygulamasına ait olup olmadığını kontrol edin.

Bir Toplama emri beklemede kalırsa:

  • Genel HTTPS URL'si /plugins/webblocks-commerce/webhooks/sumup'nin ulaşılabilir olduğunu doğrulayın.
  • API anahtarının ödemeyi okuyabildiğini ve yapılandırılmış satıcı koduna ait olduğunu onaylayın.
  • Ödeme referansının, tutarın ve para biriminin hâlâ CMS siparişiyle eşleştiğini doğrulayın.
  • Toplamı Onayla PAID'yi rapor eder ve bir SUCCESSFUL işlemi içerir.

SumUp barındırılan sayfa, süresi dolmuş veya eksik bir ödeme bildirirse, yeni bir ödeme işlemi başlatın. sepeti. Barındırılan Ödeme oturumlarının süresi yaklaşık 30 dakika sonra dolar ve URL'leri yer imlerine eklenmemelidir veya yeniden kullanılmış.

Akım Sınırlamaları

Mevcut eklenti henüz şunları içermemektedir:

  • Nakliye
  • kuponlar
  • abonelikler
  • CMS'den geri ödemeler
  • müşteri hesapları
  • yerine getirme iş akışları
  • sağlayıcı hesabına katılım (ödeme kimlik bilgileri Ticaret Ayarlarında düzenlenebilir)

Bunlar, sağlayıcı entegrasyonlarının içinde gizli kalmak yerine ayrı özellikler olarak kalır.

Sepet, stok ve eski siparişler

Sipariş durumu yalnızca Support\Orders\OrderStateMachine aracılığıyla değiştirilir, asla ham güncelleme. İzin verilen geçiş grafiğini (pending → paid|failed|cancelled|expired, paid → refunded), yeniden teslim edilen web kancaları için önemsizdir ve sipariş satırını kilitler, böylece yarış ağ geçidi geri aramaları bir geçişi iki kez uygulayamaz.

Takip edilen stok (inventory_quantity boş değil) ödeme başladığında atomik olarak ayrılır, bu, eş zamanlı alıcılar altında aşırı satışı önler ve bir satış gerçekleştiğinde kataloğa geri gönderilir. sipariş iptal edilir, süresi dolar, başarısız olur veya para iadesi yapılır. Boş inventory_quantity değerine sahip ürünler izlenmez (sınırsız) ve hiçbir zaman azaltılmaz.

Aterk edilmiş pending siparişleri, süreleri dolana kadar rezervasyonlarını korur. Çalıştır php artisan webblocks-commerce:expire-stale-orders --minutes=30'nin piyasaya sürülmesi için bir program var Alıcının hiçbir zaman tamamlamadığı ödemeler tarafından tutulan stok. Ana uygulamanın konsol çekirdeğine bağlayın, örneğin $schedule->command('webblocks-commerce:expire-stale-orders')->everyFifteenMinutes();.

Sepet API'si

Cart'lar sunucu tarafındadır, kalıcıdır ve tek para birimidir. Sepette yalnızca ürün depolanır referanslar + miktarlar; fiyatlar ve KDV güncel katalogdan canlı olarak çözümlenir ve yalnızca Çok satırlı bir sipariş oluşturan ödeme sırasındaki siparişin (StartCheckout::forCart) dondurulması, Her satır için atomik olarak stok ayırır ve sepeti converted olarak işaretler. Aynısını ekliyorum ürün miktarları birleştirir; Farklı bir para biriminin veya takip edilen stoktan daha fazlasının eklenmesi reddedilir.

Ziyaretçiler oturum destekli genel alışveriş sepetini API belirteci olmadan kullanır. Ödeme yapmadan önce herkese açık form müşterinin adını, e-posta adresini, caddesini, posta kodunu, şehrini ve iki harfli ülke kodunu gerektirir; telefon ve ikinci bir adres satırı isteğe bağlı olarak kalır. Ayrıntılar sepet/sipariş meta verilerinde saklanır ve gösterilir sipariş durumu ve yönetici siparişi detay ekranlarında.

Kamu yolları:

  • GET /plugins/webblocks-commerce/cart — sepet satırlarını, KDV'yi ve toplamı inceleyin
  • POST /plugins/webblocks-commerce/cart/items/{product} — Ticaret bloğundan bir ürün ekleyin veya satın alma sayfasından
  • PATCH|DELETE /plugins/webblocks-commerce/cart/items/{product} — miktarı değiştirin veya bir satırı kaldırın
  • POST /plugins/webblocks-commerce/cart/checkout — müşteri/teslimat ayrıntılarını kaydedin, siparişi oluşturun ve yapılandırılmış ağ geçidine devam edin

Genel sepet, satın alma sayfası ve ödeme durumu sayfaları, CMS genel düzenini genişletir ve sitenin içeriklerinin etrafındaki kendi header ve footer yuvaları, ana sayfadan şu şekilde çözümlenir: Support\PublicStorefrontShell. Shared Slot'de tutulan başlık da aynı şekilde çalışır, dolayısıyla site başlığı onunla vitrinleri değiştirir. Commerce Satın Al Düğmesi yerel bir eklenti bloğudur ve sepete gönderilen gönderiler; Güvenilir bir HTML bloğu gerektirmez.

Sepetin bütün işlevlerine eklentiye ait dahili API üzerinden erişilebilir. Bu API, CMS dahili API grubuna (/webadmin/api, bearer token ile kimlik doğrulama) eklentinin apiRoutes() bağlantı noktası üzerinden eklenir; böylece yapay zekâ araçları, yönetim panelinin kullanıcılara sunduğu aynı yeteneklere erişir. Uç noktalar (gerekli yetenek parantez içinde):

  • POST /webadmin/api/commerce/cart — bir sepet oluşturun (commerce.cart.write)
  • GET /webadmin/api/commerce/cart/{token} — canlı toplamları içeren bir alışveriş sepetini okuyun (commerce.cart.read)
  • POST /webadmin/api/commerce/cart/{token}/items — {product_id, quantity} (commerce.cart.write) ekleyin
  • PATCH /webadmin/api/commerce/cart/{token}/items/{product} — {quantity}'yi ayarlayın (0 kaldırma) (commerce.cart.write)
  • DELETE /webadmin/api/commerce/cart/{token}/items/{product} — bir satırı kaldırın (commerce.cart.write)
  • DELETE /webadmin/api/commerce/cart/{token}/items — sepeti temizle (commerce.cart.write)
  • POST /webadmin/api/commerce/cart/{token}/checkout — barındırılan ödemeyi başlatır, redirect_url (commerce.cart.write) değerini döndürür

Ürünler ve siparişler aynı şekilde gösterilir (bu uç noktalar eklentiye aittir, eklentiye ait değildir) CMS çekirdeği ve yalnızca eklenti etkinleştirildiğinde mevcuttur):

  • GET|POST /webadmin/api/commerce/products, PATCH /webadmin/api/commerce/products/{id} — katalog dahil. tax_class (commerce.read / commerce.products.write)
  • GET /webadmin/api/commerce/orders, GET /webadmin/api/commerce/orders/{id} — salt okunur, tam net/vergi/brüt dökümüyle (commerce.orders.read)

Bunların tümü kendi reklamını yapar: eklenti etkinleştirildiğinde CMS API keşfinde görünürler (GET /webadmin/api _links, GET /webadmin/api/openapi.json yolları ve keşif kılavuzu) eklentinin apiDiscovery() katkısı aracılığıyla ve eklenti devre dışı bırakıldığında kaybolur.

Ayrı bir ticaret belirteci yoktur: eklenti paylaşılan CMS API belirtecini kullanır. onun commerce.* yetenekleri, apiCapabilities() aracılığıyla CMS'nin verilebilir kümesine katkıda bulunur (eklenti etkinleştirildiğinde belirteç yöneticisi kullanıcı arayüzünde "Ticaret" grubu olarak görünürler), dolayısıyla en az ayrıcalıklı tek bir jetonun kapsamı yalnızca ticaret yeteneklerine göre belirlenebilir.

Çok dilli ürün içeriği

Storefront ürün içeriği paralel bir sistem yerine CMS Site+Locale sistemini paylaşır. temel ürün satırı, varsayılan/geri dönüş title/description'yi içerir; yerel başına bir çeviri satırı (webblocks_commerce_product_translations, ürün + CMS yerel ayarına göre anahtarlanmıştır) bunları geçersiz kılar. Bu yönetici paneli content dil eksenidir — yönetici paneli UI dilinden farklıdır; Laravel resources/lang dosyalarında kalır.

ProductLocalizer, tabana geri dönerek bir yerel ayar için gösterilen başlığı/açıklamayı çözer. Arabalar bir locale taşır, bu nedenle sepet özetleri ve - kritik olarak - order satır başlığı anlık görüntüsü checkout alıcının gerçekte gördüğü yerelleştirilmiş metni kullanın. Herkese açık satın alma sayfası bir aracılığıyla yerelleştirilir ?locale=<code> sorgusu, tabana geri dönüyor.

Çevirileri yönetici ürün formunda (etkin varsayılan olmayan yerel ayar başına) veya API üzerinden düzenleyin (parantez içindeki yetenek):

  • GET /webadmin/api/commerce/products/{product}/translations — liste tabanı + çeviriler (commerce.read)
  • PUT /webadmin/api/commerce/products/{product}/translations/{locale} — yukarı {title?, description?} (commerce.products.write)
  • DELETE /webadmin/api/commerce/products/{product}/translations/{locale} — bir yerel ayarı kaldırın (commerce.products.write)