with usa refund pay home paypal return

usa - ¿Configurando PayPal return URL y haciendo que vuelva automáticamente?



paypal refund (6)

¡Creo que la idea de establecer los valores de Retorno automático como la descrita anteriormente por Kevin es un poco extraña!

Digamos, por ejemplo, que tiene varios sitios web que usan la misma cuenta de PayPal para manejar sus pagos, o que tiene varias secciones en un sitio web que realizan diferentes tareas de compra y que requieren diferentes direcciones de devolución cuando el pago esta completado. Si coloco un botón en mi página como se describe arriba en la sección ''Ejemplo de formulario usando PHP para pagos directos'', puede ver que hay una línea allí:

input type="hidden" name="return" value="https://www.yoursite.com/checkout_complete.php"

donde establece el valor de retorno individual. ¿Por qué tiene que establecerse en general, también en la sección de perfil?!?!

Además, como solo puede establecer un valor en la sección de perfil, significa (AFAIK) que no puede usar el retorno automático en un sitio con múltiples acciones.

Comentarios por favor?

Esta es una pregunta de seguimiento a: PHP: ¿forma fácil de iniciar el pago de PayPal?

Entonces, mi problema es que estoy especificando la URL de retorno. Sin embargo, después de pagar con PayPal, termino en una pantalla que dice:

Usted acaba de completar su pago. XXXX, acabas de completar tu pago. Su ID de transacción para este pago es: XXXXXXXXXXXXX.

Le enviaremos un correo electrónico de confirmación a [email protected]. Esta transacción aparecerá en su extracto como PAYPAL.

Go to PayPal account overview

Necesito que no se muestre esta pantalla y vaya directamente a la URL de retorno. Yo tengo:

  • Establecer la variable "retorno"
  • Establezca la variable "rm" en: 2 (que de acuerdo con la guía = " el navegador del comprador se redirige a la URL de devolución utilizando el método POST, y se incluyen todas las variables de pago ")

De hecho, aquí está mi forma completa:

<form method="post" action="https://www.sandbox.paypal.com/cgi-bin/webscr"> <input type="hidden" value="_xclick" name="cmd"> <input type="hidden" value="[email protected]" name="business"> <!-- <input type="hidden" name="undefined_quantity" value="1" /> --> <input type="hidden" value="Order at The Greek Merchant:&lt;Br /&gt;Goldfish Flock BLG&lt;br /&gt;" name="item_name"> <input type="hidden" value="NA" name="item_number"> <input type="hidden" value="22.16" name="amount"> <input type="hidden" value="5.17" name="shipping"> <input type="hidden" value="0" name="discount_amount"> <input type="hidden" value="0" name="no_shipping"> <input type="hidden" value="No comments" name="cn"> <input type="hidden" value="USD" name="currency_code"> <input type="hidden" value="http://XXX/XXX/XXX/paypal/return" name="return"> <input type="hidden" value="2" name="rm"> <input type="hidden" value="11255XXX" name="invoice"> <input type="hidden" value="US" name="lc"> <input type="hidden" value="PP-BuyNowBF" name="bn"> <input type="submit" value="Place Order!" name="finalizeOrder" id="finalizeOrder" class="submitButton"> </form>

¿Alguna idea de cómo puedo hacer que vuelva automáticamente? Alternativamente, ¿cómo obtengo el resultado del pago en mi sitio web para poder actualizar la base de datos? ¿Qué es IPN?


Compartiendo esto ya que recientemente he encontrado problemas .com/questions/45671366/…

Durante mucho tiempo, mi script funcionó bien (formulario de pago básico) y devolvió las variables POST a mi página success.php y los datos IPN como variables POST también. Sin embargo, últimamente, noté que la página de retorno (success.php) ya no recibía ningún POST vars. ¡Probé en Sandbox y vivo y estoy bastante seguro de que PayPal ha cambiado algo!

El notify_url aún recibe los datos de IPN correctos, lo que me permite actualizar el DB, pero no he podido mostrar un mensaje de éxito en la página de mi URL de retorno (success.php).

A pesar de probar muchas combinaciones para activar y desactivar opciones en las preferencias de pago del sitio web de PayPal y la IPN, he tenido que hacer algunos cambios en mi script para asegurarme de que todavía puedo procesar un mensaje. Lo he logrado activando PDT y Auto Return, después de seguir esta excelente guía .

Ahora todo funciona bien, pero el único problema es que la URL de retorno contiene todas las variables PDT, lo que es feo.

También puede encontrar esto útil


Debe habilitar el retorno automático en su cuenta de PayPal; de lo contrario, ignorará el campo de return .

De la documentación (actualizada para reflejar el nuevo diseño):

El retorno automático está desactivado por defecto. Para activar el retorno automático:

  1. Inicie sesión en su cuenta de PayPal en https://www.paypal.com . Aparece la página Información general de mi cuenta.
  2. Haga clic en la pestaña secundaria Perfil. La página de Resumen de perfil aparece.
  3. Haga clic en el enlace Mis herramientas de venta en la columna de la izquierda.
  4. En la sección Venta en línea, haga clic en el enlace Actualizar en la fila de Preferencias del sitio web. Aparece la página Preferencias de pago del sitio web
  5. En Devolución automática de pagos en el sitio web, haga clic en el botón de opción Activar para habilitar el Retorno automático.
  6. En el campo URL de devolución, ingrese la URL a la que desea redirigir a sus contribuyentes después de que completen sus pagos. NOTA: PayPal verifica la URL de devolución que ingresa. Si la URL no está formateada correctamente o no se puede validar, PayPal no activará la devolución automática.
  7. Desplázate hasta la parte inferior de la página y haz clic en el botón Guardar.

IPN es para notificación de pago instantánea. Le proporcionará información más confiable / útil que la que obtendrá de la devolución automática.

La documentación para IPN está aquí: https://www.x.com/sites/default/files/ipnguide.pdf

Documentación en línea para IPN: https://developer.paypal.com/docs/classic/ipn/gs_IPN/

El procedimiento general es pasar un parámetro notify_url con la solicitud y configurar una página que maneje y valide las notificaciones de IPN, y PayPal enviará solicitudes a esa página para notificarle cuándo pagos / reembolsos / etc. atravesar. Esa página de controlador de IPN sería el lugar correcto para actualizar la base de datos y marcar los pedidos como pagos.


Formulario de muestra usando PHP para pagos directos.

<form action="https://www.paypal.com/cgi-bin/webscr" method="post"> <input type="hidden" name="cmd" value="_cart"> <input type="hidden" name="upload" value="1"> <input type="hidden" name="business" value="[email protected]"> <input type="hidden" name="item_name_'' . $x . ''" value="'' . $product_name . ''"> <input type="hidden" name="amount_'' . $x . ''" value="'' . $price . ''"> <input type="hidden" name="quantity_'' . $x . ''" value="'' . $each_item[''quantity''] . ''"> <input type="hidden" name="custom" value="'' . $product_id_array . ''"> <input type="hidden" name="notify_url" value="https://www.yoursite.com/my_ipn.php"> <input type="hidden" name="return" value="https://www.yoursite.com/checkout_complete.php"> <input type="hidden" name="rm" value="2"> <input type="hidden" name="cbt" value="Return to The Store"> <input type="hidden" name="cancel_return" value="https://www.yoursite.com/paypal_cancel.php"> <input type="hidden" name="lc" value="US"> <input type="hidden" name="currency_code" value="USD"> <input type="image" src="http://www.paypal.com/en_US/i/btn/x-click-but01.gif" name="submit" alt="Make payments with PayPal - its fast, free and secure!"> </form>

recorra amablemente los campos notify_url, return, cancel_return

código de muestra para manejar ipn (my_ipn.php) que es solicitado por paypal después de que se haya realizado el pago.

Para obtener más información sobre cómo crear una IPN, consulte this enlace.

<?php // Check to see there are posted variables coming into the script if ($_SERVER[''REQUEST_METHOD''] != "POST") die("No Post Variables"); // Initialize the $req variable and add CMD key value pair $req = ''cmd=_notify-validate''; // Read the post from PayPal foreach ($_POST as $key => $value) { $value = urlencode(stripslashes($value)); $req .= "&$key=$value"; } // Now Post all of that back to PayPal''s server using curl, and validate everything with PayPal // We will use CURL instead of PHP for this for a more universally operable script (fsockopen has issues on some environments) //$url = "https://www.sandbox.paypal.com/cgi-bin/webscr"; $url = "https://www.paypal.com/cgi-bin/webscr"; $curl_result = $curl_err = ''''; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $req); curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/x-www-form-urlencoded", "Content-Length: " . strlen($req))); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_VERBOSE, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_TIMEOUT, 30); $curl_result = @curl_exec($ch); $curl_err = curl_error($ch); curl_close($ch); $req = str_replace("&", "/n", $req); // Make it a nice list in case we want to email it to ourselves for reporting // Check that the result verifies if (strpos($curl_result, "VERIFIED") !== false) { $req .= "/n/nPaypal Verified OK"; } else { $req .= "/n/nData NOT verified from Paypal!"; mail("[email protected]", "IPN interaction not verified", "$req", "From: [email protected]"); exit(); } /* CHECK THESE 4 THINGS BEFORE PROCESSING THE TRANSACTION, HANDLE THEM AS YOU WISH 1. Make sure that business email returned is your business email 2. Make sure that the transaction�s payment status is �completed� 3. Make sure there are no duplicate txn_id 4. Make sure the payment amount matches what you charge for items. (Defeat Price-Jacking) */ // Check Number 1 ------------------------------------------------------------------------------------------------------------ $receiver_email = $_POST[''receiver_email'']; if ($receiver_email != "[email protected]") { //handle the wrong business url exit(); // exit script } // Check number 2 ------------------------------------------------------------------------------------------------------------ if ($_POST[''payment_status''] != "Completed") { // Handle how you think you should if a payment is not complete yet, a few scenarios can cause a transaction to be incomplete } // Check number 3 ------------------------------------------------------------------------------------------------------------ $this_txn = $_POST[''txn_id'']; //check for duplicate txn_ids in the database // Check number 4 ------------------------------------------------------------------------------------------------------------ $product_id_string = $_POST[''custom'']; $product_id_string = rtrim($product_id_string, ","); // remove last comma // Explode the string, make it an array, then query all the prices out, add them up, and make sure they match the payment_gross amount // END ALL SECURITY CHECKS NOW IN THE DATABASE IT GOES ------------------------------------ //////////////////////////////////////////////////// // Homework - Examples of assigning local variables from the POST variables $txn_id = $_POST[''txn_id'']; $payer_email = $_POST[''payer_email'']; $custom = $_POST[''custom'']; // Place the transaction into the database // Mail yourself the details mail("[email protected]", "NORMAL IPN RESULT YAY MONEY!", $req, "From: [email protected]"); ?>

La imagen a continuación lo ayudará a comprender el proceso de PayPal.

Para una lectura adicional, consulte los siguientes enlaces;

Espero que esto te ayude..:)


en la página de pago, busque el elemento de formulario oculto ''cancel_return'':

Establezca el valor del elemento de formulario cancel_return en la URL a la que desea regresar:


una forma que he encontrado:

intente insertar este campo en su código de formulario generado:

<input type=''hidden'' name=''rm'' value=''2''>

rm significa método de retorno ;

2 significa (publicar)

Luego de que el usuario compra y vuelve a la URL de tu sitio, esa URL también obtiene los parámetros POST

ps si usa php, intente insertar var_dump($_POST); en su url de retorno (script), luego haga una compra de prueba y cuando regrese a su sitio verá las variables que tiene en su url.