Dokümantasyon · Güncel sürüm

PrizeX dokümantasyonu

PrizeX'i kurmak, yapılandırmak ve işletmek için ihtiyacınız olan her şey — açık artırmaların, piyangonun, gizemli kutuların, arcade oyunlarının, çoklu satıcılı mağazanın ve cüzdan/jeton ekonomisinin arkasındaki self-hosted PHP platformu. Bu sayfa, bir pazarlama özetini değil, teslim edilen kod tabanını yansıtır.

PHP 7.4+ MySQL / MariaDB Composer 38 ödeme ağ geçidi eklentisi 5 vitrin teması

PrizeX nedir

PrizeX, PHP tabanlı bir ödül, oyun ve pazar yeri platformudur: açık artırmalar, piyango, gizemli kutular, bir arcade oyun kümesi, çoklu satıcılı bir e-ticaret mağazası ve cüzdan/jeton ekonomisi — hepsi tek bir self-hosted uygulamada. Eklenti/tema mimarisiyle, bir yönetim paneliyle ve kartları, cüzdanları, kriptoyu ve bölgesel ödeme sağlayıcılarını kapsayan 38 ödeme ağ geçidi eklentisiyle birlikte gelir; buna ek olarak çekirdek tarafından eklenen 3 manuel ödeme yöntemi vardır.

SaaS bağımlılığı yok: yazılımı kendi hostinginize kurarsınız, veritabanının sahibi sizsiniz ve lisansla birlikte ömür boyu güncelleme alırsınız. Her dikey (açık artırma, piyango, gizemli kutu, oyunlar, mağaza) yönetim panelinden bağımsız olarak açılıp kapatılabilir — sıfırdan bir kurulum, tek dikeyli bir ürün olarak da tüm paket olarak da çalışabilir.

Mimari
Eklenti ve tema odaklı

Çekirdek kod hiçbir zaman bir eklentiye zorunlu olarak bağlı değildir. Her dikey, her ödeme ağ geçidi ve her sosyal giriş, plugins/ altında duran ve sitenin geri kalanını bozmadan etkinleştirilebilen, devre dışı bırakılabilen ya da silinebilen birer eklentidir.

Veri
MySQL / MariaDB, saf mysqli

tbl_ tablo ön eki, ORM yok, çoğunlukla hazırlanmış ifadeler. Her eklenti kendi tablolarının sahibidir ve onları idempotent bir db_delta() yükleyicisiyle kendisi taşır.

Neyin üzerinde çalışır

PrizeX, standart paylaşımlı hostingde ya da bir VPS üzerinde çalışır — yeniden yazma (rewrite) destekleyen bir web sunucusu dışında özel bir sunucu yapılandırması gerekmez.

Çalışma ortamı
PHP 7.4+
GD ve cURL uzantıları
Veritabanı
MySQL / MariaDB
Geçişler için MariaDB gerekir*
Bağımlılıklar
Composer
PHP paket yöneticisi
Web sunucusu
Apache / LiteSpeed
nginx, örnek yapılandırmayla desteklenir

* database/migrations/ altındaki birkaç dosya, yalnızca MariaDB'de bulunan ADD COLUMN IF NOT EXISTS uzantısını kullanır. Düz MySQL 8.0/8.4 bunu reddeder — veritabanı olarak hem geliştirmede hem de canlıda MariaDB kullanın.

Sıfırdan bir kurulumu ayağa kaldırmak

Sıfırdan kurulum için bir kurulum sihirbazı yok — şemayı doğrudan içe aktarır ve ortam dosyasını yapılandırırsınız.

  1. PHP bağımlılıklarını kurun:
    composer install
  2. Ortam şablonunu kopyalayın ve veritabanı kimlik bilgilerinizi girin:
    cp .env.example .env
  3. database/production.sql dosyasını .env içinde adı geçen veritabanına içe aktarın — bu, tam şemayı oluşturur.
  4. Hazır gelen yönetici hesabını değiştirin (aşağıdaki uyarıya bakın), ardından /admin/ adresinden giriş yapın.
Hazır gelen hesapla giriş yapmayın. database/production.sql, parola özeti her kurulumda birebir aynı olan bir tbl_admin satırıyla (admin@wowcodes.in) gelir. Yayına almadan önce bu satırı silin ve kendi hesabınızı ekleyin:
php -r "echo password_hash('your-password', PASSWORD_BCRYPT), \"\n\";"
DELETE FROM tbl_admin; INSERT INTO tbl_admin (username, email, password, image, status, permission_settings) VALUES ('yourname', 'you@example.com', '<hash from the command above>', '', 1, 1);

Yerel geliştirmede PHP'nin dahili sunucusu Apache olmadan iş görür: php -S localhost:8000 router.php — bu sunucunun .htaccess dosyasını tümüyle yok saydığını unutmayın; bu yüzden router.php aynı yönlendirme kurallarını elle yeniden uygular (bkz. Web sunucusu kurulumu).

Ortam değişkenleri

Ortama özgü tüm ayarlar .env içinde durur ve vlucas/phpdotenv ile yüklenir. .env.example dosyasını .env olarak kopyalayın (git tarafından yok sayılır) ve her ortam için gerçek değerleri girin — şema içe aktarımından önce en azından veritabanı kimlik bilgilerini.

Ortama özgü olmayan site geneli ayarlar (uygulama adı, para birimi, etkin eklentiler, etkin tema ve dikey bazlı anahtarlar) veritabanında, tbl_settings içinde durur ve dosyalardan değil yönetim panelinden yönetilir.

Web sunucusu kurulumu

Yönlendirme ve güvenlik kuralları — okunaklı URL'ler, .env/connection.php/log dosyalarına doğrudan erişimin engellenmesi ve yüklenen içeriğin PHP olarak çalıştırılmasının önlenmesi — proje genelindeki .htaccess dosyalarında tanımlıdır. Apache ve LiteSpeed/OpenLiteSpeed bunları doğrudan okur.

nginx üzerinde nginx.conf.example dosyasını kullanın; bu dosya söz konusu kuralların her birini bir nginx server{} bloğu olarak yeniden üretir — server_name, root ve PHP-FPM soketini kendi ortamınıza göre ayarlayın.

Bu üçünü senkron tutun. .htaccess (canlı ortam), router.php (yerel php -S geliştirme sunucusu) ve nginx.conf.example (nginx) aynı yönlendirme kurallarını birbirinden bağımsız olarak ayrı ayrı uygular. Yeni bir okunaklı URL eklemek, üçünü birden güncellemek demektir.

İstek mimarisi

Her vitrin sayfası (index.php, item.php, …) şu sırayla includes/header.php üzerinden başlatılır:

Coğrafi konum ve dil connection.php themes.php hooks.php plugins.php routes.php menus.php assets.php plugins_load()

connection.php oturumu başlatır, .env kimlik bilgileriyle mysqli üzerinden bağlanır, tbl_settings içeriğini APP_NAME ve CURRENCY gibi sabitlere yükler, ardından mevcut kullanıcıyı ve bir cihaz parmak izi kaydını oturuma alır. plugins_load() etkin her eklentiyi başlatır ve plugins_loaded kancasını tetikler — etkin dikeylerin gerçek ve güncel listesi ancak bu noktada belli olur; header.php de tam bu yüzden eski ayar bayraklarını (shop, multivendor, auction, lottery) sonrasında eklentilerin gerçek etkinlik durumuna göre yeniden kontrol eder.

Yönetim paneli bu başlatma sürecini tekrarlamaz — admin/includes/connection.php yönetime özgü oturum/hata ayarlarını yapar, sonra da kök dizindeki aynı includes/connection.php dosyasını dahil eder.

Eklenti sistemi

Bir eklenti, plugins/<slug>/plugin.php dosyasıdır — dosya çalıştırılmadan okunan başlık yorumu meta verileri — artı daha zengin katalog bilgisi için isteğe bağlı bir plugin.json. Etkin eklentiler tbl_settings.active_plugins içinde bir JSON dizisi olarak saklanır.

  • Tablo sahipliği — her eklenti, etkinleştirme sırasında çağrılan kendi includes/schema.php dosyasını tanımlar ve idempotent db_delta() yardımcısını kullanır (CREATE TABLE IF NOT EXISTS + yalnızca ekleme yapan ALTER TABLE ADD COLUMN). Bir eklenti başka bir eklentinin tablolarına asla dokunmaz.
  • Kayıt defterleri önce yükleniradd_admin_page, add_route, add_cron_job, add_api_route ve register_module herhangi bir eklenti yüklenmeden önce tanımlanır; böylece bir eklentinin üst düzey çağrıları, eklenti sonunda etkin olmasa bile asla ölümcül hata vermez.
  • Temiz kaldırma — bir eklentiyi silmek onun uninstall.php dosyasını çalıştırır ve klasörünü kaldırır; plugins/<slug>/ dışındaki hiçbir yer onun dosyalarını zorunlu olarak dahil etmemelidir, böylece eklenti gittiğinde sitenin geri kalanı çalışmayı sürdürür.

Tema sistemi

Bir tema assets/themes/<slug>/ altında durur — bir manifest.php, bir theme.css, tema kancaları için bir functions.php ve isteğe bağlı bir components/ klasörü. Etkin tema tbl_settings.active_theme içinde saklanır; hiçbiri ayarlanmamışsa yedek olarak editorial devreye girer.

Bileşen çözümlemesi şu sırayla bakar: önce etkin temanın kendi components/ klasörü, sonra bir eklentinin register_module() ile bildirdiği bileşen dizini, en sonda da paylaşılan kök components/ klasörü. Pratikte bu şu demek: paylaşılan varsayılan yalnızca bir kez components/ içinde durur ve herhangi bir tema — ya da etkin bir dikey eklentisi — belirli bir bileşen yolunu kendi kopyasıyla geçersiz kılabilir.

Veritabanı

tbl_ tablo ön eki, saf mysqli, çoğunlukla hazırlanmış ifadeler. SQL dosyaları, bağlayıcılık sırasına göre:

  • database/core-schema.sql — elle bakımı yapılan, yalnızca çekirdek tabloları; dikey/eklenti tabloları bilinçli olarak dışarıda bırakılmıştır.
  • database/production.sql — üretilmiş dosya (çekirdek şema + her eklentinin kendi kurulum rutini, boş bir çalışma veritabanından alınan döküm). Sıfırdan kurulumda içe aktardığınız dosya budur.
  • database/sandbox.sql — yerel geliştirme için demo/örnek veri kümesi.
  • database/migration.sql — mevcut kurulumlar için birleştirilmiş, idempotent yükseltme betiği.
  • database/migrations/<slug>/up.sql (geri alınabilen yerlerde + down.sql) — her bir geçiş için tek dosya.

Modüller

Her modül aynı kurulumla birlikte gelir ve yönetim panelinden bağımsız olarak açılıp kapatılır.

Açık artırma

Çoklu satıcılı satıcı portalı ve komisyon motoruyla canlı teklif verme. Çekirdek eklenti: plugins/auction.

auction-anti-snipeauction-autobidderauction-buy-nowauction-notify-meauction-premiumauction-shippingauction-unlock

Piyango

Yapılandırılabilir takvimler, ödüller ve kazanan bildirimleriyle biletli çekilişler. Çekirdek eklenti: plugins/lottery.

lottery-live-tickerlottery-print-ticket

Gizemli kutu

Açılış animasyonlu, yapılandırılabilir ödül havuzları — kullanıcılar bir kutu satın alır ve ne kazandıklarını anında görür. Eklenti: plugins/mystery-box.

Oyunlar ve ödüller

games/ altında bir arcade oyun kümesi ve buna ek olarak etkileşim/kazanç eklentileri:

2048bamboo-fortuneclick-speedemoji-funhex-burstodd-one-outword-search
earn-gamesearn-daily-bonusearn-offerwallsearn-watch-earn

Mağaza ve pazar yeri

Promosyon ve ürün sunum araçlarıyla çoklu satıcılı bir e-ticaret katmanı. Çekirdek eklentiler: plugins/shop, plugins/multivendor.

couponsgift-cardsshop-abandoned-cartshop-b2bshop-flash-salesshop-merchandisingshop-opsshop-shippingdigital-assetsesim-store

Cüzdan, jeton ve yatırım

Her modül arasında paylaşılan, platform genelinde tek bir cüzdan.

finance-coin-pricingfinance-exchange-ratesfinance-tax-settingswallet-transferinvestwithdrawals

Referans ve ödüller

referralsreferrals-multilevel

Kimlik doğrulama, güven ve uyumluluk

google-loginfacebook-loginapple-loginemail-otprecaptchafraud-preventionrolesmembershipuser-impersonation

Yardımcı araçlar

blogcachetawk-chatinsightsmanual-gateway-buildermobile-app-settings

Yönetim paneli

Yönetim paneli admin/ altında durur ve vitrinin başlatma sürecini tekrarlamaz — yönetime özgü oturum/hata ayarlarını yapar, sonra kök dizindeki aynı includes/connection.php dosyasını dahil eder. Sayfalar add_admin_page() üzerinden kaydolur; bu fonksiyon kenar çubuğu girişini, yetki denetimini, CSRF'yi ve oturum çerçevesini üstlenir. Yalnızca yönetime özel JSON işlemleri ise add_admin_ajax() ile kaydolur ve admin/ajax.php?action=<slug> üzerinden çağrılır.

Katalog ve içerik

Ürünler, bannerlar, sayfalar, menüler, blog.

Ödemeler

Otomatik ve manuel ağ geçidi yönetimi, manuel ödeme incelemesi, ödeme dışa aktarımları.

Kullanıcılar ve satıcılar

Kullanıcı grupları, roller, satıcı bilgileri, kullanıcı kimliğine bürünme.

Raporlar ve kayıtlar

İşlem/sipariş/kullanıcı dışa aktarımları, cron kayıtları, hata takibi, yönetici işlem kayıtları.

Pazarlama

E-posta kampanyaları, şablonlar, bültenler, anlık bildirimler, bildirim kaydı.

Eklentiler, temalar ve SEO

Eklenti ve temaları etkinleştirip devre dışı bırakma, sayfa bazında SEO ayarları, site geneli ayarlar.

Vitrin temaları

assets/themes/ altında beş tema gelir; kurulum bazında yönetim panelinden değiştirilebilir. Her tema, paylaşılan bileşenlerin kendi kopyasını kendi components/ klasöründe tutar.

Classic

Beyaz kartlar ve yumuşak gölgelerle sade, modern bir görünüm — hemen her tür mağaza için güvenli ve çok yönlü bir seçim.

Editorial

Sıcak kağıt tonları ve net tipografiyle temiz, dergi tarzı bir görünüm; cilalı ve güven veren bir vitrin için.

Varsayılan yedek tema
Casino

Altın vurgulu, iddialı ve lüks bir koyu tema — heyecanlı ve üst segment hissettirmek üzere tasarlandı.

Bazaar

Geleneksel çarşılardan esinlenen, sıcak ve zengin süslemeli bir görünüm; sağdan sola dil desteğiyle.

Halloween

Ürpertici, şenlikli bir sezon görünümü — koyu mor zeminler ve parlayan balkabağı turuncusu vurgular.

Ödeme ağ geçitleri

38 otomatik ağ geçidinin her biri bir eklentiye aittir — her biri kendi plugins/gateway-<slug>/ klasöründe durur ve add_payment_gateway() ile kendini çekirdeğe kaydeder. Birini etkinleştirmek yeterlidir; ödeme akışını dağıtan dosyada (payment_processor.php) belirli bir ağ geçidine gömülü hiçbir şey yoktur.

Kartlar ve küresel ödeme sağlayıcıları
2CheckoutAmazon PayAuthorize.NetBlueSnapCheckout.comMollieNMIPayPalPayeerSkrillStripeVenmoWise
Bölgesel ve yerel ödeme sağlayıcıları
AamarpayBkashCashfreeCashmaalFlutterwaveGoCardlessInstamojoInTouchMercado PagoMidtransM-PesaNagadOpenPixPaystackPaytmPayURazorpaySSLCommerz
Kripto para
BinanceBlockchain.comCoinbase CommerceCoinGateCoinPaymentsMoonPayNOWPayments
Manuel (talimat / QR tabanlı)
UPIBank TransferPayTM QR

3 manuel yöntem, çekirdek tarafından eklenen ve yapılandırılacak init/verify kodu bulunmayan gateway_type = 'manual' satırlarıdır — yalnızca ödeme talimatlarını ya da bir QR kodu gösterirler. manual-gateway-builder eklentisi, bir yöneticinin kod yazmadan başka özel manuel ödeme yöntemleri eklemesini sağlar.

Bazı ağ geçitleri (Stripe, Razorpay, Midtrans, Venmo) istemci tarafı JS gerektiren ödeme akışları için ayrıca bir render kancası kaydeder — bir Stripe Checkout başlatıcısı ya da önce sunucu tarafında üretilmiş bir sipariş kimliğine veya token'a ihtiyaç duyan bir Razorpay/Midtrans/Braintree SDK'sı. Diğer bütün ağ geçitleri, çekirdekte hiçbir ek bağlantı olmadan çalışır.

API ve AJAX katmanları

  • api/v1/ — mobil uygulama ve dış tüketiciler için JWT ile kimlik doğrulanan REST API. api/v1/middleware/*.php, Authorization: Bearer <token> başlığını doğrular. Eklentiler kendi uç noktalarını add_api_route() ile ekler.
  • ajax/ — vitrinin kendi JS kodu için (sepet, kuponlar, bildirimler) oturum çerezi ile kimlik doğrulanan dahili AJAX. Token katmanı yok — connection.php tarafından kurulan PHP oturumuna dayanır.
  • Üst düzeydeki serbest api/geo_location.php, exchange-rate.php ve offerwall_postback.php gibi sürümlenmemiş çeşitli uç noktalar.

Mobil uygulama

mobile/ ayrı bir Capacitor + Ionic projesidir — canlı sitenin etrafına sarılmış bir WebView; ne bağımsız bir SPA ne de yalnızca api/v1 tüketen bir istemci. capacitor.config.ts dosyasında server.url sizin alan adınızı gösterir. Kendi package.json dosyası vardır ve proje kökünden derlenmez:

cd mobile npm run sync npm run open:ios npm run open:android

Güncelleme ve geçişler

Canlı bir veritabanında database/migration.sql ya da herhangi bir database/migrations/<slug>/up.sql çalıştırmadan önce anlık yedek alın:

mysqldump --single-transaction -u<user> -p<pass> <db> > pre-deploy-$(date +%Y%m%d-%H%M%S).sql

Çoğu geçiş, yalnızca o tek değişikliği geri alan eşleşen bir down.sql ile gelir. Yapıya ekleme yapmak yerine mevcut veriyi dönüştüren birkaç tanesinde ise down.sql, neden hiçbir şey yapmadığını açıklamakla yetinir — geri dönmeniz gerekirse bunlarda yayın öncesi aldığınız dökümden geri yükleyin.

Güvenlik notları

  • İçe aktarımdan hemen sonra hazır gelen yönetici kimlik bilgilerini değiştirin (bkz. Kurulum).
  • .env, connection.php ve log dosyaları, ürünle gelen .htaccess / nginx kurallarıyla doğrudan HTTP erişimine kapalıdır — bu kuralları kaldırmayın.
  • Yüklenen içerik, PHP olarak çalıştırılamayacak biçimde sunulur; bu kural uygulama düzeyinde değil, web sunucusu yapılandırması düzeyinde uygulanır.
  • Ödeme ağ geçidi kimlik bilgileri yönetim panelinden ağ geçidi bazında yapılandırılır ve sunucu tarafında saklanır — vitrine asla açılmaz.

Test

PHPUnit test paketi yok. composer test, bin/run-probes.php dosyasını çalıştırır; bu betik includes/_probes/ altındaki ve her eklentinin kendi _probes/ klasöründeki tüm probe_*.php dosyalarını toplar, her birini bir CLI alt süreci olarak çalıştırır ve çıkış kodunu denetler.

composer test # run every probe php plugins/<slug>/_probes/probe_*.php # run a single probe directly php bin/run-probes.php --all # also run destructive probes (skipped by default)

Sık sorulan sorular

Hayır. Açık artırma, piyango, gizemli kutu, oyunlar ve mağaza/pazar yeri birbirinden bağımsız eklentilerdir — yalnızca işinizin ihtiyaç duyduklarını açın, diğerlerini yeniden kurulum yapmadan sonradan devreye alın.
Evet. Bir eklentiyi silmek, onun kendi kaldırma betiğini çalıştırır ve yalnızca kendi tablolarını ve dosyalarını siler — sitenin temel işlevleri, belirli bir eklentinin varlığına asla bağlı olmayacak biçimde tasarlanmıştır.
MariaDB. Bazı geçiş dosyaları yalnızca MariaDB'de bulunan SQL söz dizimini kullanır, düz MySQL 8 ise bunu reddeder — hem geliştirmede hem de canlıda MariaDB kullanın.
38 otomatik ağ geçidi eklentisi (kartlar, cüzdanlar, kripto ve bölgesel ödeme sağlayıcıları) ve çekirdek şemanın eklediği 3 manuel yöntem — UPI, Banka Havalesi ve PayTM QR. Manual Gateway Builder eklentisi, kod yazmadan daha fazla manuel yöntem eklemenizi sağlar.

Destek ve kaynaklar

Hâlâ takıldınız mı, yoksa bu sayfanın kapsamadığı bir şey mi lazım?