PayPal Integration Partea 2 PayPal REST API

Ce veți crea

În acest tutorial vă voi arăta cum puteți efectua plăți utilizând PayPal REST API și C #. Toate bibliotecile pe care le au pentru diferite limbi, cum ar fi Ruby, Node.js, Python, PHP sunt foarte asemănătoare, astfel încât toate conceptele de aici se aplică tuturor bibliotecilor.

Setarea proiectului

Pentru a începe, am creat un proiect MVC în Visual Studio 2015: Fișier> Nou> Proiect, și selectați Aplicația ASP.NET.

Selectează ASP.NET 5 Application Web Șablon, care utilizează noul MVC 6. Este similar cu MVC 5 dacă sunteți familiarizat cu acesta.

După cum puteți vedea în fotografia de mai jos, am adăugat câteva fișiere și foldere la soluție. Principalele două lucruri de observat sunt:

  1. În Referințe Am eliminat targetul DNX Core 5.0, ceea ce ne-ar permite să executați acest proiect în Mac OS X sau Linux, dar biblioteca PayPal de care avem nevoie nu a fost încă actualizată. 
  2. Am adăugat dosarul "Servicii", unde voi încheia logica pentru apelurile PayPal, astfel încât să putem păstra controlorii frumosi și scurți.

Instalați PayPal SDK utilizând NuGet. Click dreapta pe numele soluției și selectați Gestionați pachetele NuGet, apoi căutați "PayPal" și instalați-l.

Creați o aplicație PayPal

Pentru a integra aplicația noastră cu PayPal, trebuie să navigați la PayPal Developers și apoi la REST API apps, Click pe Creați aplicația.

Dați aplicației dvs. un nume și alegeți un cont de dezvoltator de nisip asociat aplicației. În scopuri de testare, putem naviga apoi la http://sandbox.paypal.com și conectați-vă cu detaliile de conectare pentru nisip pentru a vedea contul PayPal de testare și tranzacțiile.

După ce faceți clic pe Creați aplicația, vedem ecranul de confirmare cu ID-ul clientului și jetoanele Secret.

Copiați jetoanele clientId și clientSecret la appsettings.json, după cum puteți vedea în imaginea de mai jos:

Testarea plăților

PayPal oferă un mediu Sandbox pentru testare. Puteți crea conturi de cumpărători și vânzări de testare de acolo. Când vă înscrieți, veți avea un cont de afaceri în cutia de nisip care este legat de contul dvs. de dezvoltator.

Pentru a crea un nou cont de testare, conectați-vă la site-ul Web pentru dezvoltatori, apoi faceți clic pe Tablou de bord și navigați la Sandbox> Conturi. Aici puteți vedea lista de conturi de testare dacă aveți:

Dacă nu ați creat încă conturile dvs. de testare, continuați și faceți clic pe Creează cont, în partea dreaptă sus, pentru a crea cel puțin un cont personal de testare și un cont de afaceri testat.

După crearea conturilor de testare, vă puteți conecta prin www.sandbox.paypal.com cu adresa de e-mail de testare și parola pe care le-ați atribuit fiecărui cont în formularul anterior. Acest lucru este cu adevărat util pentru a testa că atunci când achiziționați ceva cu "contul personal de testare", fondurile sunt transferate în contul dvs. de testare. Acum sunteți gata să începeți să vă integrați cu PayPal și să testați că fondurile se mută de la un cont la altul.

Plata unică PayPal

PayPal oferă diferite modalități de plată. Puteți utiliza plățile directe cu carduri de credit, ceea ce înseamnă că clienții dvs. nu primesc pagina de conectare sau rezumatul PayPal - totul se întâmplă pe site-ul dvs. Web. Trebuie să fiți compatibil cu PCI pentru aceasta și vă recomand să utilizați Stripe, deoarece aveți nevoie doar de SSL utilizând biblioteca JavaScript. Pe de altă parte, pentru a efectua plăți prin intermediul plăților PayPal, este nevoie de trei pași:

  1. Specificați informațiile de plată către creați o plată.
  2. Obțineți aprobarea plății, prin redirecționarea clientului către PayPal pentru a aproba tranzacția.
  3. Executați plata pentru a captura fondurile după ce PayPal vă redirecționează clientul înapoi pe site-ul dvs. Web.

În proiectul meu MVC, în Servicii , am creat clasa PayPalPaymentService unde am adăugat aceste metode:

public static Plata CreatePayment (string baseUrl, interogare string) // ### Api Context // Treceți într-un obiect 'APIContext' pentru a autentifica // apelul și pentru a trimite un ID unic de cerere // (care asigură ipempotency). SDK generează // un id de cerere dacă nu o promiteți în mod explicit. var apiContext = PayPalConfiguration.GetAPIContext (); // Plată () intent = intenție, // 'vânzare' sau 'autorizare' plătitor = plătitor nou () payment_method = "paypal", transactions = GetTransactionsList (), redirect_urls = GetReturnUrls , intenție); // Creați o plată utilizând un APIC valabil var createdPayment = payment.Create (apiContext); retur creatPayment;  listă statică privată GetTransactionsList () // O tranzacție definește contractul de plată, care este plata și cine îl îndeplinește. var transactionList = listă nouă(); // API pentru crearea plăților necesită o listă a tranzacției; // adăugați tranzacția creată într-o listă transactionList.Add (new Transaction () description = "Descrierea tranzacției", invoice_number = GetRandomInvoiceNumber (), amount = new Suma () currency = "USD", total = , // Total: trebuie să fie egală cu suma transportului, taxei și subtotalului. Detalii = Detalii noi () // Detalii: Să specificăm detaliile unei sume de plată. "75", item_list = noul ItemList () items = listă nouă() element nou () name = "Nume element", valută = "USD", preț = "15", cantitate = "5", sku = "sku"); retur tranzacțieList;  private static RedirectUrls GetReturnUrls (string baseUrl, interogare șir) var returnUrl = intent == "vânzare"? "/ Acasă / Plata succes": "/ Acasă / AutorizațiSucces"; // Redirect URLS // Aceste adrese URL vor determina modul în care utilizatorul este redirecționat din PayPal // odată ce au aprobat sau au anulat plata. returnează noi RedirectUrls () cancel_url = baseUrl + "/ Home / PaymentCancelled", return_url = baseUrl + returnUrl;  Static public Plată ExecutePayment (plată string-id, string payerId) // ### Api Context // Treceți într-un obiect 'APIContext' pentru a autentifica // apelul și pentru a trimite un ID unic de cerere // (care asigură idempotency). SDK generează // un id de cerere dacă nu o promiteți în mod explicit. var apiContext = PayPalConfiguration.GetAPIContext (); var paymentExecution = new PaymentExecution () payer_id = payerId; var payment = new Plată () id = paymentId; // Executați plata. var exectedPayment = plată.Execută (apiContext, paymentExecution); retur executatPayment; 

În acest apel sunt difuzați câțiva parametri:

  • Intent: Trei valori posibile: "vânzare" pentru plăți imediate, "autoriza" să autorizeze o plată pentru a captura mai târziu, sau "comanda" pentru a crea o comandă. Când veți obține autorizare pentru o plată pentru a captura mai târziu, aveți 3 zile garantate, deși puteți încerca să capturați plata până la 29 de zile mai târziu.
  • Plătitor: Sursa fondurilor pentru această plată, metoda de plată utilizată - plata PayPal prin Wallet, debitul Bank Direct sau cardul de credit direct. 
  • tranzacţii: Aceasta se utilizează pentru a specifica suma pentru plată și, opțional, specificați elementele pentru care se plătește. De asemenea, puteți specifica subtotal, transport și taxe, dacă este necesar.
  • Adrese redirecționare: Specificați adresa URL la care PayPal va redirecționa clienții dvs. după o tranzacție, astfel încât să vă puteți actualiza baza de date și să afișați un mesaj de confirmare.

Funcțiile anterioare pot fi utilizate de la controlerul dvs. astfel:

public IActionResult CreatePayment () var pay = PayPalPaymentService.CreatePayment (GetBaseUrl (), "vânzare"); retur Redirecționare (payment.GetApprovalUrl ());  public IActionResult PaymentCancelled () // TODO: Gestionați returnarea de plată anulată RedirectToAction ("Error");  public IActionResult PaymentSuccessful (șir de platăId, șir de șir, șir de plătitor PayerID) // Execute Payment var payment = PayPalPaymentService.ExecutePayment (paymentId, PayerID); retur View (); 

După cum puteți vedea, am creat trei acțiuni:

  • CreatePayment: Aceasta este acțiunea care declanșează plata. Face un apel către PayPal pentru a crea Plata, apoi redirecționează utilizatorul la PayPal pentru a aproba tranzacția.
  • Plata realizată cu succes: Aceasta este acțiunea în care PayPal redirecționează clientul înapoi după o plată reușită. În acest moment, putem executa plata pentru a obține fondurile transferate în contul nostru de comerciant.
  • PaymentCancelled: Această acțiune este în cazul în care utilizatorul este redirecționat din PayPal dacă utilizatorul anulează procesul de aprobare. În acest moment, probabil că veți dori să oferiți clientului posibilitatea de a încerca din nou sau de a lua legătura cu dvs..

Autorizați o plată pentru capturarea ulterioară

Acest scenariu este foarte similar cu cel precedent. Poate doriți să utilizați această metodă dacă încercați să faceți precomenzi pentru un produs care nu este încă disponibil. Pașii pentru a obține această plată sunt:

  1. Autorizați plata: Parametrul "intenție" pentru această solicitare ar trebui să fie "autorizează".
  2. Captură de plată: Luați în considerare faptul că autorizațiile sunt garantate timp de până la 3 zile, deși puteți încerca să capturați o plată timp de până la 29 de zile.

Pentru a implementa acest tip de plată, am adăugat doar o nouă metodă la clasa PayPalPaymentService pentru a captura plata:

public static Capture CapturePayment (șir plătitId) var apiContext = PayPalConfiguration.GetAPIContext (); plata var = Plata.Get (apiContext, paymentId); var auth = plata.transacții [0] .related_resources [0] .autorizare; // Specificați o sumă de capturat. Prin setarea "is_final_capture" la adevărat, toate fondurile rămase deținute de autorizare vor fi scoase din instrumentul de finanțare. var capture = Captură nouă () amount = new Sumă () currency = "USD", total = "4.54", is_final_capture = true; // Captură o plată autorizată prin POSTing la // URI v1 / payments / authorization / authorization_id / captură var răspunsCapture = auth.Capture (apiContext, capturare); return responseCapture; 

Apoi, de la HomeController, am adăugat două acțiuni noi pentru a afișa acest tip de plată:

public IActionResult AutorizațiPayment () var pay = PayPalPaymentService.CreatePayment (GetBaseUrl (), "autorizează"); retur Redirecționare (payment.GetApprovalUrl ());  public IActionResult AuthorizeSuccessful (șir de plată string, chei string, șir PayerID) // Captură de plată var capture = PayPalPaymentService.CapturePayment (paymentId); retur View (); 
  • AuthorizePayment este acțiunea care declanșează plata. Este foarte asemănător cu funcția "CreatePayment" anterioară, dar în acest caz trecem "autorizează" ca parametru de intenție.
  • AuthorizeSuccessful este acțiunea în care clientul dvs. va fi redirecționat după aprobarea cu succes a plății prin PayPal. În acest moment captulez plata, dar ai putea salva plataId în baza de date și să captezi plata atunci când trebuie.

În aceste mostre de cod, pentru simplitate, am codificat greu valorile variabilelor de plată. În aplicația dvs. reală, îi veți împacheta probabil în metode care iau toate aceste valori ca variabile astfel încât totul să poată fi setat dinamic și reutilizat.

Abonamente

Acest lucru se numește "planuri de facturare" în PayPal - puteți crea planuri de plată recurente și puteți să vă abonați clienții la un plan de facturare prin crearea unui acord de facturare. Utilizând API-ul PayPal REST puteți crea, actualiza sau șterge planurile de facturare; acest lucru este posibil să utilizați dacă doriți să creați un panou de administrare pentru a gestiona aceste lucruri pentru afacerea dvs..

Pașii pentru a crea costuri recurente pentru clienții dvs. ar fi:

  1. Creați un plan de facturare și activați-l. După ce creați un plan de facturare, acesta se află într-o stare CREATED. Trebuie să fie activat prin efectuarea unei solicitări PATCH.
  2. Creați un acord de facturare și executa-l: Răspunsul la solicitarea de a crea un acord de facturare include legăturile cu adresa de aprobare_url și execute_url. Trebuie să obținem aprobarea pentru acordul de facturare și apoi să executăm acordul de facturare.

Planurile de facturare

Creați un plan de facturare

Creați un plan de facturare care definește perioadele de facturare. Acesta este un rezumat al parametrilor pe care trebuie să trecem pentru a crea un plan.

  • Nume: Numele planului de facturare.
  • Descriere: Descrierea planului de facturare.
  • Tip: Valorile permise sunt "FIXATE" pentru un număr stabilit de plăți recurente sau "INFINITE" pentru un plan care reapare până când este anulat manual.
  • Preferințele comerciantului: Acesta este un obiect care specifică preferințele, cum ar fi taxa de instalare, încercările maxime de eșec al unei plăți, adresa URL de returnare, anularea adresei URL, notificarea adresei URL, unde PayPal va redirecționa utilizatorul după o plată.
  • Definiții de plată: Set de definiții de plată pentru acest plan. În mod normal, această matrice ar avea una sau două definiții de plată. Dacă vrem să oferim o încercare gratuită sau un proces la un preț redus, am stabilit două definiții de plată. Primul va fi definiția perioadei de încercare, iar a doua definiție ar fi plata regulată. Proprietățile pentru o definiție de plată sunt Nume, tip (proces sau regulat), frecvență (zi, săptămână, lună, an), interval de frecvență (dacă setăm frecvența la "WEEK" și intervalul de frecvență la "1", definim o plată săptămânală), Cantitate să perceapă clientului și cicluri este numărul total al plăților. Modele de încărcare este de a specifica costul de expediere și taxa suplimentară valorii sumelor pentru plan.

Acesta este un fragment de cod care arată cum se creează un plan de facturare:

// Definiți planul și atașați definițiile de plată și preferințele comerciantului. // Mai multe informații: https://developer.paypal.com/webapps/developer/docs/api/#create-a-plan var billingPlan = plan nou name = "Tuts + Plus", description = "Plan lunar pentru cursuri. ", type =" fixed ", // Definiți preferințele comerciantului. // Mai multe informații: https://developer.paypal.com/webapps/developer/docs/api/#merchantpreferences-object merchant_preferences = new MerchantPreferences () setup_fee = GetCurrency ("0"), // $ 0 return_url = "returnURL ", / / ​​Retrieve from config cancel_url =" cancelURL ", // Retrieve from config auto_bill_amount =" YES ", initial_fail_amount_action =" CONTINUE ", max_fail_attempts =" 0 ", payment_definitions = // Definirea unui plan de încercare care să perceapă numai 9,99 USD pentru prima // luna. După aceasta, planul standard va prelua pentru restul de 11 luni ale anului. new PaymentDefinition () name = "Trial Plan", tip = "TRIAL", frecvență = "MONTH", frequency_interval = "1", amount = GetCurrency ("0"), ", charge_models = Listă nouă new ChargeModel () type = "TAX", suma = GetCurrency ("1.65") // Dacă trebuie să percepem taxă, noi ChargeModel () type = "SHIPPING" / Dacă trebuie să percepem o taxă pentru transport, // Definiți planul de plată standard. Acesta va reprezenta un plan lunar // pentru $ 19.99 USD care se taxează o dată pe lună timp de 11 luni. new PaymentDefinition name = "Planul standard", tip = "REGULAR", frecvența = "MONTH", frequency_interval = "1", amount = GetCurrency (" cicluri "ar trebui să fie 0 pentru un obiect" REGULAMENT "de" PaymentDefinition "" cycles = "11", charge_models = new List new ChargeModel type = "TAX", suma = GetCurrency ("2.47"), noul ChargeModel () type = "SHIPPING", amount = GetCurrency ("9.99"); // Obțineți PayPal Config var apiContext = PayPalConfiguration.GetAPIContext (); // Creați plan plan.Creați (apiContext);

Un plan de facturare nou creat se află într-o stare CREATED. Activați-o în starea ACTIVE, astfel încât clienții dvs. să vă abonați la plan. Pentru a activa planul, trebuie să facem o solicitare PATCH:

// Activați planul var patchRequest = nou PatchRequest () new Patch () op = "înlocuiți", path = "/", value = new Plan () state = "ACTIVE"; plan.Update (apiContext, patchRequest);

După cum puteți vedea, bibliotecile PayPal sunt un înveliș direct peste API-ul REST, care este bun, dar API este de asemenea foarte complex în comparație cu alții ca Stripe. Din acest motiv, este într-adevăr o opțiune bună de a înfășura toate comunicările PayPal în obiecte cu API-uri mai clare și mai simple pentru aplicațiile noastre. Aici puteți vedea ce codifică acest cod în mai multe funcții, arătând parametrii:

planul public static CreatePlanObject (șir planName, șir planDescripție, șir returnUrl, șir cancelUrl, frecvență șir, frecvență intInterval, plan zecimalPrice, zecimal shipAmount = 0, taxă zecimalPercentaj = 0, bool trial = false, int trialLength = 0, trial decimalPrice = ) // Definiți planul și atașați definițiile de plată și preferințele comerciantului. // Mai multe informații: https://developer.paypal.com/docs/rest/api/payments.billing-plans/ return New plan name = planName, description = planDescription, type = PlanType.Fixed, // Definiți comerciantul preferinţe. // Mai multe informații: https://developer.paypal.com/webapps/developer/docs/api/#merchantpreferences-object merchant_preferences = new MerchantPreferences () setup_fee = GetCurrency ("1"), return_url = returnUrl, cancel_url = cancelUrl , auto_bill_amount = "DA", initial_fail_amount_action = "CONTINUE", max_fail_attempts = "0", payment_definitions = GetPaymentDefinitions (încercare, încercareLength, trialPrice, frecvență, frecvențăInterval, planPrice, shippingAmount, taxPercentage);  listă statică privată GetPaymentDefinitions (încercare bool, int trialLength, încercare zecimalăPrice, frecvență șir, frecvență intInterval, plan zecimalPrice, zecimal shippingAmount, taxă zecimalPercentaj) var paymentDefinitions = new List(); dacă (proces) // Definiți un plan de încercare care va percepe "trialPrice" pentru "trialLength" // După aceea, planul standard va prelua. payDefinitions.Add (new PaymentDefinition () name = "Trial", tip = "TRIAL", frecvență = frecvență, frecvență_interval = frecvențăInterval.ToString (), amount = GetCurrency (trialPrice.ToString ), charge_models = GetChargeModels (trialPrice, shippingAmount, taxPercentage));  // Definiți planul standard de plată. Acesta va reprezenta o "frecvență" (lunar, etc) // plan pentru "planPrice" care percepe "planPrice" (o dată pe lună) pentru #cycles. var regularPayment = PlatăDefinire nouă name = "Planul standard", tip = "REGULAR", frecvență = frecvență, frecvență_interval = frecvențăInterval.ToString (), sum = GetCurrency (planPrice.ToString "planuri de tip," cicluri "ar trebui să fie 0 pentru un obiect" REGULAR "PaymentDefinition" cicluri = "11", charge_models = GetChargeModels (trialPrice, shippingAmount, taxPercentage) paymentDefinitions.Add (regularPayment) Listă GetChargeModels (planeta zecimalăPrice, zecimalAguranță zecimal, taxa zecimală zecimală) // Creați planul de facturare var chargeModels = lista nouă(); dacă (shippingAmount> 0) chargeModels.Add (noul ChargeModel () type = "SHIPPING", amount = GetCurrency (shippingAmount.ToString ()));  dacă (taxPercentage> 0) chargeModels.Add (nou ChargeModel () type = "TAX", suma = GetCurrency (String.Format ("0: f2");  taxă de returnareModeluri; 

Actualizați planul de facturare

Puteți actualiza informațiile pentru un plan de facturare existent făcând o solicitare "PATCH". Aceasta este o funcție care ambalează apelul:

public static void UpdateBillingPlan (șir planId, cale de șir, valoare obiect) // PayPal Autentificare token var apiContext = PayPalConfiguration.GetAPIContext (); // Planul de recuperare var plan = Plan.Get (apiContext, planId); // Activați planul var patchRequest = nou PatchRequest () new Patch () op = "înlocuiți", path = path, value = value; plan.Update (apiContext, patchRequest); 

Pentru a actualiza descrierea Planului de facturare, putem apela această funcție și putem trece parametrii potriviți:

UpdateBillingPlan (planId: "P-5FY40070P6526045UHFWUVEI", cale: "/", valoare: plan nou description = "new description");

Ștergeți un plan de facturare

În mod ideal, atunci când nu doriți să acceptați clienți noi către un plan de facturare, veți dori să îl actualizați în starea "INACTIV". Acest lucru nu va afecta acordurile de facturare existente privind acest plan. Acest lucru se poate face simplu apelând funcția UpdateBillingPlan:

UpdateBillingPlan (planId: "P-5FY40070P6526045UHFWUVEI", cale: "/", valoare: nou Plan state = "INACTIVE");

Acordurile de facturare

Creați un acord de facturare

După ce ați creat unul sau mai multe planuri de facturare, doriți să începeți să vă conectați clienții pentru planurile dvs. de abonament. Pentru a face acest lucru, trebuie să colectați detaliile clienților și să faceți o solicitare pentru PayPal. Pentru a putea testa această funcție, am adăugat câteva acțiuni la HomeController:

public IActionResult Abonare () var plan = PayPalSubscriptionsService.CreateBillingPlan ("Tuts + Plan", "Plan de testare pentru acest articol", GetBaseUrl ()); var abonament = PayPalSubscriptionsService.CreateBillingAgreement (plan.id, noul PayPal.Api.ShippingAddress oraș = "Londra", line1 = "linia 1", postal_code = "SW1A 1AA", country_code = "GB", "Pedro Alonso" "Tuts +", DataTime.Now); retur Redirecționare (subscription.GetApprovalUrl ());  public IActionResult SubscriSuccess (șir de caractere) // Executați acordul aprobat PayPalSubscriptionsService.ExecuteBillingAgreement (token); retur View ();  public IActionResult SubscrieCancelar (token șir) // TODO: Gestionați returnarea anulată de plată RedirectToAction ("Eroare"); 
  • Abonati-va: Aceasta este prima acțiune care se numește. Creează un plan de facturare pentru test și apoi se creează un acord de facturare (abonament) la acel plan, iar utilizatorul este redirecționat către PayPal pentru a confirma plata.
  • SubscribeSuccess: Această acțiune este cea utilizată ca "URL de retur" după un abonament reușit. Identificatorul jetonului de acord este transmis în șirul de interogare și folosim acest jeton pentru a executa acordul de facturare și a îl face activ.
  • SubscribeCancel: Această acțiune este cea folosită ca "Anulare URL". Dacă dintr-un anumit motiv plata nu reușește sau clientul tău anulează plata prin PayPal, utilizatorul este luat la această acțiune și trebuie să o rezolvi. Poate oferi opțiunea de a încerca din nou.

După cum puteți vedea în fragmentul de cod anterior, am înfășurat cea mai mare parte a funcționalității în mai multe metode. Prima este "CreateBillingPlan" care a fost explicată în secțiunea anterioară. Al doilea este "CreateBillingAgreement", care este folosit pentru a subscrie un utilizator la un plan:

contract de statică publică CreateBillingAgreement (șir planId, expedițieAdăugareAdresă, nume șir, descriere șir, DateTime startDate) // Taste de autentificare PayPal var apiContext = PayPalConfiguration.GetAPIContext (); var acord = nou acord () name = nume, descriere = descriere, start_date = startDate.ToString ("yyyy-MM-ddTHH: mm: ss") "paypal ", plan = plan nou () id = planId, shipping_address = shippingAddress; var createdAgreement = agreement.Create (apiContext); retur a creatAgreement; 

A treia metodă este "ExecuteBillingAgreement". După aprobarea cu succes a abonamentului, folosim tokenul returnat pentru a activa abonamentul:

public static void ExecuteBillingAgreement (token șir) // PayPal Autentificare token-uri var apiContext = PayPalConfiguration.GetAPIContext (); var acord = nou acord () token = token; var exectedAgreement = agreement.Execute (apiContext); 

Suspendați un Acord de facturare

Utilizați această metodă pentru a suspenda un acord:

public static void SuspendAgreementAgreement (acordul șirId) var apiContext = PayPalConfiguration.GetAPIContext (); var acord = nou acord () id = agreementId; agreement.Suspend (apiContext, new AgreementStateDescriptor () note = "Suspendarea acordului"); 

Reactivați un acord de facturare

Acesta este într-adevăr similar cu cel precedent:

public static void ReactivareArticol de acordare (acord stringId) var apiContext = PayPalConfiguration.GetAPIContext (); var acord = nou acord () id = agreementId; agreement.ReActivate (apiContext, new AgreementStateDescriptor () note = "Reactivarea acordului"); 

Anulați un Acord de facturare

Utilizați această funcție pentru a anula un plan:

static public void CancelBillingAgreement (șir de acordId) var apiContext = PayPalConfiguration.GetAPIContext (); var acord = nou acord () id = agreementId; agreement.Anul (apiContext, new AgreementStateDescriptor () note = "Anularea acordului"); 

Actualizați un acord de facturare

Această opțiune este foarte limitată și ceea ce aș aștepta de la acest apel este posibilitatea de a schimba planul de abonament, pentru a actualiza sau a devaloriza un client. Acest lucru nu este acceptat într-un singur apel, deoarece este în Stripe. Trebuie să rezolvați acest scenariu prin anularea acordului actual și crearea unui nou acord pentru actualizări sau downgrade-uri. Nu este ideal, dar s-ar putea schimba în viitor.

Concluzie

Aceasta este o prezentare generală a celor mai comune funcții pe care utilizatorii le utilizează pentru a se integra în PayPal. API-ul lor este cu mult mai mare decât metodele de integrare explicate în acest articol - puteți, de asemenea, să efectuați rambursări și rambursări parțiale și să aveți multe opțiuni diferite pentru cazurile de margine din eșantioanele acoperite în acest articol. Dacă sunteți interesat să obțineți mai multe detalii despre o anumită integrare, vă rugăm să lăsați o sugestie în comentarii.

Cod