Entegrasyonlar
WHMCS

WHMCS

Mevcut Lunixi formu varsayılan olarak mağazanın kendi sitesinde açılır. Yönlendirmeli ödeme isteğe bağlıdır ve yalnız backend’in döndürdüğü doğrulanmış paymentPageUrl kullanılır. Adresin opak token’ı gömülü token’dan farklı olabilir; modül adresi token’dan üretmez. Eksik/eski adres gömülü ödemeyi engellemez; yönlendirmeli ödeme yeni intent veya anahtar açmadan inceleme/uzlaştırmada kalır. Mevcut denemelerin kayıtlı modu, gövdesi, profili ve anahtarı korunur. Yöntemler ve çoklu kart mevcut Lunixi formu/panelinden yönetilir.

Doğrulanmış public mağaza ZIP’i 0.1.2: lunixi-whmcs-0.1.2.zip (opens in a new tab) · SHA256SUMS (opens in a new tab) · Yayın v0.1.2 (opens in a new tab). CI’da üretilen kurulum paketi 2026-10-31 tarihinde indirilerek doğrulandı. GitHub’ın otomatik kaynak arşivi yerine bu dosyayı kullanın.

Public CI ZIP SHA256: 940aa94ee9a0962645ba76d4eedc0e83a13d3aa280ba94d02940d4633f5547c5.

WHMCS faturalarını pay.lunixi.com yönlendirmeli veya gömülü Lunixi formuyla tahsil edin. Çoklu kart, taksit, uygun alternatif ödeme yöntemleri ve sigorta Lunixi panelinden yönetilir; WHMCS'de aynı yöntem anahtarları tekrar edilmez. Kart numarası/CVV modül sunucusuna gelmez.

Ödeme geçidi ve yönetim eklentisi, namespace ayrılmış PHP SDK paketini içerir. İmzalama, integer para, kalıcı ödeme denemesi, webhook doğrulaması ve tahsilat kanıtları ortak Commerce kodundadır. Mağaza kurulumunda Composer gerekmez.

⚠️

0.1.2, 64 bit PHP 8.2+ üzerinde WHMCS 8.13 / 9.0 / 9.1 resmi sözleşmelerini hedefler. Lisanslı WHMCS ortamı bulunmadığından gerçek yerel platform kabul testi yapılmamıştır. Çalıştırılan testler gerçek MariaDB/InnoDB ve Illuminate üzerinde, açıkça belirtilen resmi sözleşme test bileşenleriyle yapılır. Kurulumdan önce lisanslı kabul matrisini tamamlayın; kaynak yayını Marketplace onayı anlamına gelmez.

Gereksinimler ve kurulum

  • Ayrı geçerli WHMCS lisansı, platformla uyumlu PHP/ionCube, Sodium/cURL/JSON/PDO MySQL ve InnoDB mali tablolar.
  • HTTPS SystemURL, kayıtlı Lunixi üye işyeri/anahtar ve eşleşen webhook bağlantısı.
  • Web kökü/veritabanı dışında, ayrıca yedeklenen 32 bayt sunucu şifreleme anahtarı.

Kaynak: Lunixi-Payment/lunixi-whmcs (opens in a new tab). GitHub kaynak arşivi yerine derlenmiş lunixi-whmcs-0.1.2.zip içeriğini WHMCS köküne açın. Pakette modules/gateways/lunixi.php, modules/gateways/lunixi/, modules/gateways/callback/lunixi.php ve modules/addons/lunixi_payments/ bulunur.

Sunucu anahtarını yerel olarak üretin:

php -r 'echo base64_encode(random_bytes(32)), PHP_EOL;'

Web ve CLI PHP süreçlerine LUNIXI_WHMCS_ENCRYPTION_KEY ortam değişkenini tanımlayın. Güncellemelerde değiştirmeyin; kaybı geçmiş anahtar/tokenların çözülememesine yol açar. Veritabanı/webhook/özel imzalama anahtarından veya herkese açık kimlikten türetmeyin.

  1. System Settings → Addon Modules altında Lunixi Payments'i açın ve uygun yönetici rollerini seçin.
  2. Addons → Lunixi Payments ekranından değiştirilemez şifreli profil oluşturun.
  3. Payment Gateways → Lunixi Payments ayarına bu profil ID değerini girin.
  4. Profil yanında gösterilen tam webhook adresini, ?profile=ID dahil, Lunixi'ye kaydedin. TEST/LIVE ortamı ve ödeme olayları eşleşmelidir.

Üye işyeri profili

Ayarİşlev
Üye işyeri IDAsıl tahsilat kimliği
Key ID / Ed25519 özel anahtarSunucu kimlik doğrulaması
Webhook imzalama sırrıHam bayt imzalı olay teslimatını doğrulama
TEST / LIVEGerçek anahtar ve webhook ortamıyla aynı olmalıdır
Yönlendirmeli / gömülüpay.lunixi.com veya resmi gömülü Lunixi formu
Önce provizyonTam tahsilata kadar faturayı ödenmemiş tutma

Anahtar giriş alanları yönetim eklentisindedir. Özel anahtar/webhook parola alanıyla alınır, ayrı sunucu anahtarıyla kimliği doğrulanmış şifreli saklanır ve forma tekrar yazılmaz. API adresi sabit https://api-gateway.lunixi.com adresidir; gerçek ortamı anahtar belirler, isteğe uydurma ortam parametresi eklenmez.

Yeni profil yalnız aynı üye işyeri VE TEST/LIVE ortamı içinde geçmiş işlemlerin kimlik bilgilerini/webhook sırlarını yeniler. Geçmiş profil kimliği, fatura görüntüsü ve form tercihleri sabittir. Başka işyeri veya ortam eski ödemeleri devralamaz. Profilleri ve sunucu anahtarını iade/uzlaştırma süresince saklayın.

Ödeme ve fatura muhasebesi

Token gösterilmeden önce, seçili WHMCS müşteri hesabının oturum açmış asıl sahibi, yerel CSRF doğrulamalı POST göndermelidir. 0.1.2 sürümünde ek yetkilendirilmiş kullanıcılar ve yönetici taklit oturumları kapsam dışındadır.

Kalan anapara; yerel DECIMAL fatura toplamı, uygulanmış kredi ve mevcut kısmi ödemelerden kesin minor-unit integer olarak hesaplanır. Tarayıcı tutarı ve float bakiye özelliği kullanılmaz. Desteklenmeyen hassasiyet, farklı para birimindeki muhasebe hareketleri ve sıfır/negatif bakiye ağ çağrısından önce reddedilir.

Rezervasyon ağ isteğinden önce kalıcıdır. Yanıt kaybolursa aynı istek/idempotency anahtarı kullanılır; token süresinin dolması yeni tahsilat gerekçesi değildir. Yönetici ancak doğrulanmış son başarısızlık ve sıfır tahsilat durumunda geçmişi koruyarak yeni deneme açabilir.

  • Yönlendirmeli form yalnız paymentPageUrl adresine gider.
  • Gömülü form sabit https://cdn.lunixi.com/lunixi-checkout.min.js dosyasını ve tarayıcıya güvenli JSON ayarlarını kullanır; API'den gelen HTML çalıştırılmaz.
  • Ön provizyon/kısmi tahsilat faturayı ödenmemiş bırakır; yalnız tam doğrulanmış tahsilat anaparayı bir kez öder.
  • Tarayıcı dönüşü yalnız yetkili sahibini faturaya götürür; “başarılı” parametresi ödeme kanıtı değildir.

Fatura sahibi, para birimi, tutar, kredi ve harici işlem parmak izi kilit altında yeniden karşılaştırılır. Sonraki değişiklik/harici ödeme otomatik fazla alacak yazmak yerine inceleme gerektirir. İptal edilmiş fatura otomatik ödenmez. Taksit ek bedeli ayrı faturaya bağlı olmayan gelir hareketidir; anapara, müşteri kredisi veya işlemci komisyon alanı değildir. İade dağılımı açıkça önce anapara, sonra ek bedel şeklindedir; her çıkış asıl yerel tahsilata bağlanır.

Doğrulanmış webhook ve uzlaştırma

Ortak SDK; sınırlı ham bayt v2 HMAC, güncel zaman, imzalı olay kimliği/türü/ortamı, kalıcı tekrar/içerik çakışması ve kimliği doğrulanmış GET kimliği/tahsilatını kontrol eder. İmzalı olayın durum alanı tek başına yetmez. Kaybolan ilk yanıt kurtarması ayrıca asıl denemenin opak kimliğini/parmak izini GET metadata alanında doğrular.

Ledger, olay tüketimi, yerel fatura/hareket kayıtları ve şifreli bildirim kuyruğu aynı Capsule bağlantısı ve transaction içinde uygulanır. Yerel hata hepsini geri alır; doğrudan PDO transaction başlatılmaz. Çoklu kartta doğru ana ödeme, tam/dengeli toplam ve telafi/uzlaştırma sorunu bulunmaması gerekir; tek başarılı kart bacağı faturayı ödemez.

Web süreçleriyle aynı anahtarı kullanarak birkaç dakikada bir çalıştırın:

php /whmcs/yolu/modules/gateways/lunixi/cron.php

Komut faturaları son kontrol zamanına göre adil gruplarla uzlaştırır ve commit sonrası işleri işler. Çıkış kodlarını ve yönetim ekranında kontrol bekleyen işleri izleyin.

Tahsilat, iade ve provizyon iptali

Yönetim eklentisinde faturayı açın, kesin ondalık tutarla Kalıcı işlem hazırla seçin; iptalde tutar boş olmalıdır. Kaydedilen ID/işlem/tutarı kontrol edip Çalıştır / aynı işlemi yeniden dene düğmesini kullanın. Yerel eklenti rolü, Manage Invoice yetkisi, POST ve yönetici CSRF gerekir. Profil oluşturmak ayrıca Configure Payment Gateways ister.

HTTP 2xx başarı sayılmaz; istenen tahsilat/iade farkı doğrulanana kadar pending/uncertain görünür. Belirsiz işlem varken yeni ID açılmaz; asıl ID yeniden kullanılır. Standart WHMCS iade callback'i kalıcı talep ID'si sunmadığı için güvenli hata vererek bu ekrana yönlendirir. Eklenti hem gerçek mutasyonu hem yerel kaydı yönetir; callback dönüşünde ikinci iade satırı oluşmaz.

Parasal iade ürün/KDV alacak notu veya yeni WHMCS billing note dağılımı uydurmaz. Bunları muhasebe politikanıza göre, banka iadesini tekrarlamadan yönetin. Bekletilen kısmi tahsilatın iadesi muhasebe incelemesi ister; iade edilemeyen çoklu kart yöntemlerinde ek uzlaştırma gerekebilir.

Commit sonrası işlemler ve saklama

Mali kayıt sırasında e-posta ve hizmet açma/askıdan çıkarma bekletilir. Commit sonrası işçi; doğrulanmış ödenmiş fatura/müşteri, yerel hizmet ve sipariş bekletme durumunu kontrol edip belgelenmiş ModuleCreate / ModuleUnsuspend API'sini bir kez çağırır. Fraud/iptal/özel sipariş bekletmeleri incelemede kalır. Active hizmet atlanır; ilgili işlem yalnız Pending/Suspended durumda yapılır. İş ağ çağrısından önce kalıcı sahiplenilir. Çökme/zaman aşımı sending/uncertain olarak inceleme bekler; harici komut körlemesine tekrarlanmaz.

Yenileme/paket değişikliği/özel hizmet akışları yerel yönetici kontrolünde kalır. İş ID'si ve yerel referansı ekranda görünür; gerçek teslimat/hizmet durumunu kontrol ettikten sonra tamamlandı olarak kaydedin. Bu onay harici komut göndermez. Kurulu diğer eklentiler, billing note, yenileme ve bildirim davranışları lisanslı kabul matrisinde doğrulanmalıdır.

Devre dışı bırakma profilleri, ledger/olayları, işlem ID'lerini, outbox ve mali geçmişi silmez. Sunucu anahtarını ve üye işyeri erişimini saklama süresince koruyun; otomatik tablo silen kaldırma kodu yoktur.

Derleme ve doğrulama

composer install --working-dir=tools --no-interaction
php tools/build.php
php tools/check-artifact.php
php tools/vendor/bin/phpcs --standard=phpcs.xml
php tools/vendor/bin/phpstan analyse -c phpstan.neon --no-progress
composer audit --working-dir=tools

Varsayılan derleme yayımlanmış lunixi/php-sdk:0.29.5 paketini çözer. Geliştirici isterse incelenmiş bağımsız SDK kaynağını açıkça verebilir. Kaynak yolu ZIP'e girmez; ayrılmış runtime kardeş repo veya site Composer kurulumuna bağlı değildir.

Veritabanı/sözleşme testleri yalnız LUNIXI_CONTRACT_TEST=1, kaynak dışı bağlantı JSON'u ve lunixi_whmcs adlı silinebilir veritabanıyla çalışır; tabloları yeniden oluşturur. Eşzamanlılık, kesin tutar, geri alma/tekrar, ortam/rotasyon, yerel argüman sözleşmeleri, tahsilat/iade/iptal ve commit sonrası davranışları kontrol eder. PHPStan 8, lisanslı kaynak dağıtılmadan dar resmi API bildirimlerini kullanır.

Operatörün sağladığı lisanslı silinebilir ortamda kabul çalıştırıcısını, ardından gerçek TEST üye işyeriyle tarayıcı/yetki/muhasebe/bildirim matrisini tamamlayın. Kabul adımları (opens in a new tab) ve güvenlik politikası (opens in a new tab) kaynak depodadır.

Finansal sonucu belirsiz işlemler incelemede tutulur. FAILED tek başına yeni denemeye izin vermez; herkese açık ödeme sorgusu kesin sağlayıcı sonuç kanıtını döndürmez. Sonuçlanmamış finansal tekrarlar 23 saat sonra durur; kimliği doğrulanmış GET mutabakatı devam eder. Zaman aşımı, form token süresi veya tarayıcı dönüşü yeni finansal anahtar üretmez.

Bilgi dönüş POST'u WHMCS oturum/CSRF/runtime yüklenmeden çalışır. invoiceid yalnız URL sorgusundan okunur; en fazla 1 MiB ham gövde atılır ve bütün form alanları yok sayılır. Fatura sorgusu, gateway çağrısı veya mali yazım olmadan return.php?invoiceid=... adresine boş, göreli 303 verir. Sonraki GET WHMCS'yi yükler ve faturaya yönlendirmeden önce yerel sahipliği kontrol eder. İlk checkout'ta native CSRF zorunludur. PHP giriş noktasından önce POST girdisini belleğe alabileceği için proxy gövde sınırını da ayarlayın.

0.1.2 kontrollerinde gerçek MariaDB/InnoDB, Illuminate ve namespace ayrılmış PHP SDK 0.29.5 ile 36 test / 146 assertion geçti. Gerçek gömülü HTML/JavaScript object/mount/XSS sözleşmesi ve WHMCS yüklemeden derlenmiş dönüş girişini çalıştıran gerçek HTTP sunucusunda sahte alan, boş POST ve büyük POST testleri dahildir. PHPStan seviye 8, PHPCS, bağımlılık audit ve ZIP/sır kontrolleri de geçer. Bunlar resmi sözleşme testleridir; lisanslı WHMCS kabulü değildir.