2010-05-17 21 views
33

He estado utilizando API de pago exprés para convertir cuentas de personas en mi sitio a cuentas premium después de pagar. El único problema es que no envía al usuario al sitio hasta que haga clic en el botón para regresar y actualiza su permiso cuando eso sucede. Alrededor del 40% de los usuarios no parecen hacer eso ... por lo que sus cuentas nunca se acreditan después del pago.¿Puedo enviar una variable a PayPal y hacer que me la vuelva a enviar cuando finalice el pago?

Aunque PayPal realiza un post-back instantáneo después del pago exitoso, nunca pude actualizar realmente la cuenta del usuario de inmediato, ya que no puedo enviar algún tipo de información que identifique al usuario que acaba de completar el pago. Solo podría hacer eso cuando te envíen de vuelta al sitio, que envía la identificación de la transacción, que registré con una devolución posterior. Lo busca y otorga permiso si se encontró en el DB.

¿Hay alguna forma de enviar algún tipo de variable a paypal, que luego me será enviada? Algo como & user_id = 123, lo que haría muy útil actualizar el permiso del usuario.

Respuesta

20

Sí, si envía item_number, el IPN notification lo incluirá cuando vuelva a enviar mensajes. Grabo una identificación única en la base de datos cuando el usuario comienza el proceso de pago, e incluyo eso al enviarlos a PayPal. Cuando entra el IPN, esa identificación única coincide con el registro en la base de datos, dándome toda la información que necesito.

Editar Re tu comentario:

espero que hay un ejemplo de código en algún lugar en el sitio vinculado anteriormente, pero, básicamente, en mi caso estoy usando un formulario que he puesto a https://www.paypal.com/cgi-bin/webscr. Dentro de ese formulario hay varios campos ocultos documentados en el material de IPN (cmd para qué comando ejecutar, business para especificar su ID de negocio, item_name para una buena descripción en la interfaz de usuario de PayPal, item_number para el número de artículo mencionado anteriormente, etc., etc. .). Cuando IPN puestos de nuevo a su dirección de IPN, que incluye varios campos (como payment_status   — tipo de cuenta!   & Mdash y la item_number se alimentaron en cuando envío mensajes a ellos).

+1

¿Hay un ejemplo de código de esto? ¿Cómo paso el artículo # a él? –

+0

@Yegor: actualizado con un poco más de información. No soy un experto en integración de PayPal por * cualquier * medio, pero espero que sea útil. –

+0

¿Dónde pondré esa variable? ¿Va en un campo oculto? Mis botones no tienen variables en ellos, todo está almacenado en paypal. Solo tengo un campo oculto hosted_button_id que le indica qué botón usar. –

29

Iten_number variable oculta no funcionan en mi aplicación. Pero encontré que custom campo oculto funciona bien. Simplemente agregue este campo al formulario, generado por paypal: <input type="hidden" name="custom" value="YOUR VALUE FROM DB"/>. Después, puede leer este valor para identificar, por ejemplo, qué producto se ha comprado. (Código Java): String custom = request.getParameter("custom");

+1

¡La mejor respuesta! En PHP, puede leer este campo fácilmente con '$ _POST ['custom']' de su secuencia de comandos ipn. –

+0

@dsplatonov ¿Podemos leerlo en qué página?Me refiero a la URL de retorno o al notify_url – Nehal

+0

hola, ¿sabes cómo puedo establecer el valor '' personalizado '' en java SDK cuando ejecuto greement? – wawa

15

sólo para añadir a esta vieja pregunta ...

Hay parámetros opcionales que se utilizan comúnmente para el envío de datos a través de paypal personalizados.

Estas etiquetas de opción son on0, On 1 o on2 de los nombres de los campos personalizados y os0, OS1, y OS2 de los valores de campo personalizado.

enviaría on0 con un valor de "ID de usuario" y os0 el ID real.

Estos valores serán representados en el IPN como sigue:

os0 se representa como option_selection1

OS1 se representa como option_selection2

os2 está representado como option_selection3

on0 se representa como option_name1

on1 se representa como option_name2

on2 se representa como option_name3

Here's the info on PayPal's HTML parameters

6

Según HTML Variables for PayPal Payments Standard puede enviar todas las variables de la "transferencia":

item_number de paso a través de la variable para hacer un seguimiento del producto o servicio adquirido o la contribución. El valor que especifique se transfiere al cuando se completa el pago. Esta variable es necesaria si desea que PayPal rastree el inventario o realice un seguimiento de las ganancias y pérdidas para el artículo que vende el botón.

personalizado Variable de paso para sus propios fines de seguimiento, que los compradores no ven. Predeterminado: no se le devuelve ninguna variable.

y

factura de paso a través de la variable se puede utilizar para identificar su número de factura para esta compra. Valor predeterminado: ninguna variable se devuelve a usted.

Todas estas variables de paso son enviadas por el IPN en la información de respuesta de pago.

Sólo tiene que hacer que su lado del servidor plantilla HTML y escribir los campos de vuelta en el código HTML como

<input type="hidden" name="item_number" value="{{ productID }}"> 
<input type="hidden" name="invoice_id" value="{{ invoiceID }}"> 
<input type="hidden" name="custom" value="{{ jsonInfo }}"> 

Técnicamente el campo "a medida" puede ser una cadena JSON codificado si desea manejar más datos como

myItemObject = { 
    "customerEmail" : "[email protected] 
    "customerID: "AAFF324" 
} 
jsonInfo = json.dumps(myItemObject) 
return render_template(tmpl_name, jsonInfo=jsonInfo, productID=productID, invoiceID=invoiceID) 
1

espero this URL resuelve su problema. Como resolvió el mío también. Agregue una variable personalizada a su formulario y luego recupérela en su página de pago exitoso. Ejemplo: <input type='hidden' name='custom' value='<?php echo $email; ?>'/>

y luego recuperarlo como:

$_POST['custom'] 
3

finalmente consigo esta respuesta, quiero compartir con todos ustedes mirar:

en su formulario HTML poner este código (esto es PayPal caja de arena):

form action="https://www.sandbox.paypal.com/cgi-bin/webscr?custom=YOUR_VAR" method="post" 

en su PHP después de la redirección de Paypal para el éxito de la página: utilizar el cm variable GET:

$example = $_GET["cm"]; 
Cuestiones relacionadas