Plugin Directory

Changeset 2749378


Ignore:
Timestamp:
06/29/2022 01:00:57 AM (4 years ago)
Author:
karson9
Message:

Update to version 1.2.4 from GitHub

Location:
wc-m-pesa-payment-gateway
Files:
244 added
4 deleted
4 edited
1 copied

Legend:

Unmodified
Added
Removed
  • wc-m-pesa-payment-gateway/tags/1.2.4/readme.txt

    r2515920 r2749378  
    55Tags:  mpesa, m-pesa, woocommerce, mpesa api, gateway, Mobile Payments, mpesa online, Vodacom,  Mpesa API Mozambique
    66Requires at least: 5.0
    7 Tested up to: 5.7.1
    8 Requires PHP: 7.0
    9 Stable tag: 1.2.3
     7Tested up to: 6.0
     8Requires PHP: 7.1
     9Stable tag: 1.2.4
    1010License: GPLv2 or later
    1111License URI: http://www.gnu.org/licenses/gpl-2.0.html
     
    3232
    3333* 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).
    3534* 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.
    3735
    3836### Contribuir
  • wc-m-pesa-payment-gateway/tags/1.2.4/wc-mpesa-payment-gateway.php

    r2515920 r2749378  
    44Plugin URI: https://wordpress.org/plugins/wc-m-pesa-payment-gateway/
    55Description: Receive payments directly to your store through the Vodacom Mozambique M-Pesa.
    6 Version: 1.2.3
     6Version: 1.2.4
    77WC requires at least: 4.0.0
    8 WC tested up to: 5.2.1
     8WC tested up to: 6.6.1
    99Author: karson <karson@turbohost.co.mz>
    1010Author URI: http://karsonadam.com
     
    1414    License URI: http://www.gnu.org/licenses/gpl-2.0.html
    1515*/
    16 
    17 $wc_mpesa_db_version = "1.2.3";
     16require 'vendor/autoload.php';
     17use Paymentsds\MPesa\Client;
     18use Paymentsds\MPesa\Environment;
     19
     20$wc_mpesa_db_version = "1.2.4";
    1821add_action('plugins_loaded', 'wc_mpesa_init', 0);
    1922add_action('plugins_loaded', 'wc_mpesa_update_check');
     
    2427 * @return void
    2528 */
    26 function  wc_mpesa_install()
     29function wc_mpesa_install()
    2730{
    2831    global $wc_mpesa_db_version;
     
    3134
    3235    if (!get_option('wc_mpesa_version', $wc_mpesa_db_version)) {
    33 
    3436        require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
    3537        $wpdb->query("DROP TABLE IF EXISTS $table_name");
     
    5557function wc_mpesa_init()
    5658{
    57     require 'vendor/autoload.php';
    58     if (!class_exists('WC_Payment_Gateway')) return;
     59    if (!class_exists('WC_Payment_Gateway')) {
     60        return;
     61    }
    5962    /**
    6063     * Localisation
     
    6871    class WC_Gateway_MPESA extends WC_Payment_Gateway
    6972    {
    70 
    71 
    7273        public function __construct()
    7374        {
    74 
    7575            $this->id                 = 'wc-mpesa-payment-gateway';
    7676            $this->icon               = apply_filters('wc-mpesa_icon', plugins_url('assets/img/m-pesa-logo.png', __FILE__));
     
    179179            }
    180180
    181             if(isset($_SESSION['wc_mpesa_number'])){
     181            if (isset($_SESSION['wc_mpesa_number'])) {
    182182                $number = $this->wc_mpesa_validate_number($_SESSION['wc_mpesa_number']);
    183             }else{
     183            } else {
    184184                $number = '';
    185185            }
     
    190190
    191191
    192             //Use unique IDs, because other gateways could already use 
     192            //Use unique IDs, because other gateways could already use
    193193            echo '<div class="form-row form-row-wide"><label>' . esc_html__('Mpesa number', 'wc-mpesa-payment-gateway') . '<span class="required">*</span></label>
    194194                <input name="wc_mpesa_number" type="tel" value="' . esc_attr($number) . '" placeholder="' . esc_attr__('ex: 84 123 4567', 'wc-mpesa-payment-gateway') . '">
     
    213213            }
    214214
    215             //save phone to use on payment screen and new transactions
     215            //save phone to use on payment screen
    216216            session_start();
    217              $_SESSION['wc_mpesa_number'] = $number;
     217            $_SESSION['wc_mpesa_number'] = $number;
    218218
    219219            return true;
    220220        }
    221221
    222        public function wc_mpesa_validate_number($number){
     222        public function wc_mpesa_validate_number($number)
     223        {
    223224            $number = filter_var($number, FILTER_VALIDATE_INT);
    224                         //validade mpesa numbers to only accept 84 and 85 prefix ex: 84 8283607
     225            //validade mpesa numbers to only accept 84 and 85 prefix ex: 84 8283607
    225226            if (!isset($number) || strlen($number) != 9 || !preg_match('/^8[4|5][0-9]{7}$/', $number)) {
    226227                wc_add_notice(__('Phone number is incorrect!', 'wc-mpesa-payment-gateway'), 'error');
     
    233234
    234235
    235         function payment_scripts()
     236        public function payment_scripts()
    236237        {
    237238            if (!is_checkout_pay_page()) {
     
    276277        }
    277278
    278         function payment_form_html($order_id)
     279        public function payment_form_html($order_id)
    279280        {
    280281            // modify post object here
     
    282283            $return_url = $this->get_return_url($order);
    283284            $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;
    285293        }
    286294
     
    312320
    313321
    314         function process_action()
     322        public function process_action()
    315323        {
    316324            session_start();
     
    325333
    326334            //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           
    335345            $order = new WC_Order(filter_input(INPUT_POST, 'order_id', FILTER_VALIDATE_INT));
    336346            $order_id = $order->get_id();
     
    340350                $number = "258${number}";
    341351                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);
    343359                } catch (\Exception $e) {
    344360                    $response['status'] = 'failed';
     
    348364                        $response['request'] = [
    349365                            'order_id' => $order_id,
    350                              'phone' => $phone,
     366                             'phone' => $number,
    351367                             'amount' => $amount,
    352368                             'reference_id' => $reference_id,
     
    359375                    $response['raw'] =  $result->response;
    360376                }
    361                 if ($result->response->output_ResponseCode == 'INS-0') {
    362                     // Mark as paid 
     377                if ($result->success) {
     378                    // Mark as paid
    363379                    $order->payment_complete();
    364380                    // Reduce stock levels
     
    373389                    // Mark as Failed
    374390                    $response['status'] = 'failed';
    375                     switch ($result->response->output_ResponseCode) {
     391                    switch ($result->code) {
    376392                            //show detailed error message
    377393                        case 'INS-13':
     
    393409                            break;
    394410                    }
    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                 
    403412                    $response['error_message'] = $error_message;
    404413                    $order->update_status('failed', __('Payment failed', 'wc-mpesa-payment-gateway'));
    405414                }
    406 
    407415            }
    408416            wp_send_json($response);
     
    410418
    411419
    412         function generate_reference_id($order_id)
     420        public function generate_reference_id($order_id)
    413421        {
    414422            //generate uniq reference_id
     
    416424        }
    417425
    418         function wc_minimum_order_amount()
     426        public function wc_minimum_order_amount()
    419427        {
    420428            // Set this variable to specify a minimum order value
     
    422430
    423431            if (WC()->cart->total < $minimum) {
    424 
    425432                if (is_cart()) {
    426 
    427433                    wc_print_notice(
    428434                        sprintf(
     
    434440                    );
    435441                } else {
    436 
    437442                    wc_add_notice(
    438443                        sprintf(
  • wc-m-pesa-payment-gateway/trunk/readme.txt

    r2515920 r2749378  
    55Tags:  mpesa, m-pesa, woocommerce, mpesa api, gateway, Mobile Payments, mpesa online, Vodacom,  Mpesa API Mozambique
    66Requires at least: 5.0
    7 Tested up to: 5.7.1
    8 Requires PHP: 7.0
    9 Stable tag: 1.2.3
     7Tested up to: 6.0
     8Requires PHP: 7.1
     9Stable tag: 1.2.4
    1010License: GPLv2 or later
    1111License URI: http://www.gnu.org/licenses/gpl-2.0.html
     
    3232
    3333* 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).
    3534* 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.
    3735
    3836### Contribuir
  • wc-m-pesa-payment-gateway/trunk/wc-mpesa-payment-gateway.php

    r2515920 r2749378  
    44Plugin URI: https://wordpress.org/plugins/wc-m-pesa-payment-gateway/
    55Description: Receive payments directly to your store through the Vodacom Mozambique M-Pesa.
    6 Version: 1.2.3
     6Version: 1.2.4
    77WC requires at least: 4.0.0
    8 WC tested up to: 5.2.1
     8WC tested up to: 6.6.1
    99Author: karson <karson@turbohost.co.mz>
    1010Author URI: http://karsonadam.com
     
    1414    License URI: http://www.gnu.org/licenses/gpl-2.0.html
    1515*/
    16 
    17 $wc_mpesa_db_version = "1.2.3";
     16require 'vendor/autoload.php';
     17use Paymentsds\MPesa\Client;
     18use Paymentsds\MPesa\Environment;
     19
     20$wc_mpesa_db_version = "1.2.4";
    1821add_action('plugins_loaded', 'wc_mpesa_init', 0);
    1922add_action('plugins_loaded', 'wc_mpesa_update_check');
     
    2427 * @return void
    2528 */
    26 function  wc_mpesa_install()
     29function wc_mpesa_install()
    2730{
    2831    global $wc_mpesa_db_version;
     
    3134
    3235    if (!get_option('wc_mpesa_version', $wc_mpesa_db_version)) {
    33 
    3436        require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
    3537        $wpdb->query("DROP TABLE IF EXISTS $table_name");
     
    5557function wc_mpesa_init()
    5658{
    57     require 'vendor/autoload.php';
    58     if (!class_exists('WC_Payment_Gateway')) return;
     59    if (!class_exists('WC_Payment_Gateway')) {
     60        return;
     61    }
    5962    /**
    6063     * Localisation
     
    6871    class WC_Gateway_MPESA extends WC_Payment_Gateway
    6972    {
    70 
    71 
    7273        public function __construct()
    7374        {
    74 
    7575            $this->id                 = 'wc-mpesa-payment-gateway';
    7676            $this->icon               = apply_filters('wc-mpesa_icon', plugins_url('assets/img/m-pesa-logo.png', __FILE__));
     
    179179            }
    180180
    181             if(isset($_SESSION['wc_mpesa_number'])){
     181            if (isset($_SESSION['wc_mpesa_number'])) {
    182182                $number = $this->wc_mpesa_validate_number($_SESSION['wc_mpesa_number']);
    183             }else{
     183            } else {
    184184                $number = '';
    185185            }
     
    190190
    191191
    192             //Use unique IDs, because other gateways could already use 
     192            //Use unique IDs, because other gateways could already use
    193193            echo '<div class="form-row form-row-wide"><label>' . esc_html__('Mpesa number', 'wc-mpesa-payment-gateway') . '<span class="required">*</span></label>
    194194                <input name="wc_mpesa_number" type="tel" value="' . esc_attr($number) . '" placeholder="' . esc_attr__('ex: 84 123 4567', 'wc-mpesa-payment-gateway') . '">
     
    213213            }
    214214
    215             //save phone to use on payment screen and new transactions
     215            //save phone to use on payment screen
    216216            session_start();
    217              $_SESSION['wc_mpesa_number'] = $number;
     217            $_SESSION['wc_mpesa_number'] = $number;
    218218
    219219            return true;
    220220        }
    221221
    222        public function wc_mpesa_validate_number($number){
     222        public function wc_mpesa_validate_number($number)
     223        {
    223224            $number = filter_var($number, FILTER_VALIDATE_INT);
    224                         //validade mpesa numbers to only accept 84 and 85 prefix ex: 84 8283607
     225            //validade mpesa numbers to only accept 84 and 85 prefix ex: 84 8283607
    225226            if (!isset($number) || strlen($number) != 9 || !preg_match('/^8[4|5][0-9]{7}$/', $number)) {
    226227                wc_add_notice(__('Phone number is incorrect!', 'wc-mpesa-payment-gateway'), 'error');
     
    233234
    234235
    235         function payment_scripts()
     236        public function payment_scripts()
    236237        {
    237238            if (!is_checkout_pay_page()) {
     
    276277        }
    277278
    278         function payment_form_html($order_id)
     279        public function payment_form_html($order_id)
    279280        {
    280281            // modify post object here
     
    282283            $return_url = $this->get_return_url($order);
    283284            $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;
    285293        }
    286294
     
    312320
    313321
    314         function process_action()
     322        public function process_action()
    315323        {
    316324            session_start();
     
    325333
    326334            //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           
    335345            $order = new WC_Order(filter_input(INPUT_POST, 'order_id', FILTER_VALIDATE_INT));
    336346            $order_id = $order->get_id();
     
    340350                $number = "258${number}";
    341351                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);
    343359                } catch (\Exception $e) {
    344360                    $response['status'] = 'failed';
     
    348364                        $response['request'] = [
    349365                            'order_id' => $order_id,
    350                              'phone' => $phone,
     366                             'phone' => $number,
    351367                             'amount' => $amount,
    352368                             'reference_id' => $reference_id,
     
    359375                    $response['raw'] =  $result->response;
    360376                }
    361                 if ($result->response->output_ResponseCode == 'INS-0') {
    362                     // Mark as paid 
     377                if ($result->success) {
     378                    // Mark as paid
    363379                    $order->payment_complete();
    364380                    // Reduce stock levels
     
    373389                    // Mark as Failed
    374390                    $response['status'] = 'failed';
    375                     switch ($result->response->output_ResponseCode) {
     391                    switch ($result->code) {
    376392                            //show detailed error message
    377393                        case 'INS-13':
     
    393409                            break;
    394410                    }
    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                 
    403412                    $response['error_message'] = $error_message;
    404413                    $order->update_status('failed', __('Payment failed', 'wc-mpesa-payment-gateway'));
    405414                }
    406 
    407415            }
    408416            wp_send_json($response);
     
    410418
    411419
    412         function generate_reference_id($order_id)
     420        public function generate_reference_id($order_id)
    413421        {
    414422            //generate uniq reference_id
     
    416424        }
    417425
    418         function wc_minimum_order_amount()
     426        public function wc_minimum_order_amount()
    419427        {
    420428            // Set this variable to specify a minimum order value
     
    422430
    423431            if (WC()->cart->total < $minimum) {
    424 
    425432                if (is_cart()) {
    426 
    427433                    wc_print_notice(
    428434                        sprintf(
     
    434440                    );
    435441                } else {
    436 
    437442                    wc_add_notice(
    438443                        sprintf(
Note: See TracChangeset for help on using the changeset viewer.