Можете ли вы отменить автоматический платеж PayPal через API? (Подписка создается с помощью кнопки Hosted)
Можно ли отменить автоматический платеж PayPal через API? Это "Подписка", созданная с помощью кнопки Hosted.
У меня есть "Автоматический номер платежа" и "Идентификатор транзакции".
Ответы
Ответ 1
Да.
Вы можете приостановить или отменить профиль используя ManageRecurringPaymentsProfileStatus API. Вы также можете активировать подвесной профиль. Если максимум количество неудачных платежей уже было достигнуто, однако, вам понадобятся увеличить количество неудачных платежей перед реактивацией профиль.
Найдите this Справка:
При подключении к PAYPAL вы можете выполнить любое из трех действий, используя API ManagerecurringPayments.
- Отмена - только профили в Active или
Приостановленное состояние может быть отменено.
- Приостановка - только профили в Active
состояние может быть приостановлено.
- Reactivate - только профили в
приостановленное состояние может быть активировано.--
Ответ 2
Я нашел эту ветку, прежде чем найти решение, и подумал, что вернусь, чтобы дать ответ. (С#.Net Solution)
Вам потребуются следующие пакеты 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();
}
Ответ 3
"Подписка создается с помощью кнопки" Подписаться на подписку "на странице" Подписаться ". До 2009 года идентификатор профиля подписки начинался с S-XXXXXXXX. Вы не можете управлять этими подписками через любые вызовы API. После 2009 года профиль подписки Идентификатор начинается с I-XXXXXX. Вы можете отменить эти подписки с помощью вызова API ManageRecurringPaymentsProfileStatus.
Имел ту же проблему и просто прочитал ее Robert, и она работает, вы можете отменить стандартную подписку на сайт с помощью API.
Ответ 4
Ответ 5
Я не думаю, что вы можете использовать API для отмены платежа с помощью стандартного платежа Paypal pro pro, в то время как только экспресс-проверка будет работать. Я попробовал и получил сообщение об ошибке: "Профили подписки не поддерживаются API повторяющихся платежей". Вы можете узнать больше здесь.