2017-03-28 67 views
6

Pracuję nad jonową aplikacją 2, która jest w zasadzie koszykiem z Woocommerce jako zapleczem. Z interfejsem API REST wszystko poszło gładko: mogę przeglądać produkty i tworzyć zamówienia dla klienta w aplikacji.Jak przetwarzać płatności PayPal w jonowej aplikacji dla Woocommerce?

Ale teraz utknąłem z przetwarzania płatności. Aplikacja będzie korzystać tylko z systemu PayPal, a jest tam PayPal plugin Chciałbym użyć. Nie testowałem tego, ale wydaje się to całkiem proste: przekazujesz szczegóły zakupu (cenę, walutę, opis ...), a następnie renderujesz interfejs użytkownika PayPal.

Mogę dostarczyć wszystkie te informacje do interfejsu użytkownika PayPal, ale rodzi to oczywiste pytanie: w jaki sposób mogę je zintegrować z powiązanym zamówieniem Woocommerce? Jak mogę to zrobić, jeśli płatność się powiedzie, Woocommerce rejestruje ją jako taką?

Instalacja Woocommerce już włącza PayPal. Możesz korzystać z serwisu PayPal na stronie internetowej.

Jestem przekonany, że ma to coś wspólnego z IPN firmy PayPal. Zgadując, może powinienem jakoś przekazać identyfikator zamówienia do wtyczki PayPal, więc IPN przekaże ten sam identyfikator zamówienia do Woocommerce? Prawdopodobnie coś takiego, ale nie mogę znaleźć odpowiedniej dokumentacji na ten temat.

Jeśli wyszukasz hasło "ionic 2 woocommerce paypal", zobaczysz wiele osób sprzedających kod źródłowy za prawie to samo. Mogę go kupić i przestudiować, ale wolałbym znaleźć dokumentację na temat tej konkretnej akcji.

+0

Zamiast używać wtyczki, dlaczego tylko płacić zwykłym przyciskiem HTML? –

+0

@ JonathanBrizio mimo to, nie wiedziałbym, jakie informacje przekazać do tego przycisku. – Voldemort

+0

Czy możesz podać lekką wersję swojej implementacji w Git Repo? Więc możemy się z tym bawić? – Sampath

Odpowiedz

0

Już prawie jesteś. Jeśli nie chcesz kupować wtyczki, możesz zrobić to ręcznie. Na przykład ustaw parametr notify_url na swojej stronie, np. pp_respond (lub cokolwiek chcesz).

enter image description here

W swojej functions.php, umieścić ten kod:

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

następnie dokonać zakupu testowego, a wraz pliku functions.php tam będzie nowy plik o nazwie my-notificationssss.txt i przejrzeć tego pliku, i znaleźć pożądane parametry do wykorzystania w przyszłości.

0

Jednym z możliwych rozwiązań byłoby dodanie informacji o zamówieniu do sesji użytkowników przed wysłaniem użytkownika do Paypal.

Po zapłaceniu przez użytkownika przez Paypal, przekieruj ich na adres URL "Sukces" (określony w zleceniu PayPal). Gdy użytkownik przejdzie do tego adresu URL sukcesu, możesz zaktualizować zamówienie w WooCommerce, korzystając z informacji o sesji.

0

Po przejrzeniu kodu źródłowego woo commerce wydaje się, że dodaje swój własny identyfikator zamówienia do sekcji faktury VAT PayPala.

Więc jeśli masz woo komercyjną wtyczkę PayPal na swojej stronie (powinna włączyć IPN), możesz użyć wtyczki PayPal Cordova w jonowej 2, przekazując identyfikator zamówienia handlowego woo do faktury numer. Tak jak w poniższym przykładzie:

EDYCJA: Chociaż woo commerce dodaje numer faktury, teraz uważam, że najważniejszymi parametrami, które są przekazywane, jest parametr custom.

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