TransX402 Docs
Integrasi

Plugin WordPress

TransX402 Paywall 1.0 — paywall IDRX di WordPress dengan settlement server, tanpa kode aplikasi.

Overview

TransX402 Paywall memonetisasi post dan page WordPress dengan pembayaran mikro IDRX — tanpa kode aplikasi. Pasang plugin, masukkan API key rahasia dan wallet merchant, tentukan harga IDR, dan aktifkan paywall per post.

Plugin menyertakan @transx402/client dan menyelesaikan pembayaran di PHP. Plugin tidak memuat script CDN publik dan tidak punya shortcode. Gutenberg adalah panel pengaturan dokumen, bukan blok.

Requirements

  • WordPress 6.2+
  • PHP 8.0+
  • Akun TransX402 (dashboard.transx402.com)
  • Pengunjung: MetaMask (EIP-1193) dengan IDRX di jaringan yang sesuai

Installation

Dari WordPress.org (disarankan)

  1. Plugins → Add New → cari TransX402 Paywall
  2. Install dan aktifkan

Dari ZIP

  1. Unduh transx402-paywall.zip dari rilis GitHub (folder di dalam ZIP harus transx402-paywall/)
  2. Plugins → Add New → Upload Plugin
  3. Aktifkan TransX402 Paywall

Configuration

Pengaturan utama

Settings → TransX402:

SettingDescription
API KeyRahasia ipk_sandbox_... atau ipk_live_... — hanya di server
Merchant WalletWallet payout dashboard (0x…). Wajib sebelum pembayaran pertama
Facilitator URL (opsional)Override lokal (http://localhost:3402). Kosongkan untuk https://api.transx402.com
Default Price (IDR)Harga default (mis. 5000)
Preview ModeParagraf pertama / N kata pertama / excerpt kustom
Paywall StyleOverlay / Inline / Blur
Paywall MessageJudul di kartu unlock
Enable ForTipe post publik (aktifkan Page jika paywall halaman)

Parameter jaringan dan token berasal dari GET /config fasilitator (diambil di PHP). Setelah pembayaran sukses, wallet merchant bisa di-cache di pengaturan — itu tidak menggantikan pengisian sebelum tagihan pertama.

Per-post / page

Di editor blok: sidebar dokumen TransX402 Paywall. Editor klasik: field yang sama di metabox samping.

SettingDescription
Enable PaywallGate konten ini
Price (IDR)Override default (opsional)
Preview ContentPreview kustom (opsional)

Editor dengan edit_post melihat konten penuh plus pemberitahuan. Preview paywall pengunjung dengan ?transx402_as_visitor=1.

Cara kerja

Settlement: server (kanonis)

  1. Pengunjung membuka post tunggal berpaywall → PHP memotong the_content dan memasang .transx402-paywall-root
  2. Klik Pay with IDRX → client terbundel (settlement: "server") memanggil GET /wp-json/transx402/v1/content/{id}
  3. Tanpa header pembayaran → 402 persyaratan pembayaran
  4. Pengunjung menandatangani di MetaMask (Permit2)
  5. Retry dengan PAYMENT-SIGNATURE → PHP POST {facilitator}/facilitate dengan API key rahasia
  6. PHP GET /payments/{txHash} → baris di {prefix}transx402_payments → cookie HttpOnly
  7. HTML penuh dikembalikan; reload memulihkan akses dari cookie + DB

Browser tidak pernah melihat API key. PHP juga melokalisasi config fasilitator; paywall.js mencegat fetch client …/transx402/v1/config sehingga tidak ada proxy REST config publik.

Excerpt, RSS/feed, embed, dan REST inti content/excerpt juga di-gate untuk tipe post yang diaktifkan.

Untuk pengunjung

  1. Lihat preview + kartu paywall
  2. Pay with IDRX → hubungkan MetaMask di CAMP (sandbox) atau Base (live)
  3. Setujui Permit2 sekali (butuh ETH untuk Path 4)
  4. Tanda tangani pembayaran
  5. Artikel terbuka; kunjungan ulang gratis via cookie + DB

Riwayat pembayaran

Settings → TransX402 Payments — tanggal, post, pembayar, jumlah IDR, tautan tx, status.

Setiap baris {prefix}transx402_payments menyimpan hash tx, pembayar, jumlah, ID post, jaringan, URL resource, waktu verifikasi.

Gaya paywall

  • Overlay (default) — kartu di tengah di atas konten terpotong
  • Inline — kartu setelah preview
  • Blur — preview blur dengan tombol bayar mengambang

REST API WordPress

Namespace: transx402/v1. Hanya rute ini yang ada:

GET /wp-json/transx402/v1/content/{postId}

HTML penuh setelah pembayaran atau grant yang sudah ada.

  1. Cookie akses / grant DB → 200
  2. Tanpa PAYMENT-SIGNATURE → 402
  3. Header ada → PHP facilitate, verifikasi, insert DB, Set-Cookie → 200

Header: PAYMENT-SIGNATURE (retry). Kunjungan ulang memakai cookie akses HttpOnly, bukan header payer.

200:

{
  "content": "<p>Full article HTML...</p>",
  "paid": true,
  "txHash": "0x...",
  "payer": "0x..."
}

GET /wp-json/transx402/v1/access/{postId}

{
  "granted": true,
  "payer": "0x..."
}

Tidak ada GET /wp-json/transx402/v1/config atau /config/public.

Namatransx402_access_{postId}
FlagHttpOnly, 1 tahun, SameSite=Lax, Secure di HTTPS

Ungkapkan cookie ini di kebijakan privasi / CMP jika diwajibkan. Grant database adalah sumber kebenaran.

Compatibility

ComponentSupport
WordPress6.2+
PHP8.0+
EditorGutenberg (panel dokumen), metabox Classic
CachingKecualikan URL berbayar dari full-page cache; HTML preview aman di-cache
SEOPreview dapat diindeks; konten penuh di belakang REST

Testing with Sandbox

  1. Key sandbox rahasia (ipk_sandbox_...) + wallet merchant di pengaturan
  2. Aktifkan paywall pada post; buka saat logout atau ?transx402_as_visitor=1
  3. Bayar dengan IDRX test di CAMP Testnet (Sandbox)
  4. Konfirmasi Settings → TransX402 Payments
  5. Go live: ipk_live_... + wallet production; hapus URL fasilitator lokal

Security

  • API key rahasia di wp_options — tidak pernah di browser
  • HTML post penuh tidak ada di halaman awal untuk post berbayar
  • PAYMENT-SIGNATURE diproses di server
  • Verifikasi ke TransX402 sebelum insert DB
  • Tidak ada private key atau tanda tangan Permit2 yang disimpan di WordPress