{"id":365607,"date":"2026-09-14T05:46:48","date_gmt":"2026-09-14T05:46:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/wcp-blockchain-authenticity-for-woocommerce\/"},"modified":"2026-09-14T07:17:21","modified_gmt":"2026-09-14T07:17:21","slug":"wcp-blockchain-authenticity-certificates","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/wcp-blockchain-authenticity-certificates\/","author":23562492,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"7.4.2","stable_tag":"7.4.2","tested":"7.0.4","requires":"6.3","requires_php":"8.0","requires_plugins":null,"header_name":"WCP Blockchain Authenticity Certificates","header_author":"WooChain Pro","header_description":"Issue verifiable certificates of authenticity for WooCommerce orders, recorded on Optimism, Arbitrum or Solana. Customers opt in at checkout.","assets_banners_color":"0b1322","last_updated":"2026-09-14 07:17:21","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/woochainpro.com","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":44,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"7.4.2":{"tag":"7.4.2","author":"woochainpro","date":"2026-09-14 07:17:21","revision":3694651}},"upgrade_notice":{"4.0.0":"<p>Security release. Delete wp-content\/uploads\/wcbm-debug.log and reconnect your\nwallet to rotate credentials. See UPGRADING.md.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3694613,"resolution":"128x128","location":"assets","locale":"","width":128,"height":172},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3694613,"resolution":"256x256","location":"assets","locale":"","width":256,"height":345}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3694613,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":574},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3694613,"resolution":"772x250","location":"assets","locale":"","width":772,"height":287}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["7.4.2"],"block_files":[],"assets_screenshots":{"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3694613,"resolution":"1","location":"assets","locale":"","width":1569,"height":892},"screenshot-10.png":{"filename":"screenshot-10.png","revision":3694613,"resolution":"10","location":"assets","locale":"","width":1536,"height":864},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":3694613,"resolution":"2","location":"assets","locale":"","width":1568,"height":883},"screenshot-3.jpg":{"filename":"screenshot-3.jpg","revision":3694613,"resolution":"3","location":"assets","locale":"","width":1564,"height":887},"screenshot-4.jpg":{"filename":"screenshot-4.jpg","revision":3694613,"resolution":"4","location":"assets","locale":"","width":1564,"height":881},"screenshot-5.jpg":{"filename":"screenshot-5.jpg","revision":3694613,"resolution":"5","location":"assets","locale":"","width":1728,"height":926},"screenshot-6.jpg":{"filename":"screenshot-6.jpg","revision":3694613,"resolution":"6","location":"assets","locale":"","width":1536,"height":931},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3694613,"resolution":"7","location":"assets","locale":"","width":1536,"height":922},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3694613,"resolution":"8","location":"assets","locale":"","width":1536,"height":864},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3694613,"resolution":"9","location":"assets","locale":"","width":1536,"height":864}},"screenshots":{"1":"The dashboard after connecting your wallet \u2014 status ready and domain verified.","2":"The plugin Settings page.","3":"The Setup &amp; Help page.","4":"The Easy Guide Setup walkthrough.","5":"The certificate in a MetaMask wallet after issuance.","6":"Successful contract verification.","7":"Certificate metadata.","8":"A verified certificate.","9":"The Check a Certificate page, where anyone can search shops and their deployment history.","10":"A shop's certificate history."}},"plugin_section":[],"plugin_tags":[225241,17224,2191,261422,286],"plugin_category":[45],"plugin_contributors":[280576],"plugin_business_model":[],"class_list":["post-365607","plugin","type-plugin","status-publish","hentry","plugin_tags-authenticity","plugin_tags-blockchain","plugin_tags-certificate","plugin_tags-provenance","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-woochainpro","plugin_committers-woochainpro"],"banners":{"banner":"https:\/\/ps.w.org\/wcp-blockchain-authenticity-certificates\/assets\/banner-772x250.png?rev=3694613","banner_2x":"https:\/\/ps.w.org\/wcp-blockchain-authenticity-certificates\/assets\/banner-1544x500.png?rev=3694613","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/wcp-blockchain-authenticity-certificates\/assets\/icon-128x128.png?rev=3694613","icon_2x":"https:\/\/ps.w.org\/wcp-blockchain-authenticity-certificates\/assets\/icon-256x256.png?rev=3694613","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/wcp-blockchain-authenticity-certificates\/assets\/screenshot-1.jpg?rev=3694613","caption":"The dashboard after connecting your wallet \u2014 status ready and domain verified."},{"src":"https:\/\/ps.w.org\/wcp-blockchain-authenticity-certificates\/assets\/screenshot-2.jpg?rev=3694613","caption":"The plugin Settings page."},{"src":"https:\/\/ps.w.org\/wcp-blockchain-authenticity-certificates\/assets\/screenshot-3.jpg?rev=3694613","caption":"The Setup &amp; Help page."},{"src":"https:\/\/ps.w.org\/wcp-blockchain-authenticity-certificates\/assets\/screenshot-4.jpg?rev=3694613","caption":"The Easy Guide Setup walkthrough."},{"src":"https:\/\/ps.w.org\/wcp-blockchain-authenticity-certificates\/assets\/screenshot-5.jpg?rev=3694613","caption":"The certificate in a MetaMask wallet after issuance."},{"src":"https:\/\/ps.w.org\/wcp-blockchain-authenticity-certificates\/assets\/screenshot-6.jpg?rev=3694613","caption":"Successful contract verification."},{"src":"https:\/\/ps.w.org\/wcp-blockchain-authenticity-certificates\/assets\/screenshot-7.png?rev=3694613","caption":"Certificate metadata."},{"src":"https:\/\/ps.w.org\/wcp-blockchain-authenticity-certificates\/assets\/screenshot-8.png?rev=3694613","caption":"A verified certificate."},{"src":"https:\/\/ps.w.org\/wcp-blockchain-authenticity-certificates\/assets\/screenshot-9.png?rev=3694613","caption":"The Check a Certificate page, where anyone can search shops and their deployment history."},{"src":"https:\/\/ps.w.org\/wcp-blockchain-authenticity-certificates\/assets\/screenshot-10.png?rev=3694613","caption":"A shop's certificate history."}],"raw_content":"<!--section=description-->\n<p>Customers opt in at checkout, choose a network, connect a wallet, and receive a\ncertificate of authenticity for their purchase. The certificate is written to a\npublic blockchain, so it stays verifiable by anyone, forever, and does not\ndepend on your store \u2014 or this plugin \u2014 continuing to exist.<\/p>\n\n<p>Watch the full setup walkthrough:<\/p>\n\n<p>[youtube https:\/\/www.youtube.com\/watch?v=-_Z4VlWKvv4]<\/p>\n\n<p><strong>How it works<\/strong><\/p>\n\n<ol>\n<li>You connect a wallet and deploy a smart contract for your shop.<\/li>\n<li>Customers see an optional certificate box at checkout.<\/li>\n<li>When an order reaches the status you choose, a certificate is issued to the\ncustomer's wallet.<\/li>\n<\/ol>\n\n<p><strong>Opt-in by design.<\/strong> A customer who ignores the option checks out exactly as\nbefore and is charged nothing extra.<\/p>\n\n<p><strong>Permanent seller rights.<\/strong> When your contract is created you choose whether\nyour shop may freeze, revoke, or force-transfer certificates. Those choices are\nwritten into the contract permanently and are shown to every customer before\nthey agree. Most shops should choose none of them.<\/p>\n\n<p><strong>Supported networks:<\/strong> Optimism, Arbitrum, Solana.<\/p>\n\n<h4>What this plugin sends to an external service<\/h4>\n\n<p>This plugin is a client for the WooChain Pro platform, a paid third-party\nservice that performs the blockchain operations. <strong>The plugin cannot work\nwithout it.<\/strong> You will need an account.<\/p>\n\n<p>Data sent to the platform, and when:<\/p>\n\n<ul>\n<li><strong>When you connect your shop<\/strong> \u2014 your shop domain, admin email address, and\nthe wallet address you connect. You sign a message to prove you control the\nwallet; no private key is ever transmitted, and signing costs no gas.<\/li>\n<li><strong>When a customer opts in at checkout<\/strong> \u2014 the wallet address they provide and\nthe selected network, so the address can be validated before an order is\nplaced.<\/li>\n<li><strong>When an order qualifies for a certificate<\/strong> \u2014 the order number, the\ncustomer's wallet address, product names, SKUs, batch numbers and the product\nimage URL. This is the information written into the certificate.<\/li>\n<li><strong>Periodically<\/strong> \u2014 your subscription status, balance and contract state, so\nthe dashboard and checkout can show whether certificates are currently\navailable.<\/li>\n<\/ul>\n\n<p>Customer names, billing and shipping addresses, email addresses, phone numbers\nand payment details are <strong>not<\/strong> sent.<\/p>\n\n<p>Service: WooChain Pro \u2014 https:\/\/woochainpro.com\nTerms of service: https:\/\/woochainpro.com\/terms\nPrivacy policy: https:\/\/woochainpro.com\/privacy<\/p>\n\n<h4>Costs<\/h4>\n\n<p>Issuing a certificate costs blockchain network fees, plus a platform\ncommission. You pre-fund a USDC balance with the service and each certificate\ndraws from it. Separately, you decide what (if anything) to charge your own\ncustomer at checkout \u2014 it can be more than your cost, the same, or zero.<\/p>\n\n<h4>Third-party libraries<\/h4>\n\n<ul>\n<li>qr-scanner 1.4.2 by Nimiq (MIT) \u2014 reads a wallet address from a QR code.\nBundled in <code>assets\/vendor\/qr-scanner\/<\/code> with its original source and licence.\nUpstream: https:\/\/github.com\/nimiq\/qr-scanner<\/li>\n<li>qrcode-generator 1.4.4 by Kazuhiko Arase (MIT) \u2014 renders the payment QR code\nin the shop dashboard. Bundled in <code>assets\/vendor\/qrcode-generator\/<\/code> as\noriginal unminified source.\nUpstream: https:\/\/github.com\/kazuhikoarase\/qrcode-generator<\/li>\n<\/ul>\n\n<h3>Connect With Us<\/h3>\n\n<ul>\n<li><strong>Website &amp; support:<\/strong> https:\/\/woochainpro.com\/contact-support\/<\/li>\n<li><strong>YouTube:<\/strong> https:\/\/www.youtube.com\/@WoochainproPlugin<\/li>\n<li><strong>LinkedIn:<\/strong> https:\/\/www.linkedin.com\/in\/woochainpro-authenticity-689723434<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin and activate it.<\/li>\n<li>Go to <strong>WCP \u2192 Settings<\/strong> and enter your platform URL.<\/li>\n<li>Go to <strong>WCP \u2192 Dashboard<\/strong> and connect your wallet.<\/li>\n<li>Add credit, choose a plan, and deploy a contract.<\/li>\n<li>Tick <strong>Offer certificates at checkout<\/strong> in Settings.<\/li>\n<\/ol>\n\n<p>Full setup notes are under <strong>WCP \u2192 Setup &amp; Help<\/strong> inside your admin.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20customers%20have%20to%20use%20this%3F\"><h3>Do customers have to use this?<\/h3><\/dt>\n<dd><p>No. It is entirely optional at checkout. Customers who skip it pay nothing\nextra and check out normally.<\/p><\/dd>\n<dt id=\"can%20i%20change%20the%20seller%20rights%20later%3F\"><h3>Can I change the seller rights later?<\/h3><\/dt>\n<dd><p>No. They are written into the smart contract permanently when it is created \u2014\nthat is what makes the promise shown to customers meaningful. To change them\nyou would deploy a new contract, which does not affect certificates already\nissued.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20a%20customer%20enters%20the%20wrong%20wallet%20address%3F\"><h3>What happens if a customer enters the wrong wallet address?<\/h3><\/dt>\n<dd><p>On Optimism and Arbitrum, addresses carry a checksum, so most typos are\ndetected and rejected before the order is placed. Solana addresses have no\nchecksum: a typo usually produces another valid-looking address, and a\ncertificate sent there cannot be recovered by anyone. Connecting a wallet is\nalways safer than pasting.<\/p><\/dd>\n<dt id=\"can%20one%20order%20produce%20two%20certificates%3F\"><h3>Can one order produce two certificates?<\/h3><\/dt>\n<dd><p>No. This is prevented in four independent places, including the smart contract\nitself, so a retry, a network fault or a restored database backup cannot\nproduce a duplicate.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20stop%20paying%2C%20or%20uninstall%20the%20plugin%3F\"><h3>What happens if I stop paying, or uninstall the plugin?<\/h3><\/dt>\n<dd><p>Certificates already issued are unaffected \u2014 they live on the blockchain, not\non our servers or in your database. The checkout option simply stops appearing.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20the%20block-based%20checkout%3F\"><h3>Does this work with the block-based checkout?<\/h3><\/dt>\n<dd><p>Yes, and with the classic shortcode checkout.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>7.4.2<\/h4>\n\n<ul>\n<li>FIXED: the download button threw an error and did nothing.<\/li>\n<li>FIXED: the flattened source was missing most of its dependencies, so\nblock explorers could not compile it.<\/li>\n<\/ul>\n\n<h4>7.4.1<\/h4>\n\n<ul>\n<li>FIXED: the \"Download all as .zip\" button did nothing.<\/li>\n<li>FIXED: contracts on a test network were reported as not matching our\ntemplate, and their explorer links pointed at the wrong network.<\/li>\n<\/ul>\n\n<h4>7.4.0<\/h4>\n\n<ul>\n<li>The verification panel now shows the Standard JSON Input and the flattened\nsource, each with a copy button, plus a download of the whole package.<\/li>\n<li>The block explorer link now goes to the test explorer for a contract on a\ntest network, where its address actually exists.<\/li>\n<\/ul>\n\n<h4>7.3.0<\/h4>\n\n<ul>\n<li>Renamed to WCP Blockchain Authenticity Certificates.<\/li>\n<li>The verification package now contains a Standard JSON Input file and a\nflattened source, so your contract can actually be verified on a block\nexplorer. The plain source file never could.<\/li>\n<\/ul>\n\n<h4>7.2.1<\/h4>\n\n<ul>\n<li>FIXED: a critical error on every admin page after updating.<\/li>\n<\/ul>\n\n<h4>7.2.0<\/h4>\n\n<ul>\n<li>New guided setup that walks through connecting, verifying, funding and\ndeploying, doing each step for you and pausing for your approval.<\/li>\n<li>The seller rights are still chosen by you: they are permanent, so nothing\nis pre-selected and the setup will not proceed until you decide.<\/li>\n<\/ul>\n\n<h4>7.1.0<\/h4>\n\n<ul>\n<li>Certificates now show a QR code that opens the public verification page,\nso a buyer can check an item without typing a contract address.<\/li>\n<\/ul>\n\n<h4>7.0.1<\/h4>\n\n<ul>\n<li>FIXED: the plugin could not be activated.<\/li>\n<\/ul>\n\n<h4>7.0.0<\/h4>\n\n<ul>\n<li>Renamed to Blockchain Authenticity Certificates. Your settings, wallet\nconnection and existing certificates carry over automatically.<\/li>\n<li>The plugin no longer contacts our servers until you have connected your\nshop. Activating it does nothing on its own.<\/li>\n<li>All internal names now carry a longer, unique prefix.<\/li>\n<li>Diagnostic logs moved into the uploads directory.<\/li>\n<li>The [wcp_badge] shortcode keeps working; new installs should use\n[bacert_badge].<\/li>\n<\/ul>\n\n<h4>6.3.0<\/h4>\n\n<ul>\n<li>Sites that block automated requests \u2014 behind a firewall, bot protection or\na JavaScript-rendered theme \u2014 are no longer paused by mistake. WordPress\nnow reports when the badge has rendered on your front page.<\/li>\n<\/ul>\n\n<h4>6.2.0<\/h4>\n\n<ul>\n<li>The badge is now recognised wherever your theme places it \u2014 a footer\nwidget, a block template part, a sidebar. It no longer has to be inside a<\/li>\n<\/ul>\n\n<p>&lt;<\/p>\n\n<p>footer&gt; element.\n* The badge carries a stable machine-readable marker, so detection no longer\n  depends on theme markup, class names or wording.\n* Pages are fetched with cache-busting, so a cached copy from before you\n  added the badge cannot cause a false alarm.<\/p>\n\n<h4>6.1.0<\/h4>\n\n<ul>\n<li>Your dashboard now tells you clearly if certificates have been paused\nbecause the badge is missing, with a button to re-check as soon as you\nhave added it.<\/li>\n<\/ul>\n\n<h4>6.0.0<\/h4>\n\n<ul>\n<li>First public release.<\/li>\n<li>\"Check this independently\" on the badge now opens a page showing the\ncontract, its verification status and a link to the block explorer.<\/li>\n<li>Badge enforcement corrected: once we have confirmed the badge is missing\nfrom your site, the countdown starts from that moment.<\/li>\n<li>Removing the plugin now clears every setting, cache and credential it\ncreated. Certificates and order records are untouched.<\/li>\n<\/ul>\n\n<h4>5.9.2<\/h4>\n\n<ul>\n<li>FIXED: shops that have connected more than one wallet could show a badge\nclaiming they held no rights over certificates when they did.<\/li>\n<\/ul>\n\n<h4>5.9.1<\/h4>\n\n<ul>\n<li>FIXED: after deploying a contract, the footer badge could keep showing the\nprevious contract's rights.<\/li>\n<li>A suspended contract is now unsuspended immediately when the badge is\nrestored, instead of waiting for the next hourly check.<\/li>\n<\/ul>\n\n<h4>5.9.0<\/h4>\n\n<ul>\n<li>The guided tour now runs on the Dashboard, Settings and Help pages, each\nstarting automatically the first time you open it.<\/li>\n<li>The badge check now detects a badge that is present but hidden or moved\noff-screen, and reports exactly what it found.<\/li>\n<\/ul>\n\n<h4>5.8.1<\/h4>\n\n<ul>\n<li>FIXED: the \"Show me around\" button did nothing on the Settings page.<\/li>\n<li>The badge must now be in your footer and actually visible, not merely\npresent in the page source.<\/li>\n<\/ul>\n\n<h4>5.8.0<\/h4>\n\n<ul>\n<li>The badge now reports the rights your contract actually holds, read from\nthe blockchain rather than from our records.<\/li>\n<li>The badge must appear on your homepage, not only on a page customers do\nnot visit.<\/li>\n<li>The setup tour starts automatically the first time you open the dashboard\nand the settings page, and now covers status, checks and verification.<\/li>\n<li>The \"Show me around\" button is easier to find.<\/li>\n<\/ul>\n\n<h4>5.7.0<\/h4>\n\n<ul>\n<li>FIXED: a critical error when changing the badge placement setting.<\/li>\n<li>The Settings page now has its own guided tour explaining every option.<\/li>\n<\/ul>\n\n<h4>5.6.1<\/h4>\n\n<ul>\n<li>FIXED: the setup tour did not start, either on install or from the\n\"Show me around\" button.<\/li>\n<\/ul>\n\n<h4>5.6.0<\/h4>\n\n<ul>\n<li>New guided setup tour for first-time installs, with a \"Show me around\"\nbutton to reopen it at any time.<\/li>\n<li>FIXED: the badge could keep showing old contract rights for up to 30\nminutes after deploying a new contract.<\/li>\n<li>Switching the badge to manual placement now checks your site straight away\nand tells you if the shortcode is missing.<\/li>\n<li>Exercising a right on a certificate is limited to once every 12 hours and\ncharged at cost, since the platform pays the blockchain fee.<\/li>\n<\/ul>\n\n<h4>5.5.0<\/h4>\n\n<ul>\n<li>Customers using a smart-account wallet are now warned at checkout that it\ncannot receive a certificate, instead of the order failing afterwards.<\/li>\n<\/ul>\n\n<h4>5.4.0<\/h4>\n\n<ul>\n<li>The security badge can now be placed manually with the [bacert_badge] shortcode\ninstead of appearing automatically in the footer. Settings has the option.<\/li>\n<li>Added a full guide to the badge on the Help page.<\/li>\n<li>Email verification is now separate from website verification, and the\naddress must be on your own verified domain.<\/li>\n<\/ul>\n\n<h4>5.3.1<\/h4>\n\n<ul>\n<li>The security badge now displays even when the platform is briefly\nunreachable, and lists the specific rights in the compact style.<\/li>\n<\/ul>\n\n<h4>5.3.0<\/h4>\n\n<ul>\n<li>New security badge showing customers exactly what powers your shop holds\nover the certificates it issues, and confirming your contract matches the\npublished template. Displayed in the footer automatically, or place it\nyourself with the [bacert_badge] shortcode.<\/li>\n<\/ul>\n\n<h4>5.2.1<\/h4>\n\n<ul>\n<li>FIXED: a fatal error on the dashboard when the platform could not be\nreached. The page now degrades one section at a time instead of failing\nentirely.<\/li>\n<\/ul>\n\n<h4>5.2.0<\/h4>\n\n<ul>\n<li>The plugin now shows a clear notice if a critical update is required, rather\nthan failing with an unexplained error.<\/li>\n<\/ul>\n\n<h4>5.1.0<\/h4>\n\n<ul>\n<li>Every product image on a certificate is now stored permanently rather than\nlinked from the shop, so a certificate cannot break because a shop\nreorganised its media library.<\/li>\n<li>Production release.<\/li>\n<\/ul>\n\n<h4>5.0.1<\/h4>\n\n<ul>\n<li>Certificates for orders with more than one product now list every product\nwith its own image and quantity. Previously the whole order was flattened\ninto a single entry, so the certificate misdescribed what was bought.<\/li>\n<\/ul>\n\n<h4>5.0.0<\/h4>\n\n<ul>\n<li>Subscriptions can no longer be bought while one is active. Renewing near\nexpiry now adds the new period on top of the days you have already paid for\ninstead of discarding them.<\/li>\n<li>Certificate status reflects your balance and subscription rather than a\nfixed monthly count, so a funded shop is never shown as not ready.<\/li>\n<li>Solana top-ups now work from the browser and from a phone wallet using\nSolana Pay, with Solflare and Phantom detected automatically.<\/li>\n<li>The QR panel no longer stretches the page on smaller screens.<\/li>\n<li>Security pass: every endpoint rate limited, output escaping tightened, and\nnosniff headers added to file downloads.<\/li>\n<\/ul>\n\n<h4>4.9.0<\/h4>\n\n<ul>\n<li>Fixed the Additional information list overflowing on the order confirmation\npage. The previous fix targeted tables; that page renders a definition list.<\/li>\n<li>Deposits made on payment-only networks are now credited automatically. The\nscanner had only ever checked the networks certificates are minted on.<\/li>\n<\/ul>\n\n<h4>4.8.1<\/h4>\n\n<ul>\n<li>Fixed long wallet addresses and the rights notice overflowing the Additional\ninformation table on the order screen and on small screens.<\/li>\n<\/ul>\n\n<h4>4.8.0<\/h4>\n\n<ul>\n<li>FIXED: Freeze, Unfreeze and Destroy did nothing when clicked. The buttons had\nno handler, so nothing was ever sent and the certificate stayed unchanged\non-chain while appearing to have been actioned.<\/li>\n<li>FIXED: Subscribe, Use-this-code, Copy, Send-verification-email and\nTest-connection were also inert after an earlier refactor.<\/li>\n<li>FIXED: \"Pay from a browser wallet\" reported no USDC contract for networks\nthat were correctly configured.<\/li>\n<li>Removed the pre-filled payment-link QR code. Several wallets ignored the\nnetwork it specified and opened on Ethereum mainnet, risking funds sent to a\nnetwork we do not watch. The plain-address code, which every wallet reads\ncorrectly, is now the only one offered.<\/li>\n<li>Certificate limits on paid plans are now based on your balance rather than a\nfixed monthly count, so a funded shop is never blocked mid-period.<\/li>\n<li>Fixed the Additional information table overflowing on order pages.<\/li>\n<\/ul>\n\n<h4>4.7.1<\/h4>\n\n<ul>\n<li>Fixed the top-up section showing no payment methods even when all three were\nenabled on the platform.<\/li>\n<\/ul>\n\n<h4>4.7.0<\/h4>\n\n<ul>\n<li>One network selector now drives all three payment methods, populated live\nfrom the platform. Previously the wallet-payment list showed only the\nnetworks certificates are minted on, ignoring the ones enabled for payment.<\/li>\n<li>A wallet that does not recognise a network is now offered the details to add\nit, instead of failing with \"Unrecognized chain ID\".<\/li>\n<li>\"Check now\" and \"Verification package\" did nothing when clicked \u2014 the\nbuttons and endpoints existed but the listeners were missing.<\/li>\n<li>Certificate failures now explain the cause instead of reporting a bare\nreverted transaction.<\/li>\n<li>Deposit failures name which assumption failed, including the case where the\nmoney arrived from a token contract we are not configured to accept.<\/li>\n<\/ul>\n\n<h4>4.6.0<\/h4>\n\n<ul>\n<li>Orders where the customer requested a certificate but the order was not\nflagged for minting are now repaired automatically from the checkout fields,\nand issued. Previously they were silently skipped.<\/li>\n<li>Added a Retry button on the order screen, and a bulk \"Retry blockchain\ncertificate\" action on the orders list.<\/li>\n<li>Certificate details now appear as a column in the customer's Orders table,\nand the order page shows every identifier in full with explorer links.<\/li>\n<li>Fixed a case where a certificate flag could be downgraded after it had been\ncorrectly set, cancelling a certificate the customer had paid for.<\/li>\n<\/ul>\n\n<h4>4.5.0<\/h4>\n\n<ul>\n<li>CRITICAL: orders placed on the block-based checkout were not being minted.\nThe certificate details were recorded in the session but never written to the\norder, so the status-change trigger found nothing to send. Orders placed on\nthe classic checkout were unaffected.<\/li>\n<li>Certificate details now appear on the customer's order page, the thank-you\npage and order emails. They were only ever registered in wp-admin.<\/li>\n<li>Payment QR now shows a plain-address code by default, which every wallet can\nscan, with the pre-filled payment link as a labelled second option.<\/li>\n<li>Top-up polling backs off instead of hammering the platform, so a confirmation\nno longer stalls behind a rate limit.<\/li>\n<li>Deposit addresses and copy buttons no longer overflow on desktop.<\/li>\n<li>Commission shown on the Help page is read live rather than assumed.<\/li>\n<\/ul>\n\n<h4>4.4.0<\/h4>\n\n<ul>\n<li>Payment methods and networks are now controlled by the platform, so the ones\noffered can change without a plugin update.<\/li>\n<li>Verification email address is editable (the part before the @); instant\nHTTP verification remains the default and needs no mailbox.<\/li>\n<li>Fixed the QR panel, deposit addresses and copy buttons overflowing the page\non phones.<\/li>\n<li>Commission is read live rather than fixed at deploy time.<\/li>\n<\/ul>\n\n<h4>4.3.0<\/h4>\n\n<ul>\n<li>FIXED: ticking the certificate box at checkout could lock up the browser.\nA DOM observer reacted to the plugin's own output and re-entered itself.<\/li>\n<li>The certificate selection now resets on every fresh load of the checkout\npage, so a returning customer never finds a fee they do not remember adding.<\/li>\n<li>Pay a top-up by scanning a QR code: choose a network, choose an amount, scan.\nThe network, token, destination and amount are all encoded, which removes the\ntwo mistakes that make a deposit unrecoverable.<\/li>\n<li>The transaction-hash box now asks which network you sent on, and finds the\ntransaction for you if you pick the wrong one.<\/li>\n<li>Contract source is shown in a copyable box instead of a download link that\ncould expire.<\/li>\n<\/ul>\n\n<h4>4.2.0<\/h4>\n\n<ul>\n<li>Renamed for the plugin directory; the service is unchanged.<\/li>\n<li>Domain verification now works over HTTP instead of email \u2014 one click, no\nadmin@ mailbox required.<\/li>\n<li>Contract source download fixed (it required a header a browser link could\nnot send).<\/li>\n<li>Seller rights are now chosen per network rather than locked shop-wide.<\/li>\n<li>Added a Checkout status panel showing exactly why the option is or is not\nvisible to customers.<\/li>\n<li>Subscription plans, per-plan promotional pricing and coupon redemption.<\/li>\n<li>Platform announcement banner in the dashboard.<\/li>\n<li>Setup &amp; Help page with support contact.<\/li>\n<li>Contract verification package: compiler settings, flattened source and\nABI-encoded constructor arguments for block explorer verification.<\/li>\n<li>Choose which contract new orders use when you hold more than one.<\/li>\n<li>Certificates now record every product in a multi-item order.<\/li>\n<li>Replaced the CDN-hosted QR library with a locally bundled MIT-licensed one.<\/li>\n<\/ul>\n\n<h4>4.1.0<\/h4>\n\n<ul>\n<li>Server-authoritative checkout state: the certificate fee and the mint flag\nare derived from the same server-side value and cannot disagree.<\/li>\n<li>Wallet addresses validated by the platform before an order can be placed.<\/li>\n<li>Three ways to supply a wallet: connect, scan or upload a QR code, or paste.<\/li>\n<li>Fixed order-status settings not persisting.<\/li>\n<\/ul>\n\n<h4>4.0.0<\/h4>\n\n<ul>\n<li>SECURITY: removed AJAX handlers that allowed logged-out visitors to overwrite\nshop credentials.<\/li>\n<li>SECURITY: debug logs moved out of the web-readable uploads directory and\ncredentials redacted.<\/li>\n<li>SECURITY: wallet connection now requires a signed challenge.<\/li>\n<li>Multi-chain support: Optimism, Arbitrum and Solana.<\/li>\n<\/ul>","raw_excerpt":"Let customers request a verifiable certificate of authenticity for their order, recorded permanently on a public blockchain.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/365607","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=365607"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/woochainpro"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=365607"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=365607"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=365607"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=365607"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=365607"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=365607"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}