{"id":398172,"date":"2026-11-06T10:16:01","date_gmt":"2026-11-06T10:16:01","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/tnetpay-card-to-card-auto-confirm-payments-for-woocommerce\/"},"modified":"2026-11-06T10:15:47","modified_gmt":"2026-11-06T10:15:47","slug":"tnetpay-card-to-card","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/tnetpay-card-to-card\/","author":23589318,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.2","stable_tag":"1.1.2","tested":"7.1.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"TNetPay Card to Card (\u06a9\u0627\u0631\u062a \u0628\u0647 \u06a9\u0627\u0631\u062a \u062a\u06cc\u200c\u0646\u062a\u200c\u067e\u06cc) \u2013 Auto-Confirm Payments for WooCommerce","header_author":"TNetPay","header_description":"Accept Iranian card-to-card payments via TNetPay automatic SMS verification. Automatic order statuses, connection test and a built-in Persian guide.","assets_banners_color":"fcfefb","last_updated":"2026-11-06 10:15:47","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/tnetpay.com\/woocommerce\/card-to-card","header_author_uri":"https:\/\/tnetpay.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":207,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.2":{"tag":"1.1.2","author":"tnetmadadi","date":"2026-11-06 10:15:47","revision":3787648}},"upgrade_notice":{"1.1.2":"<p>Code quality updates for WordPress.org.<\/p>","1.1.1":"<p>Adds the TNetPay logo and fixes the default title\/description migration.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3787648,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3787648,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3787648,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3787648,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.2"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Settings page with connection test and setup guide."}},"plugin_section":[],"plugin_tags":[245857,6593,235378,286,47992],"plugin_category":[45],"plugin_contributors":[288180],"plugin_business_model":[],"class_list":["post-398172","plugin","type-plugin","status-publish","hentry","plugin_tags-card-to-card","plugin_tags-payment-gateway","plugin_tags-235378","plugin_tags-woocommerce","plugin_tags-47992","plugin_category-ecommerce","plugin_contributors-tnetmadadi","plugin_committers-tnetmadadi"],"banners":{"banner":"https:\/\/ps.w.org\/tnetpay-card-to-card\/assets\/banner-772x250.png?rev=3787648","banner_2x":"https:\/\/ps.w.org\/tnetpay-card-to-card\/assets\/banner-1544x500.png?rev=3787648","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/tnetpay-card-to-card\/assets\/icon-128x128.png?rev=3787648","icon_2x":"https:\/\/ps.w.org\/tnetpay-card-to-card\/assets\/icon-256x256.png?rev=3787648","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>\u062f\u0631\u06af\u0627\u0647 \u06a9\u0627\u0631\u062a \u0628\u0647 \u06a9\u0627\u0631\u062a \u0648\u0648\u06a9\u0627\u0645\u0631\u0633 \u062a\u06cc \u0646\u062a \u067e\u06cc \u0628\u0627 \u062a\u0623\u06cc\u06cc\u062f \u062e\u0648\u062f\u06a9\u0627\u0631 \u0648\u0627\u0631\u06cc\u0632.<\/p>\n\n<p>TNetPay Card to Card lets Iranian WooCommerce stores accept bank card-to-card transfers that are confirmed automatically. For each order the plugin creates a payment on TNetPay, sends the customer to the TNetPay hosted payment page that shows the destination card and exact amount, and marks the order paid as soon as the transfer is verified.<\/p>\n\n<p>Features:<\/p>\n\n<ul>\n<li>Fully automatic order statuses following WooCommerce conventions: \"Pending payment\" while waiting, <code>payment_complete()<\/code> when the transfer is verified (WooCommerce chooses Processing or Completed and reduces stock), and \"Cancelled\" when the payment expires. Every step is recorded as an order note with the payment ID and amount.<\/li>\n<li>\"Test connection\" button: validates the API key and shows the merchant name, whether card-to-card is enabled, approved cards and the paired Android app.<\/li>\n<li>Webhook address is sent automatically with every payment, plus a 5-minute background check and a re-check on the thank-you page.<\/li>\n<li>Warnings for unsupported store currency and disabled WP-Cron.<\/li>\n<li>Built-in step-by-step setup guide and FAQ on the settings page.<\/li>\n<li>Classic and block-based checkout, HPOS compatible.<\/li>\n<li>Persian (fa_IR) translation included.<\/li>\n<\/ul>\n\n<p>A TNetPay merchant account with card-to-card enabled is required.<\/p>\n\n<h4>\u0641\u0627\u0631\u0633\u06cc<\/h4>\n\n<p>\u0627\u0641\u0632\u0648\u0646\u0647\u0654 \u062a\u06cc\u200c\u0646\u062a\u200c\u067e\u06cc (TNet Pay) \u06cc\u06a9 \u062f\u0631\u06af\u0627\u0647 \u06a9\u0627\u0631\u062a \u0628\u0647 \u06a9\u0627\u0631\u062a \u0628\u0631\u0627\u06cc \u0648\u0648\u06a9\u0627\u0645\u0631\u0633 \u0627\u0633\u062a. \u062f\u0631 \u06a9\u0627\u0631\u062a \u0628\u0647 \u06a9\u0627\u0631\u062a \u0648\u0648\u06a9\u0627\u0645\u0631\u0633 \u0628\u0627 \u062a\u06cc \u0646\u062a \u067e\u06cc\u060c \u0645\u0634\u062a\u0631\u06cc \u0645\u0628\u0644\u063a \u062f\u0642\u06cc\u0642 \u0633\u0641\u0627\u0631\u0634 \u0631\u0627 \u0628\u0647 \u06a9\u0627\u0631\u062a \u0641\u0631\u0648\u0634\u06af\u0627\u0647 \u0648\u0627\u0631\u06cc\u0632 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u062a\u0623\u06cc\u06cc\u062f \u062e\u0648\u062f\u06a9\u0627\u0631 \u06a9\u0627\u0631\u062a \u0628\u0647 \u06a9\u0627\u0631\u062a \u0628\u0627 \u067e\u06cc\u0627\u0645\u06a9 \u0628\u0627\u0646\u06a9 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u0634\u0648\u062f\u061b \u0633\u0641\u0627\u0631\u0634 \u0628\u062f\u0648\u0646 \u0628\u0631\u0631\u0633\u06cc \u062f\u0633\u062a\u06cc \u0631\u0633\u06cc\u062f\u060c \u067e\u0631\u062f\u0627\u062e\u062a\u200c\u0634\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0648\u0636\u0639\u06cc\u062a \u0633\u0641\u0627\u0631\u0634\u200c\u0647\u0627 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0627\u0633\u062a \u0648 \u062f\u06a9\u0645\u0647\u0654 \u00ab\u0622\u0632\u0645\u0627\u06cc\u0634 \u0627\u062a\u0635\u0627\u0644\u00bb \u0648 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0641\u0627\u0631\u0633\u06cc \u062f\u0627\u062e\u0644 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u062f. \u06a9\u0627\u0631\u0645\u0632\u062f \u062a\u06cc\u200c\u0646\u062a\u200c\u067e\u06cc \u0641\u0642\u0637 \u0628\u0631\u0627\u06cc \u067e\u0631\u062f\u0627\u062e\u062a\u200c\u0647\u0627\u06cc \u062a\u0623\u06cc\u06cc\u062f\u0634\u062f\u0647 \u06a9\u0633\u0631 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the TNetPay API (https:\/\/tnetpay.com\/api), operated by TNetPay, to create and verify card-to-card payments. It is required for the plugin to work.<\/p>\n\n<ul>\n<li>When a customer places an order with this payment method, the plugin sends the order amount (in Toman), the order number, a short description, the store's webhook and return URLs, and metadata containing the WooCommerce order ID and site URL. The customer is then redirected to the TNetPay payment page.<\/li>\n<li>When a payment notification (webhook) arrives, when the customer returns to the thank-you page, and every 5 minutes for open orders (WP-Cron), the plugin sends the TNetPay payment ID to verify its status.<\/li>\n<li>When the store administrator clicks \"Test connection\" in the settings, the plugin sends the API key to read the merchant's connection status.<\/li>\n<\/ul>\n\n<p>The store's API key is sent with every request for authentication. No customer card numbers are sent by the plugin.<\/p>\n\n<ul>\n<li>Terms of service: https:\/\/tnetpay.com\/terms<\/li>\n<li>Privacy policy: https:\/\/tnetpay.com\/privacy<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload and activate the plugin (Plugins \u2192 Add New \u2192 Upload Plugin).<\/li>\n<li>Go to WooCommerce \u2192 Settings \u2192 Payments \u2192 TNetPay Card to Card.<\/li>\n<li>Paste your API key from the TNetPay merchant panel (API keys).<\/li>\n<li>In the TNetPay panel add your bank card and pair the TNetPay Android app on the phone that receives the bank SMS.<\/li>\n<li>Save and click \"Test connection\", then place a small test order.<\/li>\n<\/ol>\n\n<p>Full documentation: https:\/\/tnetpay.com\/developers\/card-to-card<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"which%20currencies%20are%20supported%3F\"><h3>Which currencies are supported?<\/h3><\/dt>\n<dd><p>Iranian Toman (IRT), Iranian Rial (IRR), thousand Toman (IRHT) and thousand Rial (IRHR). For other currencies the method is hidden at checkout.<\/p><\/dd>\n<dt id=\"the%20customer%20paid%20but%20the%20order%20is%20still%20pending.\"><h3>The customer paid but the order is still pending.<\/h3><\/dt>\n<dd><p>Check that the Android app is online and has SMS permission and that the bank SMS reached the phone. The transfer must go to the displayed card for the exact amount. If the webhook cannot reach your site, the 5-minute background check confirms the order.<\/p><\/dd>\n<dt id=\"where%20did%20the%20order%20status%20settings%20go%3F\"><h3>Where did the order status settings go?<\/h3><\/dt>\n<dd><p>Since 1.1.0 statuses are automatic and follow WooCommerce conventions. Previously saved values are ignored.<\/p><\/dd>\n<dt id=\"do%20i%20need%20the%20webhook%20signing%20secret%3F\"><h3>Do I need the webhook signing secret?<\/h3><\/dt>\n<dd><p>No. Leave it empty unless TNetPay support gave you one. Orders are always re-verified with the TNetPay API before being marked paid.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.2<\/h4>\n\n<ul>\n<li>Settings page script is now loaded with wp_enqueue_script; bundled translation files removed (translations come from translate.wordpress.org).<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>TNetPay logo at checkout (classic and blocks) and on the settings page.<\/li>\n<li>Old English default title and description are replaced with the current (translated) defaults.<\/li>\n<li>WordPress.org readme and compliance updates.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Automatic order statuses, Persian translation, connection test, webhook URL with copy button, currency and WP-Cron warnings, built-in guide.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Auto-confirm Iranian card-to-card payments in WooCommerce with TNetPay SMS-based verification.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/398172","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=398172"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/tnetmadadi"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=398172"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=398172"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=398172"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=398172"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=398172"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=398172"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}