Concepts, value, and typical clone scenarios — less code.
Concepts, value, and typical clone scenarios — less code.
Preparing Ring Platform content
Preparing Ring Platform content
Preparing Ring Platform content
Ring routes card and credit flows through PaymentConductor — one ledger (payment_transactions), one webhook dispatcher, config-driven processors. Operators configure env vars and PSP dashboards; developers read PaymentConductor architecture. DAO jar card chip-ins use purpose public_pool_contribution (Public Pools) — not WayForPay/Stripe/PayPal hosted “donation” products.
Use Founder / Developer tabs in the docs sidebar to filter this page.
Purposes, rails, env overview
Desk-oracle card jar, fees, escrow gate
Handlers, ledger, idempotency, API routes
Env SSOT, HMAC, regularApi password
| Purpose | Typical use | Handler |
|---|---|---|
store_order | Multi-vendor store checkout | conductor/handlers/store-order.ts |
membership_upgrade | SUBSCRIBER → MEMBER | conductor/handlers/membership-upgrade.ts |
news_promotion | News Kingdom paid promotion | conductor/handlers/news-promotion.ts |
wallet_topup | Wallet credit top-up (card) | conductor/handlers/wallet-topup.ts |
public_pool_contribution | Public pool / DAO jar card or PayPal | conductor/handlers/public-pool-contribution.ts |
Processors: WayForPay (default), Stripe, internal credit, native token, PayPal (Orders for store/wallet/jars; Subscriptions v1 for recurring membership — see SubscriptionConductor).
Rails: merchant_redirect · credit_balance (PAYMENT_STORE_ALLOW_CREDIT) · native_token (PAYMENT_STORE_ALLOW_TOKEN).
Apply data/migrations/004_payment_transactions.sql before production payments.
No WAYFORPAY_MERCHANT_ID. Use WAYFORPAY_MERCHANT_ACCOUNT. Set WAYFORPAY_DOMAIN to your clone's approved domain (for this product: ring-platform.org). WAYFORPAY_MERCHANT_PASSWORD is required for recurring / regularApi.
Replace the host with your clone domain:
| Provider | Service URL |
|---|---|
| WayForPay | https://ring-platform.org/api/payments/wayforpay/webhook |
| Stripe | https://ring-platform.org/api/payments/stripe/webhook |
Public HTTPS required. WayForPay / Stripe cannot POST to localhost. Local card tests will open the PSP page, but credit will not settle until serviceUrl is reachable (tunnel or staging). Ring emits returnUrl per request — you do not need a static thank-you page in the WayForPay cabinet. See WayForPay.
Legacy paths /api/payments/wayforpay/callback, , — .
Ring routes card and credit flows through PaymentConductor — one ledger (payment_transactions), one webhook dispatcher, config-driven processors. Operators configure env vars and PSP dashboards; developers read PaymentConductor architecture. DAO jar card chip-ins use purpose public_pool_contribution (Public Pools) — not WayForPay/Stripe/PayPal hosted “donation” products.
Use Founder / Developer tabs in the docs sidebar to filter this page.
Purposes, rails, env overview
Desk-oracle card jar, fees, escrow gate
Handlers, ledger, idempotency, API routes
Env SSOT, HMAC, regularApi password
| Purpose | Typical use | Handler |
|---|---|---|
store_order | Multi-vendor store checkout | conductor/handlers/store-order.ts |
membership_upgrade | SUBSCRIBER → MEMBER | conductor/handlers/membership-upgrade.ts |
news_promotion | News Kingdom paid promotion | conductor/handlers/news-promotion.ts |
wallet_topup | Wallet credit top-up (card) | conductor/handlers/wallet-topup.ts |
public_pool_contribution | Public pool / DAO jar card or PayPal | conductor/handlers/public-pool-contribution.ts |
Processors: WayForPay (default), Stripe, internal credit, native token, PayPal (Orders for store/wallet/jars; Subscriptions v1 for recurring membership — see SubscriptionConductor).
Rails: merchant_redirect · credit_balance (PAYMENT_STORE_ALLOW_CREDIT) · native_token (PAYMENT_STORE_ALLOW_TOKEN).
Apply data/migrations/004_payment_transactions.sql before production payments.
No WAYFORPAY_MERCHANT_ID. Use WAYFORPAY_MERCHANT_ACCOUNT. Set WAYFORPAY_DOMAIN to your clone's approved domain (for this product: ring-platform.org). WAYFORPAY_MERCHANT_PASSWORD is required for recurring / regularApi.
Replace the host with your clone domain:
| Provider | Service URL |
|---|---|
| WayForPay | https://ring-platform.org/api/payments/wayforpay/webhook |
| Stripe | https://ring-platform.org/api/payments/stripe/webhook |
Public HTTPS required. WayForPay / Stripe cannot POST to localhost. Local card tests will open the PSP page, but credit will not settle until serviceUrl is reachable (tunnel or staging). Ring emits returnUrl per request — you do not need a static thank-you page in the WayForPay cabinet. See WayForPay.
Legacy paths /api/payments/wayforpay/callback, , — .
Ring routes card and credit flows through PaymentConductor — one ledger (payment_transactions), one webhook dispatcher, config-driven processors. Operators configure env vars and PSP dashboards; developers read PaymentConductor architecture. DAO jar card chip-ins use purpose public_pool_contribution (Public Pools) — not WayForPay/Stripe/PayPal hosted “donation” products.
Use Founder / Developer tabs in the docs sidebar to filter this page.
Purposes, rails, env overview
Desk-oracle card jar, fees, escrow gate
Handlers, ledger, idempotency, API routes
Env SSOT, HMAC, regularApi password
| Purpose | Typical use | Handler |
|---|---|---|
store_order | Multi-vendor store checkout | conductor/handlers/store-order.ts |
membership_upgrade | SUBSCRIBER → MEMBER | conductor/handlers/membership-upgrade.ts |
news_promotion | News Kingdom paid promotion | conductor/handlers/news-promotion.ts |
wallet_topup | Wallet credit top-up (card) | conductor/handlers/wallet-topup.ts |
public_pool_contribution | Public pool / DAO jar card or PayPal | conductor/handlers/public-pool-contribution.ts |
Processors: WayForPay (default), Stripe, internal credit, native token, PayPal (Orders for store/wallet/jars; Subscriptions v1 for recurring membership — see SubscriptionConductor).
Rails: merchant_redirect · credit_balance (PAYMENT_STORE_ALLOW_CREDIT) · native_token (PAYMENT_STORE_ALLOW_TOKEN).
Apply data/migrations/004_payment_transactions.sql before production payments.
No WAYFORPAY_MERCHANT_ID. Use WAYFORPAY_MERCHANT_ACCOUNT. Set WAYFORPAY_DOMAIN to your clone's approved domain (for this product: ring-platform.org). WAYFORPAY_MERCHANT_PASSWORD is required for recurring / regularApi.
Replace the host with your clone domain:
| Provider | Service URL |
|---|---|
| WayForPay | https://ring-platform.org/api/payments/wayforpay/webhook |
| Stripe | https://ring-platform.org/api/payments/stripe/webhook |
Public HTTPS required. WayForPay / Stripe cannot POST to localhost. Local card tests will open the PSP page, but credit will not settle until serviceUrl is reachable (tunnel or staging). Ring emits returnUrl per request — you do not need a static thank-you page in the WayForPay cabinet. See WayForPay.
Legacy paths /api/payments/wayforpay/callback, , — .
/success/failureDeprecated aliases (still work — migrate when convenient):
/api/store/payments/wayforpay/webhook/api/news/promotion/wayforpay-webhookMigration 004_payment_transactions.sql applied on production Postgres.
PAYMENT_* and WayForPay / Stripe credentials in secrets manager (never commit .env.local).
Canonical webhook URLs registered; WAYFORPAY_DOMAIN matches the approved merchant domain.
Staging smoke: store checkout, membership card upgrade, news promotion (if used), wallet credit top-up.
Post go-live: monitor payment_transactions for stuck pending / redirected rows; use Admin → user → Payments tab for membership / wallet top-up history.
app/api/admin/users/[id]/payments/route.ts| GET |
Admin Payments tab (listByUserId) |
WayForPay routes by orderReference prefix (store_, membership_, news-promo-…, wallettopup_) — see lib/payments/conductor/webhook-dispatcher.ts and lib/payments/order-reference.ts.
Create a merchant account at wayforpay.com — KYC, note merchant account, secret key, merchant password, approved domain.
Set Ring env vars from env.local.template (also mirrored in docker.env.template / docker-compose.template.yml).
Cabinet service URL: https://<your-domain>/api/payments/wayforpay/webhook.
Staging: migration 004 → test checkout / membership / wallet top-up → confirm payment_transactions + fulfillment.
Create account at stripe.com; obtain test or live API keys.
Dashboard → Webhooks → endpoint https://<your-domain>/api/payments/stripe/webhook. Subscribe to checkout.session.completed (and events your processor handles).
/success/failureDeprecated aliases (still work — migrate when convenient):
/api/store/payments/wayforpay/webhook/api/news/promotion/wayforpay-webhookMigration 004_payment_transactions.sql applied on production Postgres.
PAYMENT_* and WayForPay / Stripe credentials in secrets manager (never commit .env.local).
Canonical webhook URLs registered; WAYFORPAY_DOMAIN matches the approved merchant domain.
Staging smoke: store checkout, membership card upgrade, news promotion (if used), wallet credit top-up.
Post go-live: monitor payment_transactions for stuck pending / redirected rows; use Admin → user → Payments tab for membership / wallet top-up history.
app/api/admin/users/[id]/payments/route.ts| GET |
Admin Payments tab (listByUserId) |
WayForPay routes by orderReference prefix (store_, membership_, news-promo-…, wallettopup_) — see lib/payments/conductor/webhook-dispatcher.ts and lib/payments/order-reference.ts.
Create a merchant account at wayforpay.com — KYC, note merchant account, secret key, merchant password, approved domain.
Set Ring env vars from env.local.template (also mirrored in docker.env.template / docker-compose.template.yml).
Cabinet service URL: https://<your-domain>/api/payments/wayforpay/webhook.
Staging: migration 004 → test checkout / membership / wallet top-up → confirm payment_transactions + fulfillment.
Create account at stripe.com; obtain test or live API keys.
Dashboard → Webhooks → endpoint https://<your-domain>/api/payments/stripe/webhook. Subscribe to checkout.session.completed (and events your processor handles).
/success/failureDeprecated aliases (still work — migrate when convenient):
/api/store/payments/wayforpay/webhook/api/news/promotion/wayforpay-webhookMigration 004_payment_transactions.sql applied on production Postgres.
PAYMENT_* and WayForPay / Stripe credentials in secrets manager (never commit .env.local).
Canonical webhook URLs registered; WAYFORPAY_DOMAIN matches the approved merchant domain.
Staging smoke: store checkout, membership card upgrade, news promotion (if used), wallet credit top-up.
Post go-live: monitor payment_transactions for stuck pending / redirected rows; use Admin → user → Payments tab for membership / wallet top-up history.
app/api/admin/users/[id]/payments/route.ts| GET |
Admin Payments tab (listByUserId) |
WayForPay routes by orderReference prefix (store_, membership_, news-promo-…, wallettopup_) — see lib/payments/conductor/webhook-dispatcher.ts and lib/payments/order-reference.ts.
Create a merchant account at wayforpay.com — KYC, note merchant account, secret key, merchant password, approved domain.
Set Ring env vars from env.local.template (also mirrored in docker.env.template / docker-compose.template.yml).
Cabinet service URL: https://<your-domain>/api/payments/wayforpay/webhook.
Staging: migration 004 → test checkout / membership / wallet top-up → confirm payment_transactions + fulfillment.
Create account at stripe.com; obtain test or live API keys.
Dashboard → Webhooks → endpoint https://<your-domain>/api/payments/stripe/webhook. Subscribe to checkout.session.completed (and events your processor handles).