您可以通过API取消PayPal自动付款吗? (通过托管按钮创建订阅)

时间:2010-09-28 03:59:32

标签: paypal paypal-subscriptions

您可以通过API取消PayPal自动付款吗?这是通过托管按钮创建的“订阅”。

我有“自动付款编号”和“交易ID”。

5 个答案:

答案 0 :(得分:26)

是的。

  

您可以暂停或取消个人资料   使用   的 ManageRecurringPaymentsProfileStatus   API 即可。您也可以重新激活a   暂停资料。如果最大   失败的付款数量已经存在   但是,你需要   增加失败次数   在重新启动之前付款   轮廓。

请查看this参考:

根据PAYPAL,您可以使用ManagerecurringPayments API执行三项操作中的任何一项。

  • 取消 - 仅限活动或中的个人资料 暂停状态可以取消。
  • 暂停 - 仅限活动中的个人资料 国家可以暂停.-
  • 重新启动 - 仅限a中的个人资料 暂停状态可以重新激活.--

答案 1 :(得分: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();
}

答案 2 :(得分:3)

“订阅是通过网站付款标准'订阅'按钮创建的。在2009之前,订阅配置文件ID以S-XXXXXXXX开头。您无法通过任何API调用管理这些订阅。2009年之后,订阅配置文件ID以I-XXXXXX开头。您可以通过ManageRecurringPaymentsProfileStatus API调用取消这些订阅。“

遇到同样的问题并且只是通过Robert阅读并且它有效,您可以使用API​​取消标准网站订阅。

答案 3 :(得分:1)

答案 4 :(得分:0)

我认为您不能使用API​​取消Paypal标准付款活动专业版的付款,而只有快速结帐才能生效。我尝试并收到错误消息:“定期付款API不支持订阅配置文件。”。您可以找到更多here