Frage Wie verarbeitet man PayPal-Zahlungen in einer ionischen App für Woocommerce?


Ich arbeite an einer ionischen 2 App, die im Grunde ein Warenkorb mit Woocommerce als Backend ist. Mit der REST-API lief es ziemlich reibungslos: Ich kann in der App nach Produkten suchen und Bestellungen für den Kunden erstellen.

Aber jetzt bin ich mit der Zahlungsabwicklung festgefahren. Die App wird nur PayPal verwenden, und es gibt ein PayPal-Plugin Ich würde gerne verwenden. Ich habe es nicht getestet, aber es scheint ziemlich einfach zu sein: Sie übergeben die Kaufdetails (Preis, Währung, Beschreibung ...) und rendern dann die PayPal-Benutzeroberfläche.

Ich kann diese Informationen der PayPal-Benutzeroberfläche zur Verfügung stellen, aber es stellt sich die offensichtliche Frage: Wie integriere ich sie in die zugehörige Woocommerce-Bestellung? Wie kann ich es machen, wenn die Zahlung erfolgreich ist, registriert Wococommerce es als solches?

Die Woocommerce-Installation ermöglicht bereits PayPal. Sie können PayPal in der Website gut verwenden.

Nun, ich bin mir ziemlich sicher, dass es etwas mit IPN von PayPal zu tun hat. Ich vermute, vielleicht sollte ich die Bestell-ID irgendwie an das PayPal-Plugin weitergeben, damit das IPN diese Bestell-ID an Woocommerce weitergibt? Wahrscheinlich so etwas, aber ich finde keine richtige Dokumentation darüber.

Wenn Sie "ionic 2 woocommerce paypal" suchen, werden Sie viele Leute sehen, die den Quellcode für so ziemlich die gleiche Sache verkaufen. Ich könnte eine kaufen und studieren, aber ich würde lieber Dokumentation über diese bestimmte Aktion finden.


6
2018-03-28 21:39


Ursprung


Antworten:


Du bist fast am Ziel. Wenn Sie kein Plugin kaufen möchten, können Sie es manuell tun. Setzen Sie zum Beispiel den Wert notify_url Parameter für Ihre Website, z.pp_respond (oder was auch immer du willst).

enter image description here

In deinem functions.php, setze diesen Code:

if(isset($_GET['pp_respond'])){
    file_put_contents(__DIR__."/my_notificationssss.txt", $_SERVER['REQUEST_URI']. "\r\n". print_r($_POST,true) . "\r\n ------------- \r\n" , FILE_APPEND);
}

dann machen Sie einen Testkauf, und entlang der functions.php Datei gibt es eine neue Datei namens my-notificationssss.txt, und blättern Sie durch diese Datei, und finden Sie die gewünschten Parameter für die Verwendung in der Zukunft.


0
2018-04-06 20:54



Eine mögliche Lösung wäre, die Bestellinformationen der Benutzersitzung hinzuzufügen, bevor der Benutzer an Paypal gesendet wird.

Nachdem der Nutzer über Paypal bezahlt hat, leiten Sie ihn zu einer "Erfolg" -URL um (in der PayPal-Anfrage angegeben). Wenn der Benutzer diese URL aufruft, können Sie die Bestellung in WooCommerce mithilfe der Sitzungsinformationen aktualisieren.


0
2018-04-06 20:56



Nach dem Suchen im woo commerce-Quellcode scheint es, dass es eine eigene Bestell-ID zu PayPal's invoiceNumber-Sektion hinzufügt.

Wenn Sie also PayPal-plugin auf Ihrer Website haben (es sollte IPN aktiviert sein), können Sie PayPal Cordova Plugin in ionic 2 verwenden, indem Sie Woo Commerce Order ID an invoiceNumber übergeben. Wie im folgenden Beispiel:

Bearbeiten: Obwohl Woo Commerce Rechnungsnummer hinzufügen, glaube ich jetzt die wichtigsten Parameter, die übergeben werden, ist die custom param.

pay() {
    let payment = new PayPalPayment(this.data.price, this.data.currency, this.data.description, 'sale');
    payment.custom = JSON.stringify({ order_id: this.data.WOOCOMMERCE_ORDERID, order_key: this.data.WOOCOMMERCE_ORDERKEY });
    this.payPal.renderSinglePaymentUI(payment).then((response) => {
        console.log(response);
        // Successfully paid

        // Example sandbox response
        //
        // {
        //   "client": {
        //     "environment": "sandbox",
        //     "product_name": "PayPal ANDROID SDK",
        //     "paypal_sdk_version": "2.16.0",
        //     "platform": "iOS"
        //   },
        //   "response_type": "payment",
        //   "response": {
        //     "id": "PAY-1AB23456CD789012EF34GHIJ",
        //     "state": "approved",
        //     "create_time": "2016-10-03T13:33:33Z",
        //     "intent": "sale"
        //   }
        // }
    }, () => {
        // Error or render dialog closed without being successful
    });
}

0
2018-04-06 21:27