Magento erstellt eine Bestellung programmgesteuert mit der Paypal-Zahlungsmethode

11

Derzeit haben wir zwei unabhängige Magento-Websites. Einer verhält sich als Storefront und der andere als Backend. Der Benutzer kann die Bestellung am Frontend aufgeben.

Also die gleiche Reihenfolge versuche ich programmgesteuert am Backend zu erstellen. Wenn der Benutzer über die checkmoZahlungsmethode bezahlt , funktioniert dies. Wenn der Benutzer jedoch über PayPal bezahlt, funktioniert dies nicht. Weiß also jemand, wie wir mit PayPal-Zahlungsmethoden programmgesteuert Bestellungen erstellen können? Ist es möglich oder nicht?

$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
    )
});

Fehler: Das PayPal-Gateway hat die Anforderung abgelehnt. Für dieses Token wurde bereits eine erfolgreiche Transaktion abgeschlossen (# 10415: Transaktion aufgrund eines ungültigen Arguments abgelehnt. Weitere Informationen finden Sie in den zusätzlichen Fehlermeldungen).

Abbas
quelle
Eine ähnliche Frage wurde hier beantwortet: magento.stackexchange.com/questions/211783/…
Sreejith Gopinath

Antworten:

4

Das Erstellen einer Bestellung mit der tatsächlichen PayPal-Zahlungsmethode ist nicht möglich, da Sie eine tatsächliche Zahlung vornehmen müssen. Aus diesem Grund lehnt PayPal die Anfrage ab. Sie müssen auch ein Token (um die Anfrage zu initiieren) an PayPal senden, damit diese es überprüfen können.

Da Sie eigentlich keine zweite Zahlung benötigen, diese aber zur Aufzeichnung benötigen (soweit ich lesen kann), ist es möglicherweise ratsam, eine gefälschte PayPal-Zahlungsmethode für die andere Magento-Instanz zu erstellen und diese bei der Übertragung als Zahlungsmethode festzulegen die Bestellung.

Da Inchoo dies bereits ausführlich erklärt hat (es ist nicht so schwierig, wie es sich anhört, da Sie nur den Magento-Teil implementieren müssen), werde ich ihn hier nicht kopieren / einfügen, sondern nur den Link angeben. http://inchoo.net/magento/how-to-create-magento-payment-module/

Nennen Sie es einfach "paypal_proxy_payment" oder so und verwenden Sie diese Methode und Sie können loslegen!

Peter Jaap Blaakmeer
quelle
2

Ich teile einen Link in meiner Antwort und bitte gehen Sie ihn durch und kopieren Sie einfach den Code in Ihren benutzerdefinierten Controller. Dann müssen Sie die Zahlungsmethode ändern

Innerhalb

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

Stattdessen checkmokönnen Sie Ihre Zahlungsmethode schreiben.

Bitte prüfen Sie das.

Asheem Patro
quelle