12

このページ: https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_ECRecurringPayments

API を使用して PayPal サブスクリプションをキャンセルすることが可能であると書かれています。SubscriptionId を知っているので、これを行う方法のコード例を教えてもらえますか?

どうもありがとう。

4

1 に答える 1

16

簡単な解決策を見つけることができましたか? 私もこれを探しています。ありがとう!

更新: 検索後、「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'})

応答は、次のような文字列です。

Timestamp = 2011%2D01%2D28T14%3A47%3A45Z&CorrelationID = 148EBE1D25566&ACK = fails&version = 54%2e0&build = 1704252&l_errorcode0 = 11552&l_shortmessage0 = invalid%20profile20profile 20id&l_gidmessage0

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

「変更」フラグをまったく使用していないことに注意してください。

于 2011-01-25T11:24:40.120 に答える