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.
- WordPress.org: wordpress.org/plugins/transx402-paywall
- Sumber: github.com/campinvestment/transx402-wordpress-plugin
- Slug / folder plugin:
transx402-paywall(v1.0.0)
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)
- Plugins → Add New → cari TransX402 Paywall
- Install dan aktifkan
Dari ZIP
- Unduh
transx402-paywall.zipdari rilis GitHub (folder di dalam ZIP harustransx402-paywall/) - Plugins → Add New → Upload Plugin
- Aktifkan TransX402 Paywall
Configuration
Pengaturan utama
Settings → TransX402:
| Setting | Description |
|---|---|
| API Key | Rahasia ipk_sandbox_... atau ipk_live_... — hanya di server |
| Merchant Wallet | Wallet 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 Mode | Paragraf pertama / N kata pertama / excerpt kustom |
| Paywall Style | Overlay / Inline / Blur |
| Paywall Message | Judul di kartu unlock |
| Enable For | Tipe 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.
| Setting | Description |
|---|---|
| Enable Paywall | Gate konten ini |
| Price (IDR) | Override default (opsional) |
| Preview Content | Preview kustom (opsional) |
Editor dengan edit_post melihat konten penuh plus pemberitahuan. Preview paywall pengunjung dengan ?transx402_as_visitor=1.
Cara kerja
Settlement: server (kanonis)
- Pengunjung membuka post tunggal berpaywall → PHP memotong
the_contentdan memasang.transx402-paywall-root - Klik Pay with IDRX → client terbundel (
settlement: "server") memanggilGET /wp-json/transx402/v1/content/{id} - Tanpa header pembayaran → 402 persyaratan pembayaran
- Pengunjung menandatangani di MetaMask (Permit2)
- Retry dengan
PAYMENT-SIGNATURE→ PHPPOST {facilitator}/facilitatedengan API key rahasia - PHP
GET /payments/{txHash}→ baris di{prefix}transx402_payments→ cookie HttpOnly - 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
- Lihat preview + kartu paywall
- Pay with IDRX → hubungkan MetaMask di CAMP (sandbox) atau Base (live)
- Setujui Permit2 sekali (butuh ETH untuk Path 4)
- Tanda tangani pembayaran
- 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.
- Cookie akses / grant DB → 200
- Tanpa
PAYMENT-SIGNATURE→ 402 - Header ada → PHP facilitate, verifikasi, insert DB, Set-Cookie → 200
Header: PAYMENT-SIGNATURE (retry). Kunjungan ulang memakai cookie akses HttpOnly, bukan header payer.
200:
GET /wp-json/transx402/v1/access/{postId}
Tidak ada GET /wp-json/transx402/v1/config atau /config/public.
Cookie akses
| Nama | transx402_access_{postId} |
| Flag | HttpOnly, 1 tahun, SameSite=Lax, Secure di HTTPS |
Ungkapkan cookie ini di kebijakan privasi / CMP jika diwajibkan. Grant database adalah sumber kebenaran.
Compatibility
| Component | Support |
|---|---|
| WordPress | 6.2+ |
| PHP | 8.0+ |
| Editor | Gutenberg (panel dokumen), metabox Classic |
| Caching | Kecualikan URL berbayar dari full-page cache; HTML preview aman di-cache |
| SEO | Preview dapat diindeks; konten penuh di belakang REST |
Testing with Sandbox
- Key sandbox rahasia (
ipk_sandbox_...) + wallet merchant di pengaturan - Aktifkan paywall pada post; buka saat logout atau
?transx402_as_visitor=1 - Bayar dengan IDRX test di CAMP Testnet (Sandbox)
- Konfirmasi Settings → TransX402 Payments
- 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-SIGNATUREdiproses di server- Verifikasi ke TransX402 sebelum insert DB
- Tidak ada private key atau tanda tangan Permit2 yang disimpan di WordPress