Pouvez-vous annuler un paiement automatique PayPal via l'API? (Abonnement créé par le bouton hébergé)

StackOverflow https://stackoverflow.com/questions/3809587

  •  25-09-2019
  •  | 
  •  

Question

Pouvez-vous annuler un paiement automatique PayPal via l'API? Il est un "abonnement" créé via le bouton Hosted.

J'ai le "numéro de paiement automatique" et "Transaction ID".

Était-ce utile?

La solution

Oui.

  

Vous pouvez suspendre ou annuler un profil par   en utilisant le    ManageRecurringPaymentsProfileStatus   API . Vous pouvez également réactiver un   profil suspendu. Si le maximum   nombre de paiements a déjà échoué   été atteint, vous aurez besoin cependant   d'augmenter le nombre d'échec   paiements avant la réactivant   profil.

cette Référence :

Accodring à PAYPAL, vous pouvez prendre l'une des trois actions en utilisant l'API ManagerecurringPayments.

  • cancel - Seules les profils dans Active ou état suspendu peut être annulé.
  • Suspend - Seules les profils dans Active Etat peut être suspendu .-
  • Réactiver - Seuls les profils dans un état suspendu peut être réactivé .--

Autres conseils

J'ai trouvé ce fil avant de trouver une solution, et je pensais que je reviendrais pour donner la réponse. (C # .Net Solution)

Vous aurez besoin des packages NuGet suivants:

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

Et les références suivantes:

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

Voici le code:

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();
}

"Un abonnement est créé par un bouton standard Paiements sur site « Inscription ». Avant 2009, le profil d'abonnement ID a commencé avec S-XXXXXXXX. Vous n'êtes pas en mesure de gérer ces abonnements via des appels API. Après 2009, le profil d'abonnement ID commence par I-XXXXX. Vous êtes en mesure d'annuler ces abonnements via l'appel API ManageRecurringPaymentsProfileStatus. "

était d'avoir le même problème et juste le lire par Robert et il fonctionne, vous pouvez annuler site web standard abonnement en utilisant l'API.

Je ne pense pas que vous pouvez utiliser l'API pour annuler un paiement avec pro événement de paiement standard Paypal alors que seulement la caisse express fonctionnera. J'ai essayé et reçu le message d'erreur: « Profils de souscription non pris en charge par les API de paiement Récurrent. ». Vous pouvez en savoir plus .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top