2010-12-03 15 views
12

En esta página: https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_ECRecurringPayments¿Cómo cancelas una suscripción de PayPal a través de su API?

se dice que es posible cancelar una suscripción de PayPal usando su API. Conocer la suscripción ¿Alguien puede darme algún ejemplo de código sobre cómo hacer esto?

Muchas gracias.

+0

¿Alguna vez recibió una respuesta que no sea "* Failure *"/"* Profile ID is invalid *"? Por lo que descubrí, no puede cancelar una suscripción creada "normalmente" (sin * CreateRecurringPaymentsProfile *) de esta manera. Poner la identificación de la suscripción allí no funciona (en mi caso). – nssmart

+2

"Se crea una suscripción a través del botón Suscribir de un sitio web estándar. Antes de 2009, el ID del perfil de suscripción comenzaba con S-XXXXXXXX. No puede administrar estas suscripciones a través de llamadas API. Después de 2009, comienza la identificación del perfil de suscripción. con I-XXXXXX. Puede cancelar estas suscripciones a través de la llamada a la API ManageRecurringPaymentsProfileStatus ". Estaba teniendo el mismo problema y simplemente lo leyó por Robert y funciona, puede cancelar la suscripción al sitio web estándar mediante API. –

+0

Ahora es 2012 y todas mis suscripciones hasta hoy comienzan con S- y no puedo usar el método de cancelación. Tal vez alguien encontró una solución? – Tomas

Respuesta

15

¿Se las arregló para encontrar una solución fácil? Estoy buscando esto también. ¡Gracias!

Actualización: Después de la búsqueda, el "ManageRecurringPaymentsProfileStatus" es muy fácil de usar a través de una simple solicitud POST.

Asegúrese de que su usuario, contraseña o firma no estén visibles (en otras palabras, hágalo en su servidor y NO en su cliente a través de javascript o mensajes html).

Debajo de un simple ejemplo de trabajo en Python. Funciona y ahora lo estoy usando a diario.

import urllib 
from google.appengine.api import urlfetch 

form_fields = { 
     "METHOD": "ManageRecurringPaymentsProfileStatus", 
     "PROFILEID": "xxx", # put your subscription ID here 
     "ACTION": "cancel", 
     "USER": "xxx", # Get USER, PWD, and SIGNATURE from your Paypal's account preferences 
     "PWD": "xxx", 
     "SIGNATURE": "xxx", 
     "VERSION": "54.0" 
} 

api_url = 'https://api-3t.sandbox.paypal.com/nvp' # remove the sandbox part for production 

form_data = urllib.urlencode(form_fields) 

result = urlfetch.fetch(url=api_url, 
        payload=form_data, 
        method=urlfetch.POST, 
        headers={'Content-Type': 'application/x-www-form-urlencoded'}) 

La respuesta es una cadena que tiene este aspecto:

TIMESTAMP = 2,011% 2d01% 2d28T14% 3a47% 3a45Z & CorrelationId = 148ebe1d25566 & ACK = Fracaso & VERSION = 54% 2E0 & BUILD = 1704252 & L_ERRORCODE0 = 11552 & L_SHORTMESSAGE0 = no válido% 20profile% 20ID & L_LONGMESSAGE0 = El% 20profile% 20ID% 20 es% 20invalid & L_SEVERITYCODE0 = Error

El campo 'ACK' indica 'Failure' o 'Success'.

En respuesta a los comentarios a continuación, tenga en cuenta que me capacita para cancelar las suscripciones que se han creado a través de un enlace creado de forma dinámica, tales como:

<a href="https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_xclick-subscriptions&business=llcpro_1295263400_biz%40jeregle.com&item_name=Abonnement%20mensuel&a3=41.86&t3=M&p3=1&src=1&sra=1&currency_code=EUR&no_note=1&no_shipping=1&lc=FR&custom=xxxxx&notify_url=https%3A%2F%2Fyournotifyurl.com%2Fipn&charset=utf-8&country=FR&a1=0&t1=D&p1=31" target="_blank">Subscribe</a>

Tenga en cuenta que yo no uso la bandera ' modificar 'en absoluto.

+0

No lo hice. Todavía lo estoy haciendo a mano. Gracias, no sucede muy a menudo. – Anthony

+0

Hola Anthony. Encontré la solución, mira mi publicación actualizada más arriba. Espero que te sea útil. Aclamaciones. –

+1

Gracias Louis. Lo intentaré, pero ¿puedes confirmar que funciona para la suscripción creada manualmente? Vea la respuesta de Vitaly a continuación. – Anthony

Cuestiones relacionadas