Changeset 2749378
- Timestamp:
- 06/29/2022 01:00:57 AM (4 years ago)
- Location:
- wc-m-pesa-payment-gateway
- Files:
-
- 244 added
- 4 deleted
- 4 edited
- 1 copied
-
tags/1.2.4 (copied) (copied from wc-m-pesa-payment-gateway/trunk)
-
tags/1.2.4/.git (added)
-
tags/1.2.4/.git/FETCH_HEAD (added)
-
tags/1.2.4/.git/HEAD (added)
-
tags/1.2.4/.git/branches (added)
-
tags/1.2.4/.git/config (added)
-
tags/1.2.4/.git/description (added)
-
tags/1.2.4/.git/hooks (added)
-
tags/1.2.4/.git/hooks/applypatch-msg.sample (added)
-
tags/1.2.4/.git/hooks/commit-msg.sample (added)
-
tags/1.2.4/.git/hooks/fsmonitor-watchman.sample (added)
-
tags/1.2.4/.git/hooks/post-update.sample (added)
-
tags/1.2.4/.git/hooks/pre-applypatch.sample (added)
-
tags/1.2.4/.git/hooks/pre-commit.sample (added)
-
tags/1.2.4/.git/hooks/pre-merge-commit.sample (added)
-
tags/1.2.4/.git/hooks/pre-push.sample (added)
-
tags/1.2.4/.git/hooks/pre-rebase.sample (added)
-
tags/1.2.4/.git/hooks/pre-receive.sample (added)
-
tags/1.2.4/.git/hooks/prepare-commit-msg.sample (added)
-
tags/1.2.4/.git/hooks/push-to-checkout.sample (added)
-
tags/1.2.4/.git/hooks/update.sample (added)
-
tags/1.2.4/.git/index (added)
-
tags/1.2.4/.git/info (added)
-
tags/1.2.4/.git/info/exclude (added)
-
tags/1.2.4/.git/logs (added)
-
tags/1.2.4/.git/logs/HEAD (added)
-
tags/1.2.4/.git/objects (added)
-
tags/1.2.4/.git/objects/02 (added)
-
tags/1.2.4/.git/objects/02/41054f9706c12cdf4ddcef2bfa53aaab73f041 (added)
-
tags/1.2.4/.git/objects/0f (added)
-
tags/1.2.4/.git/objects/0f/2cf860dc9e0f5a2bc4395eacca4ff02ec47271 (added)
-
tags/1.2.4/.git/objects/16 (added)
-
tags/1.2.4/.git/objects/16/1f2819903e58a4632e4479658364d936b9922a (added)
-
tags/1.2.4/.git/objects/25 (added)
-
tags/1.2.4/.git/objects/25/bd60b5b30d215d4b0317040d5aead3ceda0302 (added)
-
tags/1.2.4/.git/objects/26 (added)
-
tags/1.2.4/.git/objects/26/c670977a5ff057630d99ebc046d32139cc810d (added)
-
tags/1.2.4/.git/objects/29 (added)
-
tags/1.2.4/.git/objects/29/7071d972c79764ba659d5a30f16877c96bdeca (added)
-
tags/1.2.4/.git/objects/2f (added)
-
tags/1.2.4/.git/objects/2f/c81f28ebb081fdb08dd902f8907cebbf0ae1dd (added)
-
tags/1.2.4/.git/objects/31 (added)
-
tags/1.2.4/.git/objects/31/8d5d56309b79c5dea49ea103bdb7ff5f4666ae (added)
-
tags/1.2.4/.git/objects/3b (added)
-
tags/1.2.4/.git/objects/3b/44c7111b699d095cbcae4a794e5a4123776b3c (added)
-
tags/1.2.4/.git/objects/3c (added)
-
tags/1.2.4/.git/objects/3c/405c5fe27b6da8a34afe3df8833b7d558f4384 (added)
-
tags/1.2.4/.git/objects/3e (added)
-
tags/1.2.4/.git/objects/3e/b8c8b64ad08630668b4d1c8ad3f6dbadec99c8 (added)
-
tags/1.2.4/.git/objects/42 (added)
-
tags/1.2.4/.git/objects/42/8c4b14b6072e69b9cd40ad9e5813071f396825 (added)
-
tags/1.2.4/.git/objects/43 (added)
-
tags/1.2.4/.git/objects/43/2176fee704fc6be77a7d6af4303f40a23b9828 (added)
-
tags/1.2.4/.git/objects/49 (added)
-
tags/1.2.4/.git/objects/49/9655860ad3ab71c82fa9a659b867795874d09f (added)
-
tags/1.2.4/.git/objects/53 (added)
-
tags/1.2.4/.git/objects/53/045452502d9d82a64a6e58ffe64805facf366a (added)
-
tags/1.2.4/.git/objects/5a (added)
-
tags/1.2.4/.git/objects/5a/74be2b399ee1f2ea6d23b8547eea3cbe414f84 (added)
-
tags/1.2.4/.git/objects/5e (added)
-
tags/1.2.4/.git/objects/5e/49d8a67b07ec0666af3beb16b95efe34dd2e96 (added)
-
tags/1.2.4/.git/objects/5e/c0128cc3a4513e88db622a3823ba4dea4074d6 (added)
-
tags/1.2.4/.git/objects/65 (added)
-
tags/1.2.4/.git/objects/65/3a779824e2ba23eb39624e30787ebb4c83dda2 (added)
-
tags/1.2.4/.git/objects/66 (added)
-
tags/1.2.4/.git/objects/66/a12ac593a9fe80e2e6adef68270f04e9a711c6 (added)
-
tags/1.2.4/.git/objects/67 (added)
-
tags/1.2.4/.git/objects/67/a8a700f306f0017727b60344c4860bc1d4ddcf (added)
-
tags/1.2.4/.git/objects/6f (added)
-
tags/1.2.4/.git/objects/6f/571831ed15fc0ce7e9951146a845abcf760330 (added)
-
tags/1.2.4/.git/objects/73 (added)
-
tags/1.2.4/.git/objects/73/4e620fdaa106422663c5da065e596c73b3167b (added)
-
tags/1.2.4/.git/objects/7a (added)
-
tags/1.2.4/.git/objects/7a/765027c61574b004d6f6cde5546a2574d36f40 (added)
-
tags/1.2.4/.git/objects/7e (added)
-
tags/1.2.4/.git/objects/7e/aa09fc558254c13d32b2940eeb944710cd5f56 (added)
-
tags/1.2.4/.git/objects/8e (added)
-
tags/1.2.4/.git/objects/8e/0d8d4214138b5d0f18428f613af5deed05b5c3 (added)
-
tags/1.2.4/.git/objects/95 (added)
-
tags/1.2.4/.git/objects/95/cb79b32574167ffd523c0714b333b14ead5719 (added)
-
tags/1.2.4/.git/objects/96 (added)
-
tags/1.2.4/.git/objects/96/78c4f8a9c4936a8cf68a7f3166a5bb5fab1307 (added)
-
tags/1.2.4/.git/objects/ab (added)
-
tags/1.2.4/.git/objects/ab/287a14dfdca8754238a022dee8e607d6118f62 (added)
-
tags/1.2.4/.git/objects/ac (added)
-
tags/1.2.4/.git/objects/ac/50403fb14e9bc79ca9e49ad8ace7f36ae99d6d (added)
-
tags/1.2.4/.git/objects/ad (added)
-
tags/1.2.4/.git/objects/ad/24eb87ae2e71bdde55d2fbe4fbfd9ec3c9fe2e (added)
-
tags/1.2.4/.git/objects/ae (added)
-
tags/1.2.4/.git/objects/ae/de20afdc0e3c01ef046c07626b5782fabe2210 (added)
-
tags/1.2.4/.git/objects/b3 (added)
-
tags/1.2.4/.git/objects/b3/12ca4ce49999d4f6e255ed57527b06817f7f97 (added)
-
tags/1.2.4/.git/objects/bb (added)
-
tags/1.2.4/.git/objects/bb/cbbe7d61558adde3cbfd0c7a63a67c27ed6d30 (added)
-
tags/1.2.4/.git/objects/c0 (added)
-
tags/1.2.4/.git/objects/c0/763545ddb3448d450d218e83067e5b4aa9e504 (added)
-
tags/1.2.4/.git/objects/d1 (added)
-
tags/1.2.4/.git/objects/d1/22dc4f5a48d4e665bf288f28df7ecdd7cf450a (added)
-
tags/1.2.4/.git/objects/d1/cfa5a5ac58f7bdafa7b133c423e6a8f5fc99d3 (added)
-
tags/1.2.4/.git/objects/db (added)
-
tags/1.2.4/.git/objects/db/d41963045e50b77d3d55b913bcd3e297629b14 (added)
-
tags/1.2.4/.git/objects/dd (added)
-
tags/1.2.4/.git/objects/dd/84ea7824f11be1eeda22377549cbc1aec7f980 (added)
-
tags/1.2.4/.git/objects/e3 (added)
-
tags/1.2.4/.git/objects/e3/45fdde7eeb878230e644488d6fb9eebddb9d9c (added)
-
tags/1.2.4/.git/objects/e3/5cf8beba4843ada9f1c75c529d3503b088ca86 (added)
-
tags/1.2.4/.git/objects/f2 (added)
-
tags/1.2.4/.git/objects/f2/88702d2fa16d3cdf0035b15a9fcbc552cd88e7 (added)
-
tags/1.2.4/.git/objects/f5 (added)
-
tags/1.2.4/.git/objects/f5/ac3a58ae4658d06af15f2b4aa1ba64d9da9c57 (added)
-
tags/1.2.4/.git/objects/f6 (added)
-
tags/1.2.4/.git/objects/f6/9298ba3ee8042d940c22e961e390c9ee81855f (added)
-
tags/1.2.4/.git/objects/f8 (added)
-
tags/1.2.4/.git/objects/f8/7edca7d6414e0357da7f7c530973ea46682755 (added)
-
tags/1.2.4/.git/objects/info (added)
-
tags/1.2.4/.git/objects/pack (added)
-
tags/1.2.4/.git/refs (added)
-
tags/1.2.4/.git/refs/heads (added)
-
tags/1.2.4/.git/refs/tags (added)
-
tags/1.2.4/.git/refs/tags/1.2.4 (added)
-
tags/1.2.4/.git/shallow (added)
-
tags/1.2.4/CODE_OF_CONDUCT.md (added)
-
tags/1.2.4/composer.lock (added)
-
tags/1.2.4/readme.txt (modified) (2 diffs)
-
tags/1.2.4/templates (deleted)
-
tags/1.2.4/vendor (deleted)
-
tags/1.2.4/wc-mpesa-payment-gateway.php (modified) (23 diffs)
-
trunk/.git (added)
-
trunk/.git/FETCH_HEAD (added)
-
trunk/.git/HEAD (added)
-
trunk/.git/branches (added)
-
trunk/.git/config (added)
-
trunk/.git/description (added)
-
trunk/.git/hooks (added)
-
trunk/.git/hooks/applypatch-msg.sample (added)
-
trunk/.git/hooks/commit-msg.sample (added)
-
trunk/.git/hooks/fsmonitor-watchman.sample (added)
-
trunk/.git/hooks/post-update.sample (added)
-
trunk/.git/hooks/pre-applypatch.sample (added)
-
trunk/.git/hooks/pre-commit.sample (added)
-
trunk/.git/hooks/pre-merge-commit.sample (added)
-
trunk/.git/hooks/pre-push.sample (added)
-
trunk/.git/hooks/pre-rebase.sample (added)
-
trunk/.git/hooks/pre-receive.sample (added)
-
trunk/.git/hooks/prepare-commit-msg.sample (added)
-
trunk/.git/hooks/push-to-checkout.sample (added)
-
trunk/.git/hooks/update.sample (added)
-
trunk/.git/index (added)
-
trunk/.git/info (added)
-
trunk/.git/info/exclude (added)
-
trunk/.git/logs (added)
-
trunk/.git/logs/HEAD (added)
-
trunk/.git/objects (added)
-
trunk/.git/objects/02 (added)
-
trunk/.git/objects/02/41054f9706c12cdf4ddcef2bfa53aaab73f041 (added)
-
trunk/.git/objects/0f (added)
-
trunk/.git/objects/0f/2cf860dc9e0f5a2bc4395eacca4ff02ec47271 (added)
-
trunk/.git/objects/16 (added)
-
trunk/.git/objects/16/1f2819903e58a4632e4479658364d936b9922a (added)
-
trunk/.git/objects/25 (added)
-
trunk/.git/objects/25/bd60b5b30d215d4b0317040d5aead3ceda0302 (added)
-
trunk/.git/objects/26 (added)
-
trunk/.git/objects/26/c670977a5ff057630d99ebc046d32139cc810d (added)
-
trunk/.git/objects/29 (added)
-
trunk/.git/objects/29/7071d972c79764ba659d5a30f16877c96bdeca (added)
-
trunk/.git/objects/2f (added)
-
trunk/.git/objects/2f/c81f28ebb081fdb08dd902f8907cebbf0ae1dd (added)
-
trunk/.git/objects/31 (added)
-
trunk/.git/objects/31/8d5d56309b79c5dea49ea103bdb7ff5f4666ae (added)
-
trunk/.git/objects/3b (added)
-
trunk/.git/objects/3b/44c7111b699d095cbcae4a794e5a4123776b3c (added)
-
trunk/.git/objects/3c (added)
-
trunk/.git/objects/3c/405c5fe27b6da8a34afe3df8833b7d558f4384 (added)
-
trunk/.git/objects/3e (added)
-
trunk/.git/objects/3e/b8c8b64ad08630668b4d1c8ad3f6dbadec99c8 (added)
-
trunk/.git/objects/42 (added)
-
trunk/.git/objects/42/8c4b14b6072e69b9cd40ad9e5813071f396825 (added)
-
trunk/.git/objects/43 (added)
-
trunk/.git/objects/43/2176fee704fc6be77a7d6af4303f40a23b9828 (added)
-
trunk/.git/objects/49 (added)
-
trunk/.git/objects/49/9655860ad3ab71c82fa9a659b867795874d09f (added)
-
trunk/.git/objects/53 (added)
-
trunk/.git/objects/53/045452502d9d82a64a6e58ffe64805facf366a (added)
-
trunk/.git/objects/5a (added)
-
trunk/.git/objects/5a/74be2b399ee1f2ea6d23b8547eea3cbe414f84 (added)
-
trunk/.git/objects/5e (added)
-
trunk/.git/objects/5e/49d8a67b07ec0666af3beb16b95efe34dd2e96 (added)
-
trunk/.git/objects/5e/c0128cc3a4513e88db622a3823ba4dea4074d6 (added)
-
trunk/.git/objects/65 (added)
-
trunk/.git/objects/65/3a779824e2ba23eb39624e30787ebb4c83dda2 (added)
-
trunk/.git/objects/66 (added)
-
trunk/.git/objects/66/a12ac593a9fe80e2e6adef68270f04e9a711c6 (added)
-
trunk/.git/objects/67 (added)
-
trunk/.git/objects/67/a8a700f306f0017727b60344c4860bc1d4ddcf (added)
-
trunk/.git/objects/6f (added)
-
trunk/.git/objects/6f/571831ed15fc0ce7e9951146a845abcf760330 (added)
-
trunk/.git/objects/73 (added)
-
trunk/.git/objects/73/4e620fdaa106422663c5da065e596c73b3167b (added)
-
trunk/.git/objects/7a (added)
-
trunk/.git/objects/7a/765027c61574b004d6f6cde5546a2574d36f40 (added)
-
trunk/.git/objects/7e (added)
-
trunk/.git/objects/7e/aa09fc558254c13d32b2940eeb944710cd5f56 (added)
-
trunk/.git/objects/8e (added)
-
trunk/.git/objects/8e/0d8d4214138b5d0f18428f613af5deed05b5c3 (added)
-
trunk/.git/objects/95 (added)
-
trunk/.git/objects/95/cb79b32574167ffd523c0714b333b14ead5719 (added)
-
trunk/.git/objects/96 (added)
-
trunk/.git/objects/96/78c4f8a9c4936a8cf68a7f3166a5bb5fab1307 (added)
-
trunk/.git/objects/ab (added)
-
trunk/.git/objects/ab/287a14dfdca8754238a022dee8e607d6118f62 (added)
-
trunk/.git/objects/ac (added)
-
trunk/.git/objects/ac/50403fb14e9bc79ca9e49ad8ace7f36ae99d6d (added)
-
trunk/.git/objects/ad (added)
-
trunk/.git/objects/ad/24eb87ae2e71bdde55d2fbe4fbfd9ec3c9fe2e (added)
-
trunk/.git/objects/ae (added)
-
trunk/.git/objects/ae/de20afdc0e3c01ef046c07626b5782fabe2210 (added)
-
trunk/.git/objects/b3 (added)
-
trunk/.git/objects/b3/12ca4ce49999d4f6e255ed57527b06817f7f97 (added)
-
trunk/.git/objects/bb (added)
-
trunk/.git/objects/bb/cbbe7d61558adde3cbfd0c7a63a67c27ed6d30 (added)
-
trunk/.git/objects/c0 (added)
-
trunk/.git/objects/c0/763545ddb3448d450d218e83067e5b4aa9e504 (added)
-
trunk/.git/objects/d1 (added)
-
trunk/.git/objects/d1/22dc4f5a48d4e665bf288f28df7ecdd7cf450a (added)
-
trunk/.git/objects/d1/cfa5a5ac58f7bdafa7b133c423e6a8f5fc99d3 (added)
-
trunk/.git/objects/db (added)
-
trunk/.git/objects/db/d41963045e50b77d3d55b913bcd3e297629b14 (added)
-
trunk/.git/objects/dd (added)
-
trunk/.git/objects/dd/84ea7824f11be1eeda22377549cbc1aec7f980 (added)
-
trunk/.git/objects/e3 (added)
-
trunk/.git/objects/e3/45fdde7eeb878230e644488d6fb9eebddb9d9c (added)
-
trunk/.git/objects/e3/5cf8beba4843ada9f1c75c529d3503b088ca86 (added)
-
trunk/.git/objects/f2 (added)
-
trunk/.git/objects/f2/88702d2fa16d3cdf0035b15a9fcbc552cd88e7 (added)
-
trunk/.git/objects/f5 (added)
-
trunk/.git/objects/f5/ac3a58ae4658d06af15f2b4aa1ba64d9da9c57 (added)
-
trunk/.git/objects/f6 (added)
-
trunk/.git/objects/f6/9298ba3ee8042d940c22e961e390c9ee81855f (added)
-
trunk/.git/objects/f8 (added)
-
trunk/.git/objects/f8/7edca7d6414e0357da7f7c530973ea46682755 (added)
-
trunk/.git/objects/info (added)
-
trunk/.git/objects/pack (added)
-
trunk/.git/refs (added)
-
trunk/.git/refs/heads (added)
-
trunk/.git/refs/tags (added)
-
trunk/.git/refs/tags/1.2.4 (added)
-
trunk/.git/shallow (added)
-
trunk/CODE_OF_CONDUCT.md (added)
-
trunk/composer.lock (added)
-
trunk/readme.txt (modified) (2 diffs)
-
trunk/templates (deleted)
-
trunk/vendor (deleted)
-
trunk/wc-mpesa-payment-gateway.php (modified) (23 diffs)
Legend:
- Unmodified
- Added
- Removed
-
wc-m-pesa-payment-gateway/tags/1.2.4/readme.txt
r2515920 r2749378 5 5 Tags: mpesa, m-pesa, woocommerce, mpesa api, gateway, Mobile Payments, mpesa online, Vodacom, Mpesa API Mozambique 6 6 Requires at least: 5.0 7 Tested up to: 5.7.18 Requires PHP: 7. 09 Stable tag: 1.2. 37 Tested up to: 6.0 8 Requires PHP: 7.1 9 Stable tag: 1.2.4 10 10 License: GPLv2 or later 11 11 License URI: http://www.gnu.org/licenses/gpl-2.0.html … … 32 32 33 33 * Visite a nossa sessão de [Perguntas Frequentes](https://wordpress.org/plugins/wc-m-pesa-payment-gateway/#faq). 34 * Utilize o nosso fórum no [Github](https://github.com/turbohost-co/wc-mpesa-payment-gateway/issues).35 34 * Crie um tópico no [fórum de ajuda do WordPress](https://wordpress.org/support/plugin/wc-m-pesa-payment-gateway/). 36 * Você pode entrar em contato pelo número +258 84 3670 086.37 35 38 36 ### Contribuir -
wc-m-pesa-payment-gateway/tags/1.2.4/wc-mpesa-payment-gateway.php
r2515920 r2749378 4 4 Plugin URI: https://wordpress.org/plugins/wc-m-pesa-payment-gateway/ 5 5 Description: Receive payments directly to your store through the Vodacom Mozambique M-Pesa. 6 Version: 1.2. 36 Version: 1.2.4 7 7 WC requires at least: 4.0.0 8 WC tested up to: 5.2.18 WC tested up to: 6.6.1 9 9 Author: karson <karson@turbohost.co.mz> 10 10 Author URI: http://karsonadam.com … … 14 14 License URI: http://www.gnu.org/licenses/gpl-2.0.html 15 15 */ 16 17 $wc_mpesa_db_version = "1.2.3"; 16 require 'vendor/autoload.php'; 17 use Paymentsds\MPesa\Client; 18 use Paymentsds\MPesa\Environment; 19 20 $wc_mpesa_db_version = "1.2.4"; 18 21 add_action('plugins_loaded', 'wc_mpesa_init', 0); 19 22 add_action('plugins_loaded', 'wc_mpesa_update_check'); … … 24 27 * @return void 25 28 */ 26 function wc_mpesa_install()29 function wc_mpesa_install() 27 30 { 28 31 global $wc_mpesa_db_version; … … 31 34 32 35 if (!get_option('wc_mpesa_version', $wc_mpesa_db_version)) { 33 34 36 require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); 35 37 $wpdb->query("DROP TABLE IF EXISTS $table_name"); … … 55 57 function wc_mpesa_init() 56 58 { 57 require 'vendor/autoload.php'; 58 if (!class_exists('WC_Payment_Gateway')) return; 59 if (!class_exists('WC_Payment_Gateway')) { 60 return; 61 } 59 62 /** 60 63 * Localisation … … 68 71 class WC_Gateway_MPESA extends WC_Payment_Gateway 69 72 { 70 71 72 73 public function __construct() 73 74 { 74 75 75 $this->id = 'wc-mpesa-payment-gateway'; 76 76 $this->icon = apply_filters('wc-mpesa_icon', plugins_url('assets/img/m-pesa-logo.png', __FILE__)); … … 179 179 } 180 180 181 if (isset($_SESSION['wc_mpesa_number'])){181 if (isset($_SESSION['wc_mpesa_number'])) { 182 182 $number = $this->wc_mpesa_validate_number($_SESSION['wc_mpesa_number']); 183 } else{183 } else { 184 184 $number = ''; 185 185 } … … 190 190 191 191 192 //Use unique IDs, because other gateways could already use 192 //Use unique IDs, because other gateways could already use 193 193 echo '<div class="form-row form-row-wide"><label>' . esc_html__('Mpesa number', 'wc-mpesa-payment-gateway') . '<span class="required">*</span></label> 194 194 <input name="wc_mpesa_number" type="tel" value="' . esc_attr($number) . '" placeholder="' . esc_attr__('ex: 84 123 4567', 'wc-mpesa-payment-gateway') . '"> … … 213 213 } 214 214 215 //save phone to use on payment screen and new transactions215 //save phone to use on payment screen 216 216 session_start(); 217 $_SESSION['wc_mpesa_number'] = $number;217 $_SESSION['wc_mpesa_number'] = $number; 218 218 219 219 return true; 220 220 } 221 221 222 public function wc_mpesa_validate_number($number){ 222 public function wc_mpesa_validate_number($number) 223 { 223 224 $number = filter_var($number, FILTER_VALIDATE_INT); 224 //validade mpesa numbers to only accept 84 and 85 prefix ex: 84 8283607225 //validade mpesa numbers to only accept 84 and 85 prefix ex: 84 8283607 225 226 if (!isset($number) || strlen($number) != 9 || !preg_match('/^8[4|5][0-9]{7}$/', $number)) { 226 227 wc_add_notice(__('Phone number is incorrect!', 'wc-mpesa-payment-gateway'), 'error'); … … 233 234 234 235 235 function payment_scripts()236 public function payment_scripts() 236 237 { 237 238 if (!is_checkout_pay_page()) { … … 276 277 } 277 278 278 function payment_form_html($order_id)279 public function payment_form_html($order_id) 279 280 { 280 281 // modify post object here … … 282 283 $return_url = $this->get_return_url($order); 283 284 $data = json_encode(['order_id' => $order_id, 'return_url'=> $return_url]); 284 require plugin_dir_path(__FILE__) . '/templates/payment.php'; 285 $html_output = "<div class='payment-container' id='app'> 286 <div> 287 <h4 class='payment-title' v-cloak>{{status.title}}</h4> 288 <div v-if='error' class='payment-error' role='error'>{{error}}</div> 289 <div class='payment-description' role='alert' v-html='status.description'></div> 290 </div> 291 <button class='payment-btn' v-bind='{ btnDisabled }' v-on:click='pay($data)'>".__('Pay', 'wc-mpesa-payment-gateway')."</button></div>"; 292 echo $html_output; 285 293 } 286 294 … … 312 320 313 321 314 function process_action()322 public function process_action() 315 323 { 316 324 session_start(); … … 325 333 326 334 //Initialize API 327 $mpesa = new \Karson\MpesaPhpSdk\Mpesa(); 328 $mpesa->setApiKey($this->api_key); 329 $mpesa->setPublicKey($this->public_key); 330 if ('yes' != $this->test) { 331 $mpesa->setEnv('live'); 332 } 333 334 //Update code to use wp_send_json status instead custom status to reduce redundancy 335 $client = new Client([ 336 'apiKey' => $this->api_key, // API Key 337 'publicKey' => $this->public_key, // Public Key 338 'serviceProviderCode' => $this->service_provider, // input_ServiceProviderCode 339 'debugging' => false, 340 'environment' => 'yes' != $this->test??Environment::PRODUCTION 341 342 ]); 343 344 335 345 $order = new WC_Order(filter_input(INPUT_POST, 'order_id', FILTER_VALIDATE_INT)); 336 346 $order_id = $order->get_id(); … … 340 350 $number = "258${number}"; 341 351 try { 342 $result = $mpesa->c2b($order_id, $number, $amount, $reference_id, $this->service_provider); 352 $paymentData = [ 353 'from' => $number, // input_CustomerMSISDN 354 'reference' => $reference_id, // input_ThirdPartyReference 355 'transaction' => $order_id, // input_TransactionReference 356 'amount' => $amount // input_Amount 357 ]; 358 $result = $client->receive($paymentData); 343 359 } catch (\Exception $e) { 344 360 $response['status'] = 'failed'; … … 348 364 $response['request'] = [ 349 365 'order_id' => $order_id, 350 'phone' => $ phone,366 'phone' => $number, 351 367 'amount' => $amount, 352 368 'reference_id' => $reference_id, … … 359 375 $response['raw'] = $result->response; 360 376 } 361 if ($result-> response->output_ResponseCode == 'INS-0') {362 // Mark as paid 377 if ($result->success) { 378 // Mark as paid 363 379 $order->payment_complete(); 364 380 // Reduce stock levels … … 373 389 // Mark as Failed 374 390 $response['status'] = 'failed'; 375 switch ($result-> response->output_ResponseCode) {391 switch ($result->code) { 376 392 //show detailed error message 377 393 case 'INS-13': … … 393 409 break; 394 410 } 395 //Detect API key error 396 if ($result->response->output_error) { 397 if (strpos($result->response->output_error, 'not authorized')) { 398 $error_message = __('API or Public key is not authorized!', 'wc-mpesa-payment-gateway'); 399 } else if ($result->response->output_error = 'Bad API Key') { 400 $error_message = __('Bad API Key!', 'wc-mpesa-payment-gateway'); 401 } 402 } 411 403 412 $response['error_message'] = $error_message; 404 413 $order->update_status('failed', __('Payment failed', 'wc-mpesa-payment-gateway')); 405 414 } 406 407 415 } 408 416 wp_send_json($response); … … 410 418 411 419 412 function generate_reference_id($order_id)420 public function generate_reference_id($order_id) 413 421 { 414 422 //generate uniq reference_id … … 416 424 } 417 425 418 function wc_minimum_order_amount()426 public function wc_minimum_order_amount() 419 427 { 420 428 // Set this variable to specify a minimum order value … … 422 430 423 431 if (WC()->cart->total < $minimum) { 424 425 432 if (is_cart()) { 426 427 433 wc_print_notice( 428 434 sprintf( … … 434 440 ); 435 441 } else { 436 437 442 wc_add_notice( 438 443 sprintf( -
wc-m-pesa-payment-gateway/trunk/readme.txt
r2515920 r2749378 5 5 Tags: mpesa, m-pesa, woocommerce, mpesa api, gateway, Mobile Payments, mpesa online, Vodacom, Mpesa API Mozambique 6 6 Requires at least: 5.0 7 Tested up to: 5.7.18 Requires PHP: 7. 09 Stable tag: 1.2. 37 Tested up to: 6.0 8 Requires PHP: 7.1 9 Stable tag: 1.2.4 10 10 License: GPLv2 or later 11 11 License URI: http://www.gnu.org/licenses/gpl-2.0.html … … 32 32 33 33 * Visite a nossa sessão de [Perguntas Frequentes](https://wordpress.org/plugins/wc-m-pesa-payment-gateway/#faq). 34 * Utilize o nosso fórum no [Github](https://github.com/turbohost-co/wc-mpesa-payment-gateway/issues).35 34 * Crie um tópico no [fórum de ajuda do WordPress](https://wordpress.org/support/plugin/wc-m-pesa-payment-gateway/). 36 * Você pode entrar em contato pelo número +258 84 3670 086.37 35 38 36 ### Contribuir -
wc-m-pesa-payment-gateway/trunk/wc-mpesa-payment-gateway.php
r2515920 r2749378 4 4 Plugin URI: https://wordpress.org/plugins/wc-m-pesa-payment-gateway/ 5 5 Description: Receive payments directly to your store through the Vodacom Mozambique M-Pesa. 6 Version: 1.2. 36 Version: 1.2.4 7 7 WC requires at least: 4.0.0 8 WC tested up to: 5.2.18 WC tested up to: 6.6.1 9 9 Author: karson <karson@turbohost.co.mz> 10 10 Author URI: http://karsonadam.com … … 14 14 License URI: http://www.gnu.org/licenses/gpl-2.0.html 15 15 */ 16 17 $wc_mpesa_db_version = "1.2.3"; 16 require 'vendor/autoload.php'; 17 use Paymentsds\MPesa\Client; 18 use Paymentsds\MPesa\Environment; 19 20 $wc_mpesa_db_version = "1.2.4"; 18 21 add_action('plugins_loaded', 'wc_mpesa_init', 0); 19 22 add_action('plugins_loaded', 'wc_mpesa_update_check'); … … 24 27 * @return void 25 28 */ 26 function wc_mpesa_install()29 function wc_mpesa_install() 27 30 { 28 31 global $wc_mpesa_db_version; … … 31 34 32 35 if (!get_option('wc_mpesa_version', $wc_mpesa_db_version)) { 33 34 36 require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); 35 37 $wpdb->query("DROP TABLE IF EXISTS $table_name"); … … 55 57 function wc_mpesa_init() 56 58 { 57 require 'vendor/autoload.php'; 58 if (!class_exists('WC_Payment_Gateway')) return; 59 if (!class_exists('WC_Payment_Gateway')) { 60 return; 61 } 59 62 /** 60 63 * Localisation … … 68 71 class WC_Gateway_MPESA extends WC_Payment_Gateway 69 72 { 70 71 72 73 public function __construct() 73 74 { 74 75 75 $this->id = 'wc-mpesa-payment-gateway'; 76 76 $this->icon = apply_filters('wc-mpesa_icon', plugins_url('assets/img/m-pesa-logo.png', __FILE__)); … … 179 179 } 180 180 181 if (isset($_SESSION['wc_mpesa_number'])){181 if (isset($_SESSION['wc_mpesa_number'])) { 182 182 $number = $this->wc_mpesa_validate_number($_SESSION['wc_mpesa_number']); 183 } else{183 } else { 184 184 $number = ''; 185 185 } … … 190 190 191 191 192 //Use unique IDs, because other gateways could already use 192 //Use unique IDs, because other gateways could already use 193 193 echo '<div class="form-row form-row-wide"><label>' . esc_html__('Mpesa number', 'wc-mpesa-payment-gateway') . '<span class="required">*</span></label> 194 194 <input name="wc_mpesa_number" type="tel" value="' . esc_attr($number) . '" placeholder="' . esc_attr__('ex: 84 123 4567', 'wc-mpesa-payment-gateway') . '"> … … 213 213 } 214 214 215 //save phone to use on payment screen and new transactions215 //save phone to use on payment screen 216 216 session_start(); 217 $_SESSION['wc_mpesa_number'] = $number;217 $_SESSION['wc_mpesa_number'] = $number; 218 218 219 219 return true; 220 220 } 221 221 222 public function wc_mpesa_validate_number($number){ 222 public function wc_mpesa_validate_number($number) 223 { 223 224 $number = filter_var($number, FILTER_VALIDATE_INT); 224 //validade mpesa numbers to only accept 84 and 85 prefix ex: 84 8283607225 //validade mpesa numbers to only accept 84 and 85 prefix ex: 84 8283607 225 226 if (!isset($number) || strlen($number) != 9 || !preg_match('/^8[4|5][0-9]{7}$/', $number)) { 226 227 wc_add_notice(__('Phone number is incorrect!', 'wc-mpesa-payment-gateway'), 'error'); … … 233 234 234 235 235 function payment_scripts()236 public function payment_scripts() 236 237 { 237 238 if (!is_checkout_pay_page()) { … … 276 277 } 277 278 278 function payment_form_html($order_id)279 public function payment_form_html($order_id) 279 280 { 280 281 // modify post object here … … 282 283 $return_url = $this->get_return_url($order); 283 284 $data = json_encode(['order_id' => $order_id, 'return_url'=> $return_url]); 284 require plugin_dir_path(__FILE__) . '/templates/payment.php'; 285 $html_output = "<div class='payment-container' id='app'> 286 <div> 287 <h4 class='payment-title' v-cloak>{{status.title}}</h4> 288 <div v-if='error' class='payment-error' role='error'>{{error}}</div> 289 <div class='payment-description' role='alert' v-html='status.description'></div> 290 </div> 291 <button class='payment-btn' v-bind='{ btnDisabled }' v-on:click='pay($data)'>".__('Pay', 'wc-mpesa-payment-gateway')."</button></div>"; 292 echo $html_output; 285 293 } 286 294 … … 312 320 313 321 314 function process_action()322 public function process_action() 315 323 { 316 324 session_start(); … … 325 333 326 334 //Initialize API 327 $mpesa = new \Karson\MpesaPhpSdk\Mpesa(); 328 $mpesa->setApiKey($this->api_key); 329 $mpesa->setPublicKey($this->public_key); 330 if ('yes' != $this->test) { 331 $mpesa->setEnv('live'); 332 } 333 334 //Update code to use wp_send_json status instead custom status to reduce redundancy 335 $client = new Client([ 336 'apiKey' => $this->api_key, // API Key 337 'publicKey' => $this->public_key, // Public Key 338 'serviceProviderCode' => $this->service_provider, // input_ServiceProviderCode 339 'debugging' => false, 340 'environment' => 'yes' != $this->test??Environment::PRODUCTION 341 342 ]); 343 344 335 345 $order = new WC_Order(filter_input(INPUT_POST, 'order_id', FILTER_VALIDATE_INT)); 336 346 $order_id = $order->get_id(); … … 340 350 $number = "258${number}"; 341 351 try { 342 $result = $mpesa->c2b($order_id, $number, $amount, $reference_id, $this->service_provider); 352 $paymentData = [ 353 'from' => $number, // input_CustomerMSISDN 354 'reference' => $reference_id, // input_ThirdPartyReference 355 'transaction' => $order_id, // input_TransactionReference 356 'amount' => $amount // input_Amount 357 ]; 358 $result = $client->receive($paymentData); 343 359 } catch (\Exception $e) { 344 360 $response['status'] = 'failed'; … … 348 364 $response['request'] = [ 349 365 'order_id' => $order_id, 350 'phone' => $ phone,366 'phone' => $number, 351 367 'amount' => $amount, 352 368 'reference_id' => $reference_id, … … 359 375 $response['raw'] = $result->response; 360 376 } 361 if ($result-> response->output_ResponseCode == 'INS-0') {362 // Mark as paid 377 if ($result->success) { 378 // Mark as paid 363 379 $order->payment_complete(); 364 380 // Reduce stock levels … … 373 389 // Mark as Failed 374 390 $response['status'] = 'failed'; 375 switch ($result-> response->output_ResponseCode) {391 switch ($result->code) { 376 392 //show detailed error message 377 393 case 'INS-13': … … 393 409 break; 394 410 } 395 //Detect API key error 396 if ($result->response->output_error) { 397 if (strpos($result->response->output_error, 'not authorized')) { 398 $error_message = __('API or Public key is not authorized!', 'wc-mpesa-payment-gateway'); 399 } else if ($result->response->output_error = 'Bad API Key') { 400 $error_message = __('Bad API Key!', 'wc-mpesa-payment-gateway'); 401 } 402 } 411 403 412 $response['error_message'] = $error_message; 404 413 $order->update_status('failed', __('Payment failed', 'wc-mpesa-payment-gateway')); 405 414 } 406 407 415 } 408 416 wp_send_json($response); … … 410 418 411 419 412 function generate_reference_id($order_id)420 public function generate_reference_id($order_id) 413 421 { 414 422 //generate uniq reference_id … … 416 424 } 417 425 418 function wc_minimum_order_amount()426 public function wc_minimum_order_amount() 419 427 { 420 428 // Set this variable to specify a minimum order value … … 422 430 423 431 if (WC()->cart->total < $minimum) { 424 425 432 if (is_cart()) { 426 427 433 wc_print_notice( 428 434 sprintf( … … 434 440 ); 435 441 } else { 436 437 442 wc_add_notice( 438 443 sprintf(
Note: See TracChangeset
for help on using the changeset viewer.