內容簡介
Bouzin Pay 是一款為 WordPress 提供 Stripe 管理介面的外掛,具備銷售儀表板、產品及價格管理、付款連結等功能,幫助商家輕鬆管理線上支付與客戶帳戶。
【主要功能】
• 銷售儀表板與產品管理
• 客戶帳戶區域與個人化歡迎畫面
• 加密數位檔案下載管理
• 產品 CSV 匯入與匯出功能
• 庫存管理選項
外掛標籤
開發者團隊
原文外掛簡介
Bouzin Pay provides a WordPress administration interface for Stripe. It includes a sales dashboard, product and price management, payment links, customers, invoices, subscriptions, refunds, promotion codes, disputes, payouts, signed webhooks, and customer access tools.
The Bouzin Pay Customer Account block creates a customer area on the page selected in Bouzin Pay settings. A single block provides a personalized welcome screen, accessible tabs, an account summary, confirmed purchases, protected digital downloads, subscription status and renewal dates, targeted Stripe cancellation flows with confirmation, Stripe-hosted invoices or invoice PDFs, profile information, confirmed WordPress account deletion, optional merchant support contacts, secure billing management, and logout.
The Digital Files submenu attaches one or more downloadable files to a Stripe product. Originals never enter the public Media Library: Bouzin Pay encrypts them in bounded chunks before writing opaque containers to a guarded private vault. Every download requires a signed-in WordPress account, a user-bound nonce, the correct TEST/LIVE mode, and either a confirmed non-refunded purchase or an active subscription. A full refund revokes only the affected purchase; another valid purchase remains usable.
The interface is available in English and French. English is the source language, and a complete French translation is bundled with the plugin.
Add the Bouzin Pay – Shop block to display active, locally synchronized products automatically, with images, descriptions, prices and checkout buttons. The new Products CSV submenu provides a UTF-8 CSV export, validated import preview and explicitly confirmed, resumable import. CSV prices use integer minor currency units (e.g. 2990 for CHF 29.90). Inventory quantities are managed separately, not imported from CSV.
The Stock submenu offers an optional Manage stock checkbox per product, off by default. One-time, fixed-price products can reserve one unit during Checkout and consume it once payment is confirmed. A sold-out product cannot start another Checkout. Pending asynchronous payments keep their reservation. Confirmed expiration or failure releases it; refunds do not automatically replenish stock.
Stock applies exclusively to this site’s Bouzin Pay checkout. Direct Stripe Payment Links, other websites, manual invoices and recurring prices must not sell the same tracked products. Existing external links, recurring prices, unpaid invoices and pending sessions are checked before activation. Large histories that cannot be completely checked within the safety limit require manual review (500 active links, 100 prices per product, 1000 sessions/invoices). Stock requires MySQL/MariaDB InnoDB and connection-owned GET_LOCK support. Repair the Stripe webhook connection after upgrading, and ensure WP-Cron runs regularly. This also verifies the Stripe account; restricted keys need account-read access and read access to Checkout Sessions, line items, Payment Intents, prices, links and invoices, plus the existing checkout/webhook permissions.
Exclude shop, purchase, protected-content and customer-account pages from full-page/CDN caching and clear their old cache after upgrading. The plugin marks these recognized pages and personalized REST responses as non-cacheable; every purchase still checks availability on the server. A cache or CDN that serves a response before WordPress runs must be configured separately. Also exclude these pages from third-party search indexes, static exports and page-builder caches.
The plugin keeps test and live credentials separate. API keys can be stored encrypted at rest or supplied through constants in wp-config.php. A restricted Stripe key with only the permissions required by the enabled features is recommended.
The following constants are supported and take priority over database settings:
BOUZIN_PAY_STRIPE_TEST_KEY
BOUZIN_PAY_STRIPE_LIVE_KEY
BOUZIN_PAY_STRIPE_TEST_WEBHOOK_SECRET
BOUZIN_PAY_STRIPE_LIVE_WEBHOOK_SECRET
Security
Separate test and live keys.
Server-side validation of products, prices, status, associations, and mode.
WordPress access is granted only after confirmation of a paid and trusted Checkout Session.
Signed webhooks with atomic deduplication and controlled retries.
Idempotency keys for Stripe creation and action requests.
Separate WordPress capabilities for sensitive operations.
Redacted technical logs that exclude API keys, webhook secrets, signatures, client secrets, and payment methods.
Signed checkout configuration and ownership checks before protected digital content is displayed.
Authenticated, rate-limited digital delivery from encrypted containers whose storage path is never exposed to customers.
External service
This plugin connects to Stripe to create and manage payment-related objects and to process checkout and customer portal requests. Data sent to Stripe can include customer contact information, product and price identifiers, transaction details, subscription details, and request metadata required to perform the selected operation.
Stripe is an external service. Its use is subject to the Stripe Services Agreement and Stripe Privacy Policy.
If an administrator adds a product image hosted by another provider, visitors’ browsers contact that image host when the shop is displayed. The administrator is responsible for disclosing that provider where required.
Development
Readable, uncompressed JavaScript and CSS source for every generated frontend asset is included in the source directory. The source-to-bundle mapping and build instructions are documented in source/README.md; the exact npm dependency and build commands are declared in package.json and locked in package-lock.json.
The catalogue assets in catalogue/assets are readable runtime source and require no bundling. Its PHP source, CSV examples and gettext generation script are included.
Credits and licenses
Bouzin Pay is derived from WPMarmite Pay 1.5.5. The original work is Copyright (C) 2024 WPMarmite, and the Bouzin Pay modifications are Copyright (C) 2026 Bouzin. WPMarmite is not affiliated with and does not provide support for Bouzin Pay.
Third-party copyright and license notices for Stripe PHP, Composer, Terser, and the included CA certificate bundle are provided in THIRD-PARTY-NOTICES.txt.
Privacy
Bouzin Pay can store Stripe identifiers, customer contact details, payment states, invoices, subscriptions, related object summaries, redacted logs, and webhook processing history in the WordPress database. It does not store full card numbers or full bank details.
Protected digital content is linked to a Stripe product and remains subject to a server-side ownership check on each request. The plugin stores encrypted file metadata, purchase entitlements, refund state and an aggregate download count, but no IP address in digital download records. Invoice files and hosted invoice pages are delivered by Stripe and are not copied into the WordPress media library.
Optional inventory stores product/session identifiers, quantities, revisions and durable deduplication records. A pending checkout creation request, which can include an email/customer identifier and return URLs, is encrypted locally until its session is recovered. Once the session is known, this payload is cleared. Unknown payments retain their reservation and recovery data for administrator review; no browser cancellation or local time limit silently releases them. Terminal stock attempts and paid/released reservation records are removed after 180 days in bounded daily batches; pending and uncertain payments are never removed automatically.
The plugin adds suggested privacy-policy text in the WordPress privacy guide. Site administrators remain responsible for adapting that text to their actual configuration and legal obligations.
The WordPress personal-data tools export local customer snapshots and purchase access, including customer records without a remaining WordPress account. Erasure removes contact details, free text, metadata and invoice download URLs from the local cache and removes the WordPress purchase/subscription associations. The same cleanup runs on account deletion. Unresolved encrypted checkout recovery must be resolved first; the eraser reports retained data instead of deleting payment recovery state.
Once a successful refund has revoked purchase access, a later refund delivery or bank refund failure does not automatically restore that access; the merchant must resolve the failed refund with the buyer.
Minimal financial identifiers and amounts, revoked purchase tombstones and keyed erasure fingerprints remain locally until explicit full removal of plugin data. These pseudonymous records prevent duplicate settlement, delayed webhook access restoration and reimport of erased contact details. The privacy eraser explicitly reports this retention. The suppression key is stored separately from WordPress authentication salts. Regular synchronization keeps other customer summaries until erasure or complete plugin-data removal; the merchant must define any further retention required for their business. No local privacy operation cancels billing or deletes Stripe’s records. A fresh authorized Stripe lookup in the administration can still retrieve records retained by Stripe.
