Edenred for WooCommerce
Edenred (Ticket Restaurant) virtual POS payment gateway for WooCommerce
by Eray Usta · github.com/erayusta/edenred-for-woocommerce · website
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/erayusta/edenred-for-woocommerce/archive/refs/heads/main.zipWooCommerce için Edenred (Ticket Restaurant) Sanal POS ödeme yöntemi. İki akış:
- Yönlendirmeli (varsayılan): müşteri Edenred'in güvenli ödeme sayfasında kart numarasını ve SMS şifresini girer, sonuç mağazaya bildirilir. Ek yetki gerektirmez; klasik ve blok checkout'ta çalışır.
- API + OTP: kart numarası mağazada alınır, SMS şifresi mağazada doğrulanır (Edenred'den "API üzerinden satış" yetkisi gerekir).
Bu eklenti resmi bir Edenred ürünü değildir. Kullanmak için Edenred Türkiye'den üye işyeri sanal POS hesabı (MerchantNo, TerminalNo, Password, HashKey, ServiceId) almanız gerekir.
Özellikler
- ✅ Yönlendirmeli ve API+OTP akışı, panelden seçilir
- ✅ Sonuç senkronu: Edenred'in sunucudan sunucuya bildirimi (
ResultPostUrl) + müşteri dönüşünde otomatikInquiry(bildirim gecikse/ulaşamasa bile sipariş doğru duruma gelir) - ✅ İade — WooCommerce sipariş ekranından, kısmi ve tekrarlı
- ✅ Admin sipariş aksiyonu "Edenred: ödemeyi sorgula" ve sipariş ekranında Edenred özeti
- ✅ HPOS ve Cart/Checkout Blocks uyumlu
- ✅ Test modu (Edenred test ortamı)
- ✅ Güvenlik: ödemeyi tamamlayan tüm cevaplar ve bildirimler SHA-256 hash ile doğrulanır; kart numarası saklanmaz (
603681******2253maskesi); Password/HashKey/OTP loglanmaz - ✅ Çevrilebilir (
edenred-for-woocommercetext domain), Türkçe varsayılan
Kurulum
- Releases zip'ini yükleyin veya repoyu
wp-content/plugins/edenred-for-woocommerceolarak klonlayın; etkinleştirin. - WooCommerce → Ayarlar → Ödemeler → Edenred (Ticket Restaurant): MerchantNo, TerminalNo, Password, HashKey, ServiceId girin; akışı seçin.
- Test modunda deneyin (Edenred dokümanındaki test bilgileri ayar açıklamasında), sonra test modunu kapatın.
- Edenred'e
ResultPostUrliçin URL bildirimi gerekiyorsa:https://siteniz.com/wc-api/edwc_result.
Nasıl çalışır?
Yönlendirmeli API + OTP
Siparişi ver ─▶ Sales/Start ─▶ Edenred sayfası Siparişi ver (kart no) ─▶ Sales/Perform
│ │ Status 0 (OTP gerekli)
Edenred ─▶ wc-api/edwc_result (POST) ─▶ ödendi order-pay: OTP ─▶ Sales/OtpVerify ─▶ ödendi
Müşteri ─▶ wc-api/edwc_return ─▶ (gerekirse Inquiry) ─▶ teşekkür sayfası
İade ekranı ─▶ Refund/RefundRequest
Gereksinimler
WordPress 6.0+, WooCommerce 7.0+, PHP 7.4+ (mbstring, json), para birimi TRY.
Geliştirme
composer install
composer test # hash / tutar / cevap doğrulama birim testleri (WordPress gerektirmez)
Uçtan uca test (sahte Edenred sunucusuyla)
Edenred'in test ortamı her zaman ayakta olmadığı için tests/mock-server/ dokümandaki Web API sözleşmesini
(Sales/Start, Perform, OtpVerify, Inquiry, Refund/RefundRequest, yönlendirmeli ödeme sayfası ve ResultPostUrl POST'u)
aynı hash kurallarıyla taklit eder. Test kartı 6036 8190 4174 2253 / OTP 784294; 6036 8190 0000 0000 "Yetersiz bakiye" döner.
# 1) Sahte sunucu (Password/HashKey eklenti ayarlarındakiyle aynı olmalı)
EDWC_MOCK_PASSWORD='...' EDWC_MOCK_HASHKEY='...' php -S 127.0.0.1:8787 tests/mock-server/index.php
# 2) Siteyi sahte sunucuya yönlendir (mu-plugin veya functions.php)
add_filter( 'edwc_api_base_url', fn() => 'http://127.0.0.1:8787/' );
# 3) Bekleyen siparişler + müşteri hazırla, JSON'u tests/e2e/pay-page.js'e ver
# { base, user, pass, orders: { hosted_ok:{pay_url}, hosted_nsf, hosted_cancel, api_ok, api_nsf } }
node tests/e2e/pay-page.js e2e.json hosted # ayar: Ödeme akışı = yönlendirmeli
node tests/e2e/pay-page.js e2e.json api # ayar: Ödeme akışı = API + OTP
Sahte sunucu callback'i ResultPostUrl'e curl ile POST eder (yerel .test sertifikası için SSL doğrulaması kapalıdır);
durum ve istek günlüğü sistem geçici dizininde edwc-mock-state.json / edwc-mock.log.
Sık sorulanlar
Hash neden ISO-8859-9? Edenred'in referans uygulaması hash girdisini ISO-8859-9 byte'larıyla hesaplar; UTF-8 ile hesaplanan hash reddedilir. Eklenti bunu otomatik yapar (birim testleri Edenred dokümanındaki örnek hash'lerle doğrulanır).
Yerel geliştirme ortamında bildirim gelmiyor. Edenred'in ResultPostUrl POST'u internetten erişilemeyen sitelere ulaşamaz; müşteri geri döndüğünde eklenti Inquiry ile sonucu çeker.
ServiceId nedir? Edenred'in KDV oranına göre verdiği işlem servis kodu. Test ortamında 1000.
Kart numaraları saklanıyor mu? Hayır. API akışında kart numarası yalnızca istek sırasında bellekte tutulur; siparişe ve loglara yalnızca ilk 6 + son 4 hanesi yazılır.
Lisans
GPL v2 veya üzeri — bkz. LICENSE.