WP Manifestindependent plugin directory
manifest / ecommerce / edenred-for-woocommerce

Edenred for WooCommerce

Edenred (Ticket Restaurant) virtual POS payment gateway for WooCommerce

by Eray Usta · github.com/erayusta/edenred-for-woocommerce · website

0stars
0forks

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.zip

WooCommerce 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 otomatik Inquiry (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******2253 maskesi); Password/HashKey/OTP loglanmaz
  • ✅ Çevrilebilir (edenred-for-woocommerce text domain), Türkçe varsayılan

Kurulum

  1. Releases zip'ini yükleyin veya repoyu wp-content/plugins/edenred-for-woocommerce olarak klonlayın; etkinleştirin.
  2. WooCommerce → Ayarlar → Ödemeler → Edenred (Ticket Restaurant): MerchantNo, TerminalNo, Password, HashKey, ServiceId girin; akışı seçin.
  3. Test modunda deneyin (Edenred dokümanındaki test bilgileri ayar açıklamasında), sonra test modunu kapatın.
  4. Edenred'e ResultPostUrl iç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.