25

API経由でPayPalの自動支払いをキャンセルできますか? これは、ホストされたボタンを介して作成された「サブスクリプション」です。

「自動支払番号」と「取引ID」を持っています。

4

5 に答える 5

26

はい。

ManageRecurringPaymentsProfileStatus APIを使用して、プロファイルを一時停止またはキャンセルでき ます。中断されたプロファイルを再開することもできます。ただし、失敗した支払いの最大数にすでに達している場合は、プロファイルを再度有効にする前に、失敗した支払いの数を増やす必要があります。

このリファレンスを見つけてください:

PAYPAL によると、ManagerecurringPayments API を利用して 3 つのアクションのいずれかを実行できます。

  • キャンセル - アクティブまたは一時停止状態のプロファイルのみをキャンセルできます。
  • サスペンド - アクティブ状態のプロファイルのみをサスペンドできます。
  • 再アクティブ化 - 一時停止状態のプロファイルのみを再アクティブ化できます.--
于 2010-09-28T11:10:20.817 に答える
5

解決策を見つける前にこのスレッドを見つけたので、答えを出すために戻ってくると思いました。(C#.Net ソリューション)

次の nuget パッケージが必要になります。

Install-Package RestApiSDK
Install-Package PayPalCoreSDK
Install-Package PayPalMerchantSDK

そして以下の参考文献:

using PayPal.Api;
using PayPal.PayPalAPIInterfaceService;
using PayPal.PayPalAPIInterfaceService.Model;

コードは次のとおりです。

public static void CancelRecurringPayment(string ProfileID)
{
    ManageRecurringPaymentsProfileStatusRequestType request =
        new ManageRecurringPaymentsProfileStatusRequestType();
    ManageRecurringPaymentsProfileStatusRequestDetailsType details =
        new ManageRecurringPaymentsProfileStatusRequestDetailsType();
    request.ManageRecurringPaymentsProfileStatusRequestDetails = details;

    details.ProfileID = ProfileID;

    details.Action = StatusChangeActionType.CANCEL;

    // Invoke the API
    ManageRecurringPaymentsProfileStatusReq wrapper = new ManageRecurringPaymentsProfileStatusReq();
    wrapper.ManageRecurringPaymentsProfileStatusRequest = request;

    Dictionary<string, string> configurationMap = new Dictionary<string, string>();

    configurationMap.Add("mode", "live");
    // Signature Credential
    configurationMap.Add("account1.apiUsername", "APIUSERNAME");
    configurationMap.Add("account1.apiPassword", "APIPASSWORD");
    configurationMap.Add("account1.apiSignature", "APISIGNATURE");

    // Create the PayPalAPIInterfaceServiceService service object to make the API call
    PayPalAPIInterfaceServiceService service = new PayPalAPIInterfaceServiceService(configurationMap);

    ManageRecurringPaymentsProfileStatusResponseType manageProfileStatusResponse =
                service.ManageRecurringPaymentsProfileStatus(wrapper);

    // Check for API return status

    Dictionary<string, string> responseParams = new Dictionary<string, string>();
    responseParams.Add("API Status", manageProfileStatusResponse.Ack.ToString());

    if (manageProfileStatusResponse.Ack.Equals(AckCodeType.FAILURE) || (manageProfileStatusResponse.Errors != null && manageProfileStatusResponse.Errors.Count > 0))
    { 
        //FAILURE
        Console.WriteLine(manageProfileStatusResponse.Errors.ToString());
    }
    else
    {
        //SUCCESS
        Console.Write("Success!");
    }
    Console.WriteLine();
}
于 2014-04-08T23:35:13.910 に答える
3

「サブスクリプションは、ウェブ ペイメント スタンダードの [サブスクライブ] ボタンを介して作成されます。2009 年より前は、サブスクリプション プロファイル ID は S-XXXXXXXX で始まりました。これらのサブスクリプションを API 呼び出しで管理することはできません。2009 年以降、サブスクリプション プロファイル ID は で始まります。 I-XXXXXX. ManageRecurringPaymentsProfileStatus API 呼び出しを使用して、これらのサブスクリプションをキャンセルできます。"

同じ問題を抱えていて、Robertがそれを読んだだけで機能し、API を使用して標準の Web サイトのサブスクリプションをキャンセルできます。

于 2012-05-04T11:59:04.083 に答える
1
于 2015-10-26T13:26:08.237 に答える
0

API を使用して Paypal 標準支払いイベント プロの支払いをキャンセルすることはできないと思いますが、エクスプレス チェックアウトのみが機能します。試してみたところ、「サブスクリプション プロファイルは定期支払い API ではサポートされていません。」というエラー メッセージが表示されました。詳細については、こちらをご覧ください

于 2013-01-29T07:32:55.623 に答える