web-dev-qa-db-ja.com

API経由でPaypalの自動支払いをキャンセルできますか? ([ホスト]ボタンを使用して作成されたサブスクリプション)

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

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

25
Zack Burt

はい

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

見つけてください this 参照:

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

  • キャンセル-キャンセルできるのは、アクティブ状態または一時停止状態のプロファイルのみです。
  • 一時停止-アクティブ状態のプロファイルのみを一時停止できます。-
  • 再アクティブ化-一時停止状態のプロファイルのみを再アクティブ化できます。-
26
Michael Eakins

私は解決策を見つける前にこのスレッドを見つけ、答えを出すために戻ってくると思いました。 (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();
}
5
gunwin

「サブスクリプションは、Webサイト支払い標準の[購読]ボタンを介して作成されます。2009年以前は、サブスクリプションプロファイルIDはS-XXXXXXXXで始まりました。API呼び出しを介してこれらのサブスクリプションを管理することはできません。2009年以降、サブスクリプションプロファイルIDはで始まります。 I-XXXXXX。これらのサブスクリプションは、ManageRecurringPaymentsProfileStatusAPI呼び出しを介してキャンセルできます。」

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

3
Usman Zaheer

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

0
Sareuon