Ответ 1
Вам удалось найти легкое решение? Я тоже ищу это. Спасибо!
Обновить: после поиска, "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 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 & АСК = Неудача & версия = 54% 2e0 & BUILD = 1704252 & L_ERRORCODE0 = 11552 & L_SHORTMESSAGE0 = Недопустимый %20profile %20ID & L_LONGMESSAGE0 = Значение %20profile %20ID %20is %20invalid & L_SEVERITYCODE0 = Ошибка
Поле "ACK" указывает "Сбой" или "Успех".
В ответ на комментарии ниже обратите внимание, что это разрешает мне отменять подписки, созданные с помощью динамически созданной ссылки, например:
<a href="#" onclick="location.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¤cy_code=EUR&no_note=1&no_shipping=1&lc=FR&custom=xxxxx¬ify_url=https%3A%2F%2Fyournotifyurl.com%2Fipn&charset=utf-8&country=FR&a1=0&t1=D&p1=31'; return false;" target="_blank">Subscribe</a>
Обратите внимание, что я вообще не использую флаг "modify".