2010-12-03 3 views
12

Auf dieser Seite: https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_ECRecurringPaymentsWie stornieren Sie ein PayPal-Abonnement über ihre API?

es sagt, dass es möglich ist, ein PayPal-Abonnement mit ihrem API abzubrechen. Kenne ich die SubscriptionId kann mir jemand ein Code-Beispiel geben, wie man das macht?

Vielen Dank.

+0

Haben Sie schon einmal eine andere Antwort erhalten als "* Fehler *"/"* Profil ID ist ungültig *"? Soweit ich festgestellt habe, können Sie auf diese Weise ein "normal" erstelltes Abonnement (ohne * CreateRecurringPaymentsProfile *) nicht abbrechen. Die Subskriptions-ID dort zu platzieren, ist nicht der Trick (wie für mich). – nssmart

+2

"Eine Subskription wird über einen Abonnement-Button für Website-Zahlungsstandards erstellt. Vor 2009 begann die Subskriptionsprofil-ID mit S-XXXXXXXX. Sie können diese Subskriptionen nicht über API-Aufrufe verwalten. Nach 2009 wird die Subskriptionsprofil-ID gestartet mit I-XXXXXX. Sie können diese Abonnements über den API-Aufruf "ManageRecurringPaymentsProfileStatus" abbrechen. " War das gleiche Problem und lesen Sie es einfach durch Robert und es funktioniert, können Sie Standard-Website-Abonnement mit API abbrechen. –

+0

Jetzt ist 2012 und meine alle Abonnements bis heute beginnen mit S- und ich kann keine Stornierungsmethode verwenden. Vielleicht hat jemand eine Lösung gefunden? – Tomas

Antwort

15

Haben Sie es geschafft, eine einfache Lösung zu finden? Ich suche das auch. Vielen Dank!

Update: Nach der Suche ist der "ManageRecurringPaymentsProfileStatus" sehr einfach durch eine einfache POST-Anfrage zu verwenden.

Stellen Sie sicher, dass Ihr Benutzer, Passwort oder Unterschrift nicht sichtbar sind (mit anderen Worten, tun Sie dies auf Ihrem Server und nicht auf Ihrem Client über Javascript oder HTML-Posts).

Unten ein einfaches Arbeitsbeispiel in Python. Es funktioniert und ich benutze es jetzt täglich.

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'}) 

Die Antwort ist eine Zeichenfolge, die wie folgt aussieht:

timestamp = 2011% 2d01% 2d28T14% 3a47% 3a45Z & CorrelationId = 148ebe1d25566 & ACK = Failure & VERSION = 54% 2E0 & BUILD = 1704252 & L_ERRORCODE0 = 11552 & L_SHORTMESSAGE0 = Ungültige% 20profile% 20ID & L_LONGMESSAGE0 = Die% 20profile% 20ID% 20 wird% 20invalid & L_SEVERITYCODE0 = Fehler

Das Feld 'ACK' zeigt 'Fehler' oder 'Erfolg' an.

In Antwort auf Kommentare unten, beachten Sie, dass es mich nicht ermöglicht, die Abonnements zu kündigen, die durch einen dynamisch erstellten Link wie geschaffen:

<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>

Bitte beachte, dass ich 'nicht die Flagge verwenden modifiziere 'überhaupt.

+0

habe ich nicht. Ich mache es immer noch manuell. Es passiert nicht oft. – Anthony

+0

Hallo Anthony. Fanden Sie die Lösung, sehen Sie meinen aktualisierten Beitrag oben. Ich hoffe, es wird dir nützlich sein. Prost. –

+1

Danke Louis. Ich werde das versuchen, aber können Sie bestätigen, dass es für das Abonnement funktioniert, das manuell erstellt wird? Siehe Vitalys Antwort unten. – Anthony

Verwandte Themen