Как вы отменяете подписку PayPal через их API? - PullRequest
12 голосов
/ 03 декабря 2010

На этой странице: https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_ECRecurringPayments

говорится, что можно отменить подписку PayPal, используя их API.Зная SubscriptionId, может кто-нибудь дать мне пример кода, как это сделать?

Большое спасибо.

1 Ответ

15 голосов
/ 25 января 2011

Вам удалось найти простое решение? Я тоже ищу это. Спасибо!

Обновление : После поиска «ManageRecurringPaymentsProfileStatus» очень просто использовать с помощью простого запроса POST.

Убедитесь, что ваш пользователь, пароль или подпись не видны (другими словами, делайте это на своем сервере, а НЕ на своем клиенте через сообщения javascript или html).

Ниже приведен простой рабочий пример на Python. Это работает, и я теперь использую это ежедневно.

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

Ответом является строка, которая выглядит следующим образом:

ТШЕЗТАМР = 2011% 2d01% 2d28T14% 3a47% 3a45Z & CorrelationId = 148ebe1d25566 & ACK = Неудача & VERSION = 54% 2e0 & BUILD = 1704252 & L_ERRORCODE0 = 11552 & L_SHORTMESSAGE0 = Недопустимый% 20profile% 20ID & L_LONGMESSAGE0 = Значение% 20profile% 20ID% 20is% 20invalid & L_SEVERITYCODE0 = Ошибка

Поле «ACK» указывает «Сбой» или «Успех».

В ответ на комментарии ниже, обратите внимание, что это позволяет мне отменить подписки, которые были созданы с помощью динамически создаваемой ссылки, такой как:

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

Обратите внимание, что я вообще не использую флаг "изменить".

...