Nous ne répondons seulement qu'aux sujets dont l'auteur a complété sa signature [Lire]


Redirection vers Paypal sans ouverture de compte

Ce forum est destiné uniquement aux modules de paiements.

Redirection vers Paypal sans ouverture de compte

Messagepar Creastyle » 20 Avr 2015, 22:40

Bonjour,
j'ai installé paypal standart et paypal express pour tester les deux modules, seulement je but sérieusement sur un problème, j'ai lu un tutoriel qui permet de modifier un fichier dans le module paypal et de ce fait le client lors du payement est directement dirigé vers la version de paypal qui ne propose pas l'ouverture d'un compte.

Seulement je n'arrive plus à mettre la main dessus, j'avais fait les modif sur oc 2.0 mais je n'arrive pas à reproduire ces modifications sur la 1.5, malheureusement beaucoup de client n'aiment pas paypal et encore moins le fait de devoir ouvrir un compte, c'est quelque chose qui peut faire perdre des commandes..

Donc si vous aviez un lien ou un tuto sous la main pour m'aider à réaliser ces modification ce serait très sympa.

D'autre part j'avais un module de paiement sur prestashop ou je pouvais proposer la plateforme Comnpay avec qui j'aime bien travailler mais ils n'ont pas de module pour opencart je suis donc obligé de me rabattre sur paypal..

merci d'avance
Version d'OpenCart : 2.2.0.0
https://www.creastyle[point]fr
- Hébergeur : Planet Hoster World pack
- Modules installés : SSL Certificat, Complet SEO,T-shirt designer Ecommerce, Livezilla, Acute category manager, Pro Email Template, Quick Order Status Updater, Auto review by sms, Lightning cache, Product/Category description générator
- Template installé : Journal 2
- Version du PHP : 5.4.35

Le secret du changement consiste à concentrer son énergie pour créer du nouveau, et non pas pour se battre contre l'ancien. Dan Millam
Avatar de l’utilisateur
Creastyle
Utilisateur enregistré
Utilisateur enregistré
 
Messages: 342
Inscription: 18 Avr 2015, 06:46

Re: Redirection vers Paypal sans ouverture de compte

Messagepar LeorLindel » 20 Avr 2015, 22:49

Creastyle a écrit:Bonjour,
j'ai installé paypal standart et paypal express pour tester les deux modules, seulement je but sérieusement sur un problème, j'ai lu un tutoriel qui permet de modifier un fichier dans le module paypal et de ce fait le client lors du payement est directement dirigé vers la version de paypal qui ne propose pas l'ouverture d'un compte.

Seulement je n'arrive plus à mettre la main dessus, j'avais fait les modif sur oc 2.0 mais je n'arrive pas à reproduire ces modifications sur la 1.5, malheureusement beaucoup de client n'aiment pas paypal et encore moins le fait de devoir ouvrir un compte, c'est quelque chose qui peut faire perdre des commandes..

Donc si vous aviez un lien ou un tuto sous la main pour m'aider à réaliser ces modification ce serait très sympa.
Donne-nous les modifications que tu avais effectués pour la v2.0 et nous pourrons les reproduire pour les versions antérieures.
Creastyle a écrit:D'autre part j'avais un module de paiement sur prestashop ou je pouvais proposer la plateforme Comnpay avec qui j'aime bien travailler mais ils n'ont pas de module pour opencart je suis donc obligé de me rabattre sur paypal..

merci d'avance
Je ne connaissais pas cette plateforme, mais nous avons dans l'équipe un modérateur (Doc60) qui est spécialisé dans les modules de paiement et qui serait surement intéressé pour en concevoir un pour cette plateforme et pourquoi pas ne pas établir un partenariat éventuel entre nos deux plateformes.
Je lui en parle de ce pas.
Image
1 - A lire avant de poster un sujet
2 - Politique sur la signature.

Quand le sujet est résolu, pensez à ajouter la petite coche verte Image dans le titre initial en éditant votre premier message et non dans votre dernière réponse.
Merci


Toutes les extensions commerciales (templates ou modules payants) ne peuvent pas faire l'objet d'ouverture de sujet, prière de bien vouloir s'adresser au concepteur en cas de problème ou demande de renseignements.

Seul, on avance plus vite, à plusieurs on avance plus loin.
Avatar de l’utilisateur
LeorLindel
Administrateur
Administrateur
 
Messages: 4232
Inscription: 19 Fév 2010, 12:44
Localisation: Lutéce

Re: Redirection vers Paypal sans ouverture de compte

Messagepar Creastyle » 20 Avr 2015, 23:06

A propos des modifications justement je ne m'en rappel pas :cry:
j'ai juste sauvegardé les fichiers de la 2.0 il me semble que j'ai modifié le fichier pp_standard.php dans catalog\controller\payment\ je poste ci dessous le contenu du fichier modifié sait-on jamais

En ce qui concerne Comnpay je les trouves vraiment très bien, les frais sont correctes le contrat vad est inclu et ils reversent les paiement à j+2 ce qui est convenable je trouve donc si le modérateur spécialisé pouvait faire un module compatible ce serait vraiment une aubaine :)

voici le contenu

Code: Tout sélectionner
<?php
class ControllerPaymentPPStandard extends Controller {
   public function index() {
      $this->language->load('payment/pp_standard');

      $data['text_testmode'] = $this->language->get('text_testmode');
      $data['button_confirm'] = $this->language->get('button_confirm');

      $data['testmode'] = $this->config->get('pp_standard_test');

      if (!$this->config->get('pp_standard_test')) {
         $data['action'] = 'https://www.paypal.com/cgi-bin/webscr';
      } else {
         $data['action'] = 'https://www.sandbox.paypal.com/cgi-bin/webscr';
      }

      $this->load->model('checkout/order');

      $order_info = $this->model_checkout_order->getOrder($this->session->data['order_id']);

      if ($order_info) {
         $data['business'] = $this->config->get('pp_standard_email');
         $data['item_name'] = html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8');

         $data['products'] = array();

         foreach ($this->cart->getProducts() as $product) {
            $option_data = array();

            foreach ($product['option'] as $option) {
               if ($option['type'] != 'file') {
                  $value = $option['value'];
               } else {
                  $upload_info = $this->model_tool_upload->getUploadByCode($option['value']);
                  
                  if ($upload_info) {
                     $value = $upload_info['name'];
                  } else {
                     $value = '';
                  }
               }

               $option_data[] = array(
                  'name'  => $option['name'],
                  'value' => (utf8_strlen($value) > 20 ? utf8_substr($value, 0, 20) . '..' : $value)
               );
            }

            $data['products'][] = array(
               'name'     => htmlspecialchars($product['name']),
               'model'    => htmlspecialchars($product['model']),
               'price'    => $this->currency->format($product['price'], $order_info['currency_code'], false, false),
               'quantity' => $product['quantity'],
               'option'   => $option_data,
               'weight'   => $product['weight']
            );
         }

         $data['discount_amount_cart'] = 0;

         $total = $this->currency->format($order_info['total'] - $this->cart->getSubTotal(), $order_info['currency_code'], false, false);

         if ($total > 0) {
            $data['products'][] = array(
               'name'     => $this->language->get('text_total'),
               'model'    => '',
               'price'    => $total,
               'quantity' => 1,
               'option'   => array(),
               'weight'   => 0
            );
         } else {
            $data['discount_amount_cart'] -= $total;
         }

         $data['currency_code'] = $order_info['currency_code'];
         $data['first_name'] = html_entity_decode($order_info['payment_firstname'], ENT_QUOTES, 'UTF-8');
         $data['last_name'] = html_entity_decode($order_info['payment_lastname'], ENT_QUOTES, 'UTF-8');
         $data['address1'] = html_entity_decode($order_info['payment_address_1'], ENT_QUOTES, 'UTF-8');
         $data['address2'] = html_entity_decode($order_info['payment_address_2'], ENT_QUOTES, 'UTF-8');
         $data['city'] = html_entity_decode($order_info['payment_city'], ENT_QUOTES, 'UTF-8');
         $data['zip'] = html_entity_decode($order_info['payment_postcode'], ENT_QUOTES, 'UTF-8');
         $data['country'] = $order_info['payment_iso_code_2'];
         $data['email'] = $order_info['email'];
         $data['invoice'] = $this->session->data['order_id'] . ' - ' . html_entity_decode($order_info['payment_firstname'], ENT_QUOTES, 'UTF-8') . ' ' . html_entity_decode($order_info['payment_lastname'], ENT_QUOTES, 'UTF-8');
         $data['lc'] = $this->session->data['language'];
         $data['return'] = $this->url->link('checkout/success');
         $data['notify_url'] = $this->url->link('payment/pp_standard/callback', '', 'SSL');
         $data['cancel_return'] = $this->url->link('checkout/checkout', '', 'SSL');

         if (!$this->config->get('pp_standard_transaction')) {
            $data['paymentaction'] = 'authorization';
         } else {
            $data['paymentaction'] = 'sale';
         }

         $data['custom'] = $this->session->data['order_id'];

         if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/payment/pp_standard.tpl')) {
            return $this->load->view($this->config->get('config_template') . '/template/payment/pp_standard.tpl', $data);
         } else {
            return $this->load->view('default/template/payment/pp_standard.tpl', $data);
         }
      }
   }

   public function callback() {
      if (isset($this->request->post['custom'])) {
         $order_id = $this->request->post['custom'];
      } else {
         $order_id = 0;
      }

      $this->load->model('checkout/order');

      $order_info = $this->model_checkout_order->getOrder($order_id);

      if ($order_info) {
         $request = 'cmd=_notify-validate';

         foreach ($this->request->post as $key => $value) {
            $request .= '&' . $key . '=' . urlencode(html_entity_decode($value, ENT_QUOTES, 'UTF-8'));
         }

         if (!$this->config->get('pp_standard_test')) {
            $curl = curl_init('https://www.paypal.com/cgi-bin/webscr');
         } else {
            $curl = curl_init('https://www.sandbox.paypal.com/cgi-bin/webscr');
         }

         curl_setopt($curl, CURLOPT_POST, true);
         curl_setopt($curl, CURLOPT_POSTFIELDS, $request);
         curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
         curl_setopt($curl, CURLOPT_HEADER, false);
         curl_setopt($curl, CURLOPT_TIMEOUT, 30);
         curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

         $response = curl_exec($curl);

         if (!$response) {
            $this->log->write('PP_STANDARD :: CURL failed ' . curl_error($curl) . '(' . curl_errno($curl) . ')');
         }

         if ($this->config->get('pp_standard_debug')) {
            $this->log->write('PP_STANDARD :: IPN REQUEST: ' . $request);
            $this->log->write('PP_STANDARD :: IPN RESPONSE: ' . $response);
         }

         if ((strcmp($response, 'VERIFIED') == 0 || strcmp($response, 'UNVERIFIED') == 0) && isset($this->request->post['payment_status'])) {
            $order_status_id = $this->config->get('config_order_status_id');

            switch($this->request->post['payment_status']) {
               case 'Canceled_Reversal':
                  $order_status_id = $this->config->get('pp_standard_canceled_reversal_status_id');
                  break;
               case 'Completed':
                  $receiver_match = (strtolower($this->request->post['receiver_email']) == strtolower($this->config->get('pp_standard_email')));

                  $total_paid_match = ((float)$this->request->post['mc_gross'] == $this->currency->format($order_info['total'], $order_info['currency_code'], $order_info['currency_value'], false));

                  if ($receiver_match && $total_paid_match) {
                     $order_status_id = $this->config->get('pp_standard_completed_status_id');
                  }
                  
                  if (!$receiver_match) {
                     $this->log->write('PP_STANDARD :: RECEIVER EMAIL MISMATCH! ' . strtolower($this->request->post['receiver_email']));
                  }
                  
                  if (!$total_paid_match) {
                     $this->log->write('PP_STANDARD :: TOTAL PAID MISMATCH! ' . $this->request->post['mc_gross']);
                  }
                  break;
               case 'Denied':
                  $order_status_id = $this->config->get('pp_standard_denied_status_id');
                  break;
               case 'Expired':
                  $order_status_id = $this->config->get('pp_standard_expired_status_id');
                  break;
               case 'Failed':
                  $order_status_id = $this->config->get('pp_standard_failed_status_id');
                  break;
               case 'Pending':
                  $order_status_id = $this->config->get('pp_standard_pending_status_id');
                  break;
               case 'Processed':
                  $order_status_id = $this->config->get('pp_standard_processed_status_id');
                  break;
               case 'Refunded':
                  $order_status_id = $this->config->get('pp_standard_refunded_status_id');
                  break;
               case 'Reversed':
                  $order_status_id = $this->config->get('pp_standard_reversed_status_id');
                  break;
               case 'Voided':
                  $order_status_id = $this->config->get('pp_standard_voided_status_id');
                  break;
            }

            $this->model_checkout_order->addOrderHistory($order_id, $order_status_id);
         } else {
            $this->model_checkout_order->addOrderHistory($order_id, $this->config->get('config_order_status_id'));
         }

         curl_close($curl);
      }
   }
}
Version d'OpenCart : 2.2.0.0
https://www.creastyle[point]fr
- Hébergeur : Planet Hoster World pack
- Modules installés : SSL Certificat, Complet SEO,T-shirt designer Ecommerce, Livezilla, Acute category manager, Pro Email Template, Quick Order Status Updater, Auto review by sms, Lightning cache, Product/Category description générator
- Template installé : Journal 2
- Version du PHP : 5.4.35

Le secret du changement consiste à concentrer son énergie pour créer du nouveau, et non pas pour se battre contre l'ancien. Dan Millam
Avatar de l’utilisateur
Creastyle
Utilisateur enregistré
Utilisateur enregistré
 
Messages: 342
Inscription: 18 Avr 2015, 06:46


Retourner vers Paiements

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

cron