{"id":10735,"date":"2026-05-19T19:29:49","date_gmt":"2026-05-19T11:29:49","guid":{"rendered":"https:\/\/aeosub.com\/alamin-donation-router\/"},"modified":"2026-05-19T19:29:49","modified_gmt":"2026-05-19T11:29:49","slug":"alamin-donation-router","status":"publish","type":"post","link":"https:\/\/aeosub.com\/zh\/alamin-donation-router\/","title":{"rendered":"Business Accounts Router for GiveWP with PayPal Donations"},"content":{"rendered":"<div class=\"post-img\" style=\"margin-bottom: 25px\"><img decoding=\"async\" src=\"https:\/\/ps.w.org\/alamin-donation-router\/assets\/banner-1544x500.png?rev=3537083\" alt=\"Business Accounts Router for GiveWP with PayPal Donations\" style=\"width: 100%;height: auto;border-radius: 12px\"><\/div>\n<div class=\"plugin-info-card\" style=\"border: 1px solid #e2e8f0;border-radius: 10px;overflow: hidden;margin-bottom: 30px;font-family: -apple-system, system-ui, sans-serif;background: #fff\">\n<table style=\"width: 100%;border-collapse: collapse;font-size: 14px\">\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 15px 20px;text-align: left;width: 35%;color: #4a5568;background: #fcfcfc\"><img decoding=\"async\" src=\"https:\/\/ps.w.org\/alamin-donation-router\/assets\/icon.svg?rev=3537083\" style=\"width: 40px;height: 40px;border-radius: 6px;margin-right: 12px;vertical-align: middle\"> Developer<\/th>\n<td style=\"padding: 15px 20px;font-weight: 500\"><a href=\"https:\/\/profiles.wordpress.org\/mralaminahamed\/\" target=\"_blank\" rel=\"noopener\">Al Amin Ahamed<\/a><\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Version<\/th>\n<td style=\"padding: 12px 20px\">v1.0.0<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Active Installs<\/th>\n<td style=\"padding: 12px 20px\">0 +<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Requires \/ Tested<\/th>\n<td style=\"padding: 12px 20px\">6.4 \/ 6.9.4<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Last Updated<\/th>\n<td style=\"padding: 12px 20px\">2026-05-19 10:37am GMT<\/td>\n<\/tr>\n<tr>\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Official Link<\/th>\n<td style=\"padding: 12px 20px\"><a href=\"https:\/\/wordpress.org\/plugins\/alamin-donation-router\/\" target=\"_blank\" style=\"text-decoration: none;color: #4a3bca;font-weight: bold\" rel=\"noopener\">View Details \u2192<\/a><\/td>\n<\/tr>\n<\/table><\/div>\n<div class=\"plugin-short-desc\" style=\"margin: 20px 0;padding: 12px 15px;background: #f9fafb;border-left: 4px solid #4a3bca;border-radius: 6px;font-style: italic;color: #4a5568\">Route GiveWP donations to multiple PayPal Business accounts by donor country. Multi-entity charities, automatic credential switching.<\/div>\n<p>Business Accounts Router for GiveWP with PayPal Donations extends the GiveWP PayPal Donations gateway so that a single WordPress installation can accept donations through several PayPal Business accounts, automatically routing each transaction to the correct account based on the donor&#8217;s declared country.<\/p>\n<p>This plugin is an independent, third-party extension. It is not affiliated with, endorsed by, or sponsored by GiveWP (StellarWP) or PayPal. The names &#8220;GiveWP&#8221; and &#8220;PayPal&#8221; appear here solely to describe compatibility with those products.<\/p>\n<p>This plugin is designed for organisations that operate two or more legally distinct charity entities \u2014 for example a US 501(c)(3) and a Canadian CRA-registered charity \u2014 that share a single donation website but must process payments through separate PayPal accounts and issue separate tax receipts.<\/p>\n<p><strong>Key features:<\/strong><\/p>\n<ul>\n<li><strong>Multi-account admin panel<\/strong> \u2014 Add and manage any number of PayPal Business accounts under Donation Forms <span aria-hidden=\"true\" class=\"wp-exclude-emoji\">\u2192<\/span> PayPal Accounts. Each account stores legal entity details (name, tax ID, address, country) alongside AES-256-GCM encrypted API credentials.<\/li>\n<li><strong>Country routing rules<\/strong> \u2014 Define which PayPal account and GiveWP form handles donations from each country. One active rule per country, fully configurable from the admin.<\/li>\n<li><strong>Country selector popup<\/strong> \u2014 A donor-facing modal popup (shortcode <code>[ador_country_selector]<\/code>) asks donors to identify their country before proceeding to checkout. Selection is stored in sessionStorage to avoid repeated prompts.<\/li>\n<li><strong>Runtime credential routing<\/strong> \u2014 The plugin intercepts GiveWP&#8217;s IoC container at payment time, substituting the correct PayPal credentials transparently. No GiveWP core files are modified.<\/li>\n<li><strong>Per-account webhook handling<\/strong> \u2014 Each PayPal account receives its own webhook endpoint (<code>\/wp-json\/ador\/v1\/webhook\/{account_id}<\/code>) with independent HMAC signature verification.<\/li>\n<li><strong>Per-entity email tags<\/strong> \u2014 Seven GiveWP email template tags populate receipt emails with the correct legal entity name, address, tax ID, tax-deductibility statement, and a unique per-entity receipt number.<\/li>\n<li><strong>PDF receipts<\/strong> \u2014 Optional on-demand PDF receipt download on the GiveWP success page, generated by dompdf.<\/li>\n<li><strong>Security-first design<\/strong> \u2014 AES-256-GCM credential storage, nonce protection, capability checks, webhook signature verification, and <code>$wpdb-&gt;prepare()<\/code> throughout.<\/li>\n<\/ul>\n<h3>External services<\/h3>\n<p>This plugin sends data to PayPal&#8217;s REST API to authenticate with PayPal Business accounts and to verify the HMAC-SHA256 signatures of inbound webhook events.<\/p>\n<p><strong>PayPal REST API<\/strong> (<code>https:\/\/api-m.paypal.com<\/code>, <code>https:\/\/api-m.sandbox.paypal.com<\/code>, <code>https:\/\/api.paypal.com<\/code>, <code>https:\/\/api.sandbox.paypal.com<\/code>)<\/p>\n<ul>\n<li><strong>What is sent:<\/strong> PayPal Client ID and Client Secret (decrypted in memory at request time, never stored in plaintext) are exchanged for OAuth 2.0 bearer tokens during donation checkout. Webhook event payloads are forwarded to PayPal&#8217;s <code>\/v1\/notifications\/verify-webhook-signature<\/code> endpoint for signature verification.<\/li>\n<li><strong>When it is sent:<\/strong> Only when a donation is being processed through a PayPal Business account configured in this plugin, or when PayPal sends a webhook event to this site.<\/li>\n<li><strong>Service terms:<\/strong> <a href=\"https:\/\/www.paypal.com\/us\/legalhub\/useragreement-full\" rel=\"nofollow ugc noopener\" target=\"_blank\">PayPal User Agreement<\/a> | <a href=\"https:\/\/www.paypal.com\/us\/legalhub\/privacy-full\" rel=\"nofollow ugc noopener\" target=\"_blank\">PayPal Privacy Statement<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Route GiveWP donations to multiple PayPal Business accounts by donor country. Multi-entity charities, automatic credential switching.<\/p>","protected":false},"author":1,"featured_media":9317,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[252],"tags":[1359,1360,1361,1362,1363,555],"class_list":["post-10735","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-trends","tag-charity","tag-country-routing","tag-donations","tag-givewp","tag-paypal","tag-wordpress-plugin"],"_links":{"self":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts\/10735","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/comments?post=10735"}],"version-history":[{"count":0,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts\/10735\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/media\/9317"}],"wp:attachment":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/media?parent=10735"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/categories?post=10735"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/tags?post=10735"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}