API経由でPayPalの自動支払いをキャンセルできますか? これは、ホストされたボタンを介して作成された「サブスクリプション」です。
「自動支払番号」と「取引ID」を持っています。
API経由でPayPalの自動支払いをキャンセルできますか? これは、ホストされたボタンを介して作成された「サブスクリプション」です。
「自動支払番号」と「取引ID」を持っています。
はい。
ManageRecurringPaymentsProfileStatus APIを使用して、プロファイルを一時停止またはキャンセルでき ます。中断されたプロファイルを再開することもできます。ただし、失敗した支払いの最大数にすでに達している場合は、プロファイルを再度有効にする前に、失敗した支払いの数を増やす必要があります。
このリファレンスを見つけてください:
PAYPAL によると、ManagerecurringPayments API を利用して 3 つのアクションのいずれかを実行できます。
解決策を見つける前にこのスレッドを見つけたので、答えを出すために戻ってくると思いました。(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();
}
「サブスクリプションは、ウェブ ペイメント スタンダードの [サブスクライブ] ボタンを介して作成されます。2009 年より前は、サブスクリプション プロファイル ID は S-XXXXXXXX で始まりました。これらのサブスクリプションを API 呼び出しで管理することはできません。2009 年以降、サブスクリプション プロファイル ID は で始まります。 I-XXXXXX. ManageRecurringPaymentsProfileStatus API 呼び出しを使用して、これらのサブスクリプションをキャンセルできます。"
同じ問題を抱えていて、Robertがそれを読んだだけで機能し、API を使用して標準の Web サイトのサブスクリプションをキャンセルできます。
API を使用して Paypal 標準支払いイベント プロの支払いをキャンセルすることはできないと思いますが、エクスプレス チェックアウトのみが機能します。試してみたところ、「サブスクリプション プロファイルは定期支払い API ではサポートされていません。」というエラー メッセージが表示されました。詳細については、こちらをご覧ください。