wordpress - pesos - paypal woocommerce 2018
¿Cómo procesar pagos de PayPal en una aplicación iónica para WooCommerce? (3)
Estoy trabajando en una aplicación iónica 2 que básicamente es un carrito de compras con Woocommerce como back-end. Las cosas han sido bastante suaves con la API REST: puedo buscar productos y crear pedidos para el cliente en la aplicación.
Pero ahora estoy atascado con el procesamiento de pagos. La aplicación solo usará PayPal, y hay un complemento de PayPal que me gustaría usar. No lo he probado, pero parece bastante sencillo: pasa los detalles de la compra (precio, moneda, descripción ...) y luego procesa la interfaz de usuario de PayPal.
Puedo proporcionar toda esa información a la interfaz de usuario de PayPal, pero tiene la pregunta obvia: ¿cómo la integro con la orden de Woocommerce asociada? ¿Cómo hago para que si el pago es exitoso, Woocommerce lo registre como tal?
La instalación de Woocommerce ya habilita PayPal. Puede usar PayPal en el sitio web muy bien.
Ahora, estoy bastante seguro de que tiene algo que ver con el IPN de PayPal. Supongo que, de alguna manera, debería pasar la ID de la orden al plugin de PayPal, ¿entonces la IPN pasará esta misma ID de pedido a WooCommerce? Probablemente algo así, pero no puedo encontrar la documentación adecuada sobre esto.
Si busca "ionic 2 woocommerce paypal", verá a mucha gente vendiendo el código fuente por más o menos lo mismo. Podría comprar uno y estudiarlo, pero prefiero encontrar documentación sobre esta acción en particular.
Después de buscar en el código fuente de woo commerce, parece que agrega su propia ID de pedido a la sección de invoiceNumber de PayPal.
Por lo tanto, si tiene un plugin de PayPal de comercio en su sitio (debería IPN habilitado), puede usar el complemento de PayPal Cordova en ionic 2 pasando la identificación de la orden de comercio de woo a invoiceNumber. Como el siguiente ejemplo:
EDIT: aunque el woo commerce sí agrega el número de factura, ahora creo que los params más importantes que se pasan son el parámetro 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
});
}
Una posible solución sería agregar la información de la orden a la sesión de los usuarios antes de enviar al usuario a Paypal.
Después de que el usuario paga a través de Paypal, redirigirlos a una url de "éxito" (Especificado en la solicitud de PayPal). Cuando el usuario acceda a esta url de éxito, puede actualizar la orden en WooCommerce utilizando la información de la sesión.
Ya casi has llegado. Si no desea comprar el complemento, puede hacerlo manualmente. Por ejemplo, establezca el parámetro notify_url
en su sitio, es decir, pp_respond
(o lo que quiera).
En su functions.php
, ponga este código:
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);
}
luego haga una compra de prueba y, a lo largo del archivo functions.php
, habrá un nuevo archivo llamado my-notificationssss.txt
, y revise ese archivo, y descubra los parámetros que desea usar en el futuro.