{"id":358434,"date":"2026-08-26T09:14:19","date_gmt":"2026-08-26T09:14:19","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/tk-mpesa-payment-gateway\/"},"modified":"2026-08-26T09:13:41","modified_gmt":"2026-08-26T09:13:41","slug":"tk-paybill-and-till-checkout-for-mpesa","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/tk-paybill-and-till-checkout-for-mpesa\/","author":20768287,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.2.0","stable_tag":"2.2.0","tested":"7.1","requires":"6.4","requires_php":"7.4","requires_plugins":null,"header_name":"TK Paybill and Till Checkout for M-Pesa","header_author":"Tonie Kiguta","header_description":"WooCommerce payment gateway for MPesa payments via Safaricom's Daraja API. Supports STK Push for Paybill and Buy Goods Till, and works with the classic checkout and the WooCommerce Checkout Block.","assets_banners_color":"471fa8","last_updated":"2026-08-26 09:13:41","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/kiguta\/TK-Payment-Gateway-for-MPesa-Paybill-and-Till-for-WooCommerce","header_author_uri":"https:\/\/github.com\/kiguta","rating":0,"author_block_rating":0,"active_installs":0,"downloads":64,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.2.0":{"tag":"2.2.0","author":"tkiguta","date":"2026-08-26 09:13:41"}},"upgrade_notice":{"2.2.0":"<p>Plugin renamed for WordPress.org trademark compliance; internal identifiers were also namespaced, including the payment-request storage. Existing payment-request records from prior versions will no longer appear in the admin list after upgrading (the data is retained in the database, just under the old internal type). Your gateway settings, orders, and webhook URL are unaffected - only the underlying payment-request tracking records are affected.<\/p>","2.1.0":"<p>Plugin renamed to TK MPesa Payment Gateway (new slug). If upgrading from a manual install: activate this version first, confirm your settings and orders still show correctly, then remove the old copy. Don&#039;t delete either copy until migration is confirmed.<\/p>","2.0.0":"<p>Security and compatibility update. Adds WooCommerce Blocks support and HPOS compatibility. Fully backward compatible \u2014 existing settings, orders, and webhook URLs are unchanged.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3666617,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3666617,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3666617,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3666617,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.2.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3666617,"resolution":"1","location":"assets","locale":"","width":1696,"height":351},"screenshot-10.png":{"filename":"screenshot-10.png","revision":3666617,"resolution":"10","location":"assets","locale":"","width":1602,"height":253},"screenshot-11.png":{"filename":"screenshot-11.png","revision":3666617,"resolution":"11","location":"assets","locale":"","width":488,"height":159},"screenshot-12.png":{"filename":"screenshot-12.png","revision":3666617,"resolution":"12","location":"assets","locale":"","width":1642,"height":352},"screenshot-13.png":{"filename":"screenshot-13.png","revision":3666617,"resolution":"13","location":"assets","locale":"","width":1522,"height":355},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3666617,"resolution":"2","location":"assets","locale":"","width":1685,"height":1698},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3666617,"resolution":"3","location":"assets","locale":"","width":1144,"height":285},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3666617,"resolution":"4","location":"assets","locale":"","width":1570,"height":130},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3666617,"resolution":"5","location":"assets","locale":"","width":608,"height":545},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3666617,"resolution":"6","location":"assets","locale":"","width":1047,"height":709},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3666617,"resolution":"7","location":"assets","locale":"","width":1485,"height":209},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3666617,"resolution":"8","location":"assets","locale":"","width":1249,"height":649},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3666617,"resolution":"9","location":"assets","locale":"","width":1614,"height":219}},"screenshots":{"1":"The MPesa Gateway listed on the WooCommerce Payments settings screen","2":"The gateway configuration screen - credentials, Paybill\/Till setup, and callback URL","3":"Selecting the payment type - Paybill or Buy Goods Till","4":"The gateway enabled and ready to accept payments","5":"What the customer sees at checkout - MPesa Payments selected, prompting for their phone number","6":"The customer-facing \"Pay for order\" screen for retrying or completing payment on an existing order","7":"A completed MPesa order in the WooCommerce Orders list","8":"Order detail showing the MPesa payment confirmation and the customer's billed MPesa number","9":"The plugin on the WordPress Plugins screen, ready to activate","10":"The plugin active, with donation links on the Plugins screen","11":"The MPesa Payments admin menu, with a dedicated Logs submenu","12":"Payment request tracking - every STK Push request logged with its status","13":"Diagnostic logs under WooCommerce \u2192 Status \u2192 Logs (source <code>tk-mpesa<\/code>)"}},"plugin_section":[],"plugin_tags":[37731,3050,507,277553,286],"plugin_category":[45],"plugin_contributors":[273955],"plugin_business_model":[],"class_list":["post-358434","plugin","type-plugin","status-publish","hentry","plugin_tags-kenya","plugin_tags-mpesa","plugin_tags-payment","plugin_tags-safaricom","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-tkiguta","plugin_committers-tkiguta"],"banners":{"banner":"https:\/\/ps.w.org\/tk-paybill-and-till-checkout-for-mpesa\/assets\/banner-772x250.png?rev=3666617","banner_2x":"https:\/\/ps.w.org\/tk-paybill-and-till-checkout-for-mpesa\/assets\/banner-1544x500.png?rev=3666617","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/tk-paybill-and-till-checkout-for-mpesa\/assets\/icon-128x128.png?rev=3666617","icon_2x":"https:\/\/ps.w.org\/tk-paybill-and-till-checkout-for-mpesa\/assets\/icon-256x256.png?rev=3666617","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/tk-paybill-and-till-checkout-for-mpesa\/assets\/screenshot-1.png?rev=3666617","caption":"The MPesa Gateway listed on the WooCommerce Payments settings screen"},{"src":"https:\/\/ps.w.org\/tk-paybill-and-till-checkout-for-mpesa\/assets\/screenshot-2.png?rev=3666617","caption":"The gateway configuration screen - credentials, Paybill\/Till setup, and callback URL"},{"src":"https:\/\/ps.w.org\/tk-paybill-and-till-checkout-for-mpesa\/assets\/screenshot-3.png?rev=3666617","caption":"Selecting the payment type - Paybill or Buy Goods Till"},{"src":"https:\/\/ps.w.org\/tk-paybill-and-till-checkout-for-mpesa\/assets\/screenshot-4.png?rev=3666617","caption":"The gateway enabled and ready to accept payments"},{"src":"https:\/\/ps.w.org\/tk-paybill-and-till-checkout-for-mpesa\/assets\/screenshot-5.png?rev=3666617","caption":"What the customer sees at checkout - MPesa Payments selected, prompting for their phone number"},{"src":"https:\/\/ps.w.org\/tk-paybill-and-till-checkout-for-mpesa\/assets\/screenshot-6.png?rev=3666617","caption":"The customer-facing \"Pay for order\" screen for retrying or completing payment on an existing order"},{"src":"https:\/\/ps.w.org\/tk-paybill-and-till-checkout-for-mpesa\/assets\/screenshot-7.png?rev=3666617","caption":"A completed MPesa order in the WooCommerce Orders list"},{"src":"https:\/\/ps.w.org\/tk-paybill-and-till-checkout-for-mpesa\/assets\/screenshot-8.png?rev=3666617","caption":"Order detail showing the MPesa payment confirmation and the customer's billed MPesa number"},{"src":"https:\/\/ps.w.org\/tk-paybill-and-till-checkout-for-mpesa\/assets\/screenshot-9.png?rev=3666617","caption":"The plugin on the WordPress Plugins screen, ready to activate"},{"src":"https:\/\/ps.w.org\/tk-paybill-and-till-checkout-for-mpesa\/assets\/screenshot-10.png?rev=3666617","caption":"The plugin active, with donation links on the Plugins screen"},{"src":"https:\/\/ps.w.org\/tk-paybill-and-till-checkout-for-mpesa\/assets\/screenshot-11.png?rev=3666617","caption":"The MPesa Payments admin menu, with a dedicated Logs submenu"},{"src":"https:\/\/ps.w.org\/tk-paybill-and-till-checkout-for-mpesa\/assets\/screenshot-12.png?rev=3666617","caption":"Payment request tracking - every STK Push request logged with its status"},{"src":"https:\/\/ps.w.org\/tk-paybill-and-till-checkout-for-mpesa\/assets\/screenshot-13.png?rev=3666617","caption":"Diagnostic logs under WooCommerce \u2192 Status \u2192 Logs (source <code>tk-mpesa<\/code>)"}],"raw_content":"<!--section=description-->\n<p>TK MPesa Payment Gateway allows your WooCommerce customers to pay directly from their mobile phone via MPesa STK Push (Lipa Na MPesa Online).<\/p>\n\n<p>This plugin is not affiliated with, endorsed by, or sponsored by Safaricom PLC. M-Pesa and Daraja are trademarks of Safaricom PLC, referenced here only to describe compatibility with their payment service.<\/p>\n\n<p><strong>How it works:<\/strong><\/p>\n\n<ol>\n<li>A customer checks out and selects MPesa Payments, entering the MPesa number the STK prompt should be sent to.<\/li>\n<li>The plugin authenticates with the Safaricom Daraja API and sends an STK Push (<code>stkpush\/v1\/processrequest<\/code>) request for the order total.<\/li>\n<li>The customer receives a \"Lipa Na MPesa\" prompt directly on their phone and enters their MPesa PIN to approve it.<\/li>\n<li>Safaricom sends a payment-result callback to this site's dedicated REST endpoint, protected by a per-install secret token so only genuine Safaricom callbacks are accepted.<\/li>\n<li>On a successful callback, the order is marked paid automatically and the confirmation - including the MPesa number that was billed - is recorded on the order.<\/li>\n<\/ol>\n\n<p>If a customer doesn't complete the prompt in time or the order is otherwise left unpaid, they can return to it later through WooCommerce's standard \"Pay for order\" screen to retry.<\/p>\n\n<p><strong>Payment types:<\/strong><\/p>\n\n<ul>\n<li>Paybill (<code>CustomerPayBillOnline<\/code>) - pay into a Paybill number and account<\/li>\n<li>Buy Goods Till (<code>CustomerBuyGoodsOnline<\/code>) - pay into a Till number; the Till must be settling funds to a bank account<\/li>\n<li>Configurable <strong>Short Code<\/strong> (your Paybill\/Till number) and <strong>Payment To<\/strong> number, independent of the payment type selected<\/li>\n<\/ul>\n\n<p><strong>Checkout compatibility:<\/strong><\/p>\n\n<ul>\n<li>Classic shortcode checkout<\/li>\n<li>WooCommerce Checkout Block, via a full <code>AbstractPaymentMethodType<\/code> integration<\/li>\n<li>HPOS (High-Performance Order Storage) compatible<\/li>\n<\/ul>\n\n<p><strong>Payment tracking &amp; admin tools:<\/strong><\/p>\n\n<ul>\n<li>A dedicated <strong>MPesa Payments<\/strong> admin menu, separate from WooCommerce Orders, listing every STK Push request with its date, Request ID, linked Order ID, requesting MPesa number, amount, and payment status<\/li>\n<li>A <strong>Logs<\/strong> submenu that jumps straight to this plugin's entries under WooCommerce \u2192 Status \u2192 Logs (source <code>tk-mpesa<\/code>), useful when a payment doesn't go through<\/li>\n<li>Paid orders show the MPesa confirmation and billed phone number directly on the WooCommerce order screen, alongside the standard order details<\/li>\n<\/ul>\n\n<p><strong>Sandbox \/ test mode:<\/strong><\/p>\n\n<ul>\n<li>A <strong>Test mode<\/strong> toggle switches the gateway to the Safaricom Daraja sandbox API for development, without touching your live credentials<\/li>\n<\/ul>\n\n<p><strong>Security:<\/strong><\/p>\n\n<ul>\n<li>The MPesa callback endpoint requires a per-install secret token (generated on activation) before it will process any callback, preventing forged requests from marking an order as paid<\/li>\n<li>Callback payment amounts are compared using a tolerant float comparison rather than a loose <code>==<\/code><\/li>\n<li>All checkout input is sanitised and all admin\/checkout output is escaped<\/li>\n<li>Checkout requests are protected by WordPress nonces<\/li>\n<\/ul>\n\n<p><strong>Requirements:<\/strong><\/p>\n\n<ul>\n<li>A Safaricom MPesa Paybill or Buy Goods Till number<\/li>\n<li>A registered Safaricom Daraja application (Consumer Key, Consumer Secret, PassKey)<\/li>\n<li>An HTTPS-enabled WordPress site (required by the MPesa callback)<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the Safaricom Daraja API to process M-Pesa payments. This is required for the plugin's core function - initiating an M-Pesa STK Push payment request to the customer's phone and receiving confirmation that it was paid.<\/p>\n\n<p>Two Daraja endpoints are used:<\/p>\n\n<ul>\n<li><code>oauth\/v1\/generate<\/code> - authenticates the site with Safaricom using the Consumer Key and Consumer Secret you enter in the gateway settings. No customer data is sent to this endpoint.<\/li>\n<li><code>mpesa\/stkpush\/v1\/processrequest<\/code> - initiates the STK Push. When a customer places an order and chooses this payment method at checkout, the following is sent: your configured Paybill\/Till short code, the order amount, the customer's phone number, a callback URL, and the WooCommerce order ID (as a reference). Safaricom then sends a payment-result callback to this site's REST endpoint.<\/li>\n<\/ul>\n\n<p>This plugin is not affiliated with, endorsed by, or sponsored by Safaricom PLC. Learn more: <a href=\"https:\/\/developer.safaricom.co.ke\/t&amp;c\">Daraja API Terms and Conditions<\/a>, <a href=\"https:\/\/www.safaricom.co.ke\/dataprivacystatement\/\">Safaricom Data Privacy Statement<\/a>.<\/p>\n\n<!--section=installation-->\n<p><strong>Uploading and activating<\/strong><\/p>\n\n<ol>\n<li>In your WordPress dashboard, go to <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong> and choose the plugin zip file (or upload the <code>tk-paybill-and-till-checkout-for-mpesa<\/code> folder to <code>\/wp-content\/plugins\/<\/code> via FTP\/SFTP).<\/li>\n<li>Click <strong>Activate<\/strong>. WooCommerce must already be installed and active - if it isn't, activation stops and tells you to install WooCommerce first.<\/li>\n<\/ol>\n\n<p><strong>Configuring the gateway<\/strong><\/p>\n\n<ol>\n<li>Go to <strong>WooCommerce \u2192 Settings \u2192 Payments<\/strong>.<\/li>\n<li>Click <strong>Manage<\/strong> on the MPesa Gateway row.<\/li>\n<li>Check <strong>Enable MPesa Gateway<\/strong>.<\/li>\n<li>Enter your <strong>Pass Key<\/strong>, <strong>Consumer Key<\/strong>, and <strong>Consumer Secret<\/strong> from the Daraja portal.<\/li>\n<li>Select your <strong>Payment Type<\/strong> (Paybill or Buy Goods Till).<\/li>\n<li>Enter your <strong>Short Code<\/strong> and <strong>Payment To<\/strong> number.<\/li>\n<li>Enter a unique <strong>Callback URL<\/strong> name - a short slug only (e.g. <code>abc123xyz<\/code>), not your website's URL. No spaces, and it must not contain the word \"mpesa\". The plugin builds the full callback link for you automatically.<\/li>\n<li>Save changes.<\/li>\n<\/ol>\n\n<p><strong>Getting MPesa credentials<\/strong><\/p>\n\n<ol>\n<li>Register a Paybill or Buy Goods Till with Safaricom MPesa.<\/li>\n<li>If using a Buy Goods Till, it must be settling funds to a bank account.<\/li>\n<li>Register an Administrator for your Paybill\/Till through Safaricom.<\/li>\n<li>Use those credentials to create an App on the MPesa Daraja Portal.<\/li>\n<li>Your Pass Key, Consumer Key, and Consumer Secret will be provided.<\/li>\n<\/ol>\n\n<p><strong>Managing your credentials later<\/strong><\/p>\n\n<p>Return to <strong>WooCommerce \u2192 Settings \u2192 Payments \u2192 MPesa Gateway<\/strong> any time to update your credentials, for example after Safaricom issues new keys or when moving from sandbox to live. Existing orders and payment history are unaffected by a credentials change. The <strong>Test mode<\/strong> checkbox switches between the Safaricom sandbox and live production API - make sure the credentials you've entered match whichever mode is enabled, since sandbox keys will not work in live mode and vice versa.<\/p>\n\n<p><strong>Viewing logs<\/strong><\/p>\n\n<p>If a payment doesn't go through, check <strong>MPesa Payments \u2192 Logs<\/strong> in your WordPress admin menu (or <strong>WooCommerce \u2192 Status \u2192 Logs<\/strong>, source <code>tk-mpesa<\/code>) for the exact error Safaricom's API returned.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20work%20with%20the%20woocommerce%20checkout%20block%3F\"><h3>Does this work with the WooCommerce Checkout Block?<\/h3><\/dt>\n<dd><p>Yes. Version 2.0.0 and above fully supports the WooCommerce Checkout Block via the <code>AbstractPaymentMethodType<\/code> integration.<\/p><\/dd>\n<dt id=\"can%20i%20test%20without%20going%20live%3F\"><h3>Can I test without going live?<\/h3><\/dt>\n<dd><p>Yes. Enable <strong>Test mode<\/strong> in the gateway settings to use the Safaricom Daraja sandbox API. Use sandbox credentials from the Daraja portal.<\/p><\/dd>\n<dt id=\"why%20must%20my%20callback%20url%20not%20contain%20%22mpesa%22%3F\"><h3>Why must my callback URL not contain \"mpesa\"?<\/h3><\/dt>\n<dd><p>Safaricom's systems block callback URLs containing the word \"mpesa\" as a security measure.<\/p><\/dd>\n<dt id=\"is%20this%20plugin%20pci%20dss%20compliant%3F\"><h3>Is this plugin PCI DSS compliant?<\/h3><\/dt>\n<dd><p>Yes. No card data is handled. All payment data flows directly between the customer's phone and Safaricom's servers. The plugin only initiates an STK Push request and receives a callback confirmation.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.2.0<\/h4>\n\n<ul>\n<li>Security: the M-Pesa callback endpoint now requires a per-install secret token (generated on activation) before processing any callback, preventing a forged request from marking an order as paid<\/li>\n<li>Security: callback amount comparison now uses a tolerant float comparison instead of loose <code>==<\/code><\/li>\n<\/ul>\n\n<h4>2.1.0<\/h4>\n\n<ul>\n<li>Added activation check that requires WooCommerce to be active<\/li>\n<li>Added <code>uninstall.php<\/code> to clean up gateway settings and payment-request records on deletion<\/li>\n<li>Fixed: invalid Author URI header, incorrect output-escaping order on the checkout description field, and removed the deprecated <code>load_plugin_textdomain()<\/code> call<\/li>\n<li>Improved error logging: token and STK Push failures now log the HTTP status code and full API response, at Error level, so failures are easy to diagnose from WooCommerce \u2192 Status \u2192 Logs<\/li>\n<li>Fixed: duplicate MPesa callbacks (Safaricom sometimes resends the same notification) are now recognised and logged quietly instead of as errors<\/li>\n<li>Added a \"Logs\" submenu under MPesa Payments, linking straight to this plugin's WooCommerce log entries<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Added WooCommerce Checkout Blocks support<\/li>\n<li>Added HPOS (High-Performance Order Storage) compatibility<\/li>\n<li>Added sandbox\/test mode with Daraja sandbox API URLs<\/li>\n<li>Fixed security: nonce verification on payment form<\/li>\n<li>Fixed security: input sanitisation on phone number field<\/li>\n<li>Fixed security: output escaping on all admin displays<\/li>\n<li>Fixed: broken <code>permission_callback<\/code> on REST callback endpoint<\/li>\n<li>Fixed: nested function declarations promoted to class methods<\/li>\n<li>Fixed: <code>parse_tel()<\/code> phone normalisation using regex (replaced broken <code>ltrim()<\/code>)<\/li>\n<li>Fixed: <code>date()<\/code> replaced with <code>gmdate()<\/code> for timezone correctness<\/li>\n<li>Replaced file-based logging with WooCommerce logger (WooCommerce \u2192 Status \u2192 Logs)<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<\/ul>","raw_excerpt":"WooCommerce payment gateway for MPesa payments via Safaricom&#039;s Daraja API. Supports Paybill, Buy Goods Till, and the WooCommerce Checkout Block.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/358434","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=358434"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/tkiguta"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=358434"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=358434"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=358434"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=358434"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=358434"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=358434"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}