2011-12-21 11 views
10

He revisado los (no tan útiles) documentos de PayPal y no encuentro una respuesta fácil a este problema. Cuando el usuario regresa de PayPal, la URL no contiene una cadena de consulta y, por lo tanto, no recibo el valor 'tx' (ni ningún otro valor).PayPal PDT no devuelve un valor tx en la cadena de consulta

Este es un ejemplo de lo que estoy enviando a PayPal:

<form accept-charset="utf-8" action="https://www.sandbox.paypal.com/au/cgi-bin/webscr" id="paypal-form" method="post"> 
    <input type="hidden" name="business" value="[email protected]"> 
    <input type="hidden" name="cancel_return" value="http://localhost/checkout"> 
    <input type="hidden" name="cmd" value="_xclick"> 
    <input type="hidden" name="charset" value="utf-8"> 
    <input type="hidden" name="currency_code" value="AUD"> 
    <input type="hidden" name="custom" value="155"> 
    <input type="hidden" name="lc" value="AU"> 
    <input type="hidden" name="notify_url" value="http://localhost/paypal-ipn"> 
    <input type="hidden" name="return" value="http://localhost/checkout">   
    <input type="hidden" name="item_name" value="ABC Company - Order #155"> 
    <input type="hidden" name="item_number" value="155"> 
    <input type="hidden" name="amount" value="8.95"> 
    <input type="hidden" name="discount_amount" value="0.00"> 
    <input type="hidden" name="shipping" value="25.00"> 
    <input type="image" src="https://www.paypal.com/en_AU/i/btn/btn_buynowCC_LG.gif" name="submit" alt="Buy Now"> 
</form> 

Gracias de antemano!

Respuesta

15

usted debe comprobar la configuración en https://www.sandbox.paypal.com/us/cgi-bin/webscr?cmd=_profile-website-payments y asegúrese

  1. retorno automático está en ON
  2. Ha especificado una URL Volver
  3. de transferencia de datos de pago se establece en EN

Hay un además de algo mucho menos obvio que tuve que aprender a través de la experimentación: su formulario no debe contener un valor de "retorno"; de lo contrario, anulará la URL de retorno en su configuración y evitará que el Retorno automático funcione y terminará sin el necesario tx parámetro. Este es un desarrollo relativamente reciente (¿error?) En Paypal, porque solía funcionar.

+1

Tengo esto trabajando en el sitio en vivo, pero el sitio sandbox (dev) no está funcionando. El maldito área de la zona de pruebas no siempre funciona como se espera o como el área en vivo funciona: @. –

+0

@Daniel - Aunque ciertamente estoy de acuerdo en que el sitio de sandbox parece estar SIEMPRE en mal estado, tener un valor de "devolución" definitivamente funciona y aún está contenido en la documentación de PP actualizada a fines de noviembre de 2011. – JM4

2

Tengo el mismo problema con la zona de pruebas durante la prueba. Para arreglarlo, tuve que verificar las cuentas de prueba en el entorno de sandbox. Para verificarlos, use el servicio de correo electrónico de prueba incorporado. Después de verificar, Paypal Sandbox comenzó a enviar el parámetro TX.

+0

Eso es molesto y no tiene sentido por qué ellos harían eso. –

1

He estado luchando con esto por un tiempo, y otra cosa que aparentemente no ocasiona la devolución del valor tx es si tiene una versión de prueba gratuita.

Por lo tanto, si el costo de su servicio es gratuito durante los primeros 20 días, a partir de entonces no obtendrá un valor tx para el primer pago gratuito. Si carga un centavo (o lo que sea su moneda relevante) durante el período inicial "gratuito", obtendrá un valor tx devuelto.

+0

No se realizan transacciones para pagos gratuitos, el valor tx se refiere a una transacción comercial que se realiza. $ 0 normalmente se pasa con éxito sin realizar ninguna transacción. –

4

De hecho, registramos un ticket con los Servicios Técnicos Comerciales de PayPal para llegar al fondo de esto. Descubrimos que con el tiempo, algunas cuentas mercantiles de PayPal parecerían olvidar su configuración de AutoReturn/PDT.

Aunque se podía acceder a las Preferencias del sitio web y AutoReturn y PDT, ambas estaban habilitadas; la cuenta se comportaría como si no estuvieran habilitados.

Siga este procedimiento para restablecer los ajustes ....

  • Haga clic en Perfil.
  • Haga clic en "Mis ventas" Preferencias>
  • Haga clic en "Preferencias del sitio web"

(*) Enlace directo a esta sección, en caso de que no se encontró ->https://www.paypal.com/cgi-bin/customerprofileweb?cmd=_profile-website-payments

  • Deshabilite la devolución automática y la transferencia de datos de pago.
  • Guarde los cambios.
  • Acceda de nuevo a las Preferencias del sitio web.
  • Habilite el retorno automático y la transferencia de datos de pago nuevamente.
  • Guarde los cambios.
1

Algunas otras razones por las que no podría obtener un parámetro tx:

  • para PDT funcione, se deben confirmar la dirección de correo electrónico utilizada como el valor de la empresa en el código del botón. Si no se confirma esta dirección de correo electrónico, PDT no funcionará. Si su dirección de correo electrónico no está confirmada, no verá la cadena de consulta PDT adjunta a su URL de retorno.

  • Cuando habilita PDT, la URL que está utilizando como URL de devolución automática predeterminada debe ser un nombre de host o dirección IP válido o el usuario no volverá automáticamente a esa URL. Asegúrese de utilizar una URL válida como la URL a la que desea que vuelva el usuario o no verá el resultado deseado.

Desde: https://ppmts.custhelp.com/app/answers/detail/a_id/469

1

he encontrado un método, que trabajó para mí - intenta insertar este campo en el código del formulario generado:

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

rm significa retorno método;

significa post con las variables

que después el usuario compra y vuelve a tu sitio, entonces esa url obtiene los parámetros POST, así

P. S. 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.

0

Tuve un problema similar: cuando trabajaba en un servidor local, solía obtener en lugar de la variable 'tx', obtuve una variable 'auth'. Después de jugar con esto por un tiempo, descubrí que (por algún motivo cableado) si cambio mi servidor virtual y el archivo de host, al dominio real, obtengo la variable 'tx', donde como en mi dominio de entorno local obtengo la variable 'auth'. Eso lo solucionó para mí. Espero que esto ayude a cualquiera.

Cuestiones relacionadas