Magento crée une commande par programme avec la méthode de paiement paypal


11

Actuellement, nous avons deux sites Web indépendants de magento. L'un se comporte comme une vitrine et l'autre comme un back-end. L'utilisateur peut passer la commande à l'avant.

Donc, même ordre que j'essaie de créer par programme à l'arrière. Lorsque l'utilisateur paie via checkmoun mode de paiement, cela fonctionne. Mais lorsque l'utilisateur paie via PayPal, cela ne fonctionne pas. Donc, quelqu'un sait comment créer une commande par programme en utilisant les méthodes de paiement PayPal? Est-ce possible ou non?

$quote->getPayment()->importData(array(3) {
    [method] => paypal_express
    [last_trans_id] => 65Y31421KL2753028
    [additional_information] => Array
    (
        [paypal_express_checkout_shipping_method] => 
        [paypal_payer_id] => 5LX84SUFY39L4
        [paypal_payer_email] => abbas-buyer-2@bluewisesoft.com
        [paypal_payer_status] => verified
        [paypal_address_status] => Confirmed
        [paypal_correlation_id] => b78b4e5e6e527
        [paypal_express_checkout_payer_id] => 5LX84SUFY39L4
        [paypal_express_checkout_token] => EC-7P402752023166448
        [paypal_express_checkout_redirect_required] => 
        [paypal_protection_eligibility] => Eligible
        [paypal_payment_status] => pending
        [paypal_pending_reason] => authorization
    )
});

Erreur: la passerelle PayPal a rejeté la demande. Une transaction réussie a déjà été effectuée pour ce jeton (# 10415: Transaction refusée en raison d'un argument non valide. Voir les messages d'erreur supplémentaires pour plus de détails).


Une question similaire a répondu ici: magento.stackexchange.com/questions/211783/…
Sreejith Gopinath

Réponses:


4

La création d'une commande avec le mode de paiement PayPal réel n'est pas possible, car vous devrez effectuer un paiement réel. C'est pourquoi PayPal rejette la demande; vous devrez également envoyer un jeton (pour lancer la demande) à PayPal afin qu'ils puissent le vérifier.

Étant donné que vous n'avez pas réellement besoin d'un deuxième paiement mais que vous en avez besoin pour la tenue des registres (pour autant que je sache), il pourrait être judicieux de créer un faux mode de paiement PayPal pour l'autre instance de Magento et de le définir comme mode de paiement lors du transfert. l'ordre.

Comme Inchoo l'a déjà expliqué en détail (ce n'est pas aussi difficile que cela puisse paraître car vous n'aurez qu'à implémenter la partie Magento), je ne le copierai pas / coller ici, mais je ne vous donnerai que le lien; http://inchoo.net/magento/how-to-create-magento-payment-module/

Appelez-le simplement «paypal_proxy_payment» ou quelque chose et utilisez cette méthode et vous êtes prêt à partir!


2

Je partage un lien dans ma réponse et veuillez le parcourir et copier-coller le code dans votre contrôleur personnalisé, puis vous devez changer le mode de paiement

à l'intérieur

$this->orderData = array(
    'session'       => array(
        'customer_id'   => $this->_sourceCustomer->getId(),
        'store_id'      => $this->_storeId,
        ),
    'payment'       => array(
        'method'    => 'checkmo',
         ),
    );

au lieu de checkmovous pouvez écrire votre méthode de paiement.

Veuillez vérifier ceci.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.