PayPal Integration Del 2 PayPal REST API

Hva du skal skape

I denne opplæringen skal jeg vise deg hvordan du kan ta betalinger med PayPal REST API og C #. Alle bibliotekene de har for forskjellige språk som Ruby, Node.js, Python, PHP, er veldig like, så alle begrepene gjelder her for alle bibliotekene.

Prosjektoppsett

For å starte, har jeg opprettet et MVC-prosjekt i Visual Studio 2015: Fil> Nytt> Prosjekt, og velg ASP.NET-applikasjon.

Velg ASP.NET 5 Web Application Mal, som bruker den nye MVC 6. Den ligner MVC 5 hvis du er kjent med den.

Som du kan se på bildet nedenfor, har jeg lagt til noen få filer og mapper til løsningen. De viktigste to ting å legge merke til er:

  1. I referanser Jeg har fjernet målet DNX Core 5.0, som kan tillate oss å kjøre dette prosjektet i Mac OS X eller Linux, men PayPal-biblioteket vi trenger, er ikke oppdatert ennå. 
  2. Jeg har lagt til mappen "Tjenester", der jeg skal pakke inn logikken for PayPal-samtaler, slik at vi kan holde kontrollerne fine og korte.

Installer PayPal SDK ved hjelp av NuGet. Høyreklikk på navnet på løsningen og velg Administrer NuGet-pakker, og søk deretter etter "PayPal" og installer den.

Opprett en PayPal-app

For å integrere søknaden vår med PayPal må vi navigere til PayPal Developers, og deretter under REST API-apper, klikk på Opprett app.

Gi appen et navn og velg en sandkasseutviklerkonto som er knyttet til appen. For testformål kan vi deretter navigere til http://sandbox.paypal.com og logge inn med innloggingsinformasjonen for sandboksen for å se testen for PayPal-konto og transaksjoner.

Etter å ha klikket på Opprett app, Vi ser bekreftelsesskjermen med klient-ID og hemmelige tokens.

Kopier clientId og clientSecret tokens til appsettings.json, som du kan se på skjermbildet nedenfor:

Testing av betalinger

PayPal gir et Sandbox-miljø for testing. Du kan opprette testkjøper og selgerkontoer derfra. Når du registrerer deg, har du en Business-konto i Sandkassen som er knyttet til utviklerkontoen din.

For å opprette en ny testkonto, logg inn på utviklernettstedet, og klikk deretter på dashbord kategorien og naviger til Sandkasse> Kontoer. Her kan du se listen over testkontoer hvis du har noen:

Hvis du ikke har opprettet testkontoene dine ennå, går du videre og klikker på Opprett konto, øverst til høyre, for å opprette minst én testpersonlig konto og en testkonto-konto.

Etter å ha opprettet testkontoene, kan du logge inn via www.sandbox.paypal.com med test-e-postadressen og passordet du tilordnet hver konto på forrige skjema. Dette er veldig nyttig å teste at når du kjøper noe med din personlige testkonto, blir midlene overført til din testkonto-konto. Nå er du klar til å begynne å integrere med PayPal og teste at pengene går fra en konto til en annen.

Enkelt PayPal-betaling

PayPal tilbyr forskjellige betalingsmåter. Du kan bruke direkte kredittkortbetalinger, noe som betyr at kundene dine ikke får se PayPal-innloggingssiden eller sammendrag - alt skjer på nettstedet ditt. Du må være PCI-kompatibel for dette, og jeg anbefaler at du bruker Stripe, siden du bare trenger SSL ved hjelp av JavaScript-biblioteket. På den annen side, for å ta betalinger via PayPal-betalinger, tar det tre trinn:

  1. Angi betalingsinformasjon til opprett en betaling.
  2. Få betalingsgodkjenning, ved å omdirigere kunden din til PayPal for å godkjenne transaksjonen.
  3. Utfør betalingen å fange midler etter PayPal omdirigerer kunden din tilbake til nettstedet ditt.

I mitt MVC prosjekt, i tjenester mappe, har jeg opprettet PayPalPaymentService-klassen der jeg har lagt til disse metodene:

offentlig statisk betaling CreatePayment (string baseUrl, streng hensikt) // ### Api Context // Pass inn et 'APIContext' objekt for å autentisere // anropet og sende et unikt forespørsel id // (som sikrer idempotency). SDK genererer // en forespørsel ID hvis du ikke bestiller en eksplisitt. var apiContext = PayPalConfiguration.GetAPIContext (); // Betalingsresurs var betaling = ny Betaling () intent = intent, // 'salg' eller 'autoriser' betaler = ny Betaler () payment_method = "paypal", transaksjoner = GetTransactionsList (), redirect_urls = GetReturnUrls (baseUrl , hensikt); // Opprett en betaling ved hjelp av en gyldig APIContext var createdPayment = payment.Create (apiContext); returnert createdPayment;  privat statisk liste GetTransactionsList () // En transaksjon definerer kontrakten for en betaling // hva er betalingen for og hvem som oppfyller den. var transactionList = ny liste(); // API for betalingskapasitet krever en liste over Transaksjon; // Legg til den opprettede Transaksjonen til en Liste transaksjonsliste.Add (Ny Transaksjon () beskrivelse = "Transaksjonsbeskrivelse.", faktura_number = GetRandomInvoiceNumber (), beløp = nytt beløp () valuta = "USD", totalt = "100,00" , // Total må være lik summen av frakt, skatt og subtotal. Detaljer = Nye detaljer () // Detaljer: La oss spesifisere detaljer for et betalingsbeløp. Tax = "15", shipping = "10", subtotal = "75", item_list = new ItemList () items = new List() new Item () name = "Item Name", valuta = "USD", pris = "15", quantity = "5", sku = "sku")); returnere transaksjonsliste;  private statiske RedirectUrls GetReturnUrls (strengbasenUrl, strengintensjon) var returnUrl = intent == "sale"? "/ Hjem / PaymentSuccessful": "/ Home / AuthorizeSuccessful"; // Omadresser URLS // Disse nettadressene bestemmer hvordan brukeren blir omdirigert fra PayPal // når de enten har godkjent eller avbrutt betalingen. returner nye RedirectUrls () cancel_url = baseUrl + "/ Hjem / PaymentCancelled", return_url = baseUrl + returnUrl;  offentlig statisk betalingsutbetalingstillegg (streng betalingId, strengbetalerId) // ### Api Context // Pass på et 'APIContext'-objekt for å autentisere // anropet og sende et unikt forespørsels-id // (som sikrer idempotency). SDK genererer // en forespørsel ID hvis du ikke bestiller en eksplisitt. var apiContext = PayPalConfiguration.GetAPIContext (); var paymentExecution = ny PaymentExecution () payer_id = payerId; var betaling = ny Betaling () id = betalingId; // Utfør betalingen. var executedPayment = payment.Execute (apiContext, paymentExecution); returnere executedPayment; 

Det er noen parametere som blir sendt i denne samtalen:

  • Intent: Tre mulige verdier: "salg" for umiddelbare innbetalinger, "autorisere" å godkjenne en betaling for å fange senere, eller "bestille" for å opprette en ordre. Når du får det autorisasjon For en betaling for å fange senere, har du 3 dager garantert, selv om du kan forsøke å fange betalingen opptil 29 dager senere.
  • Payer: Kilde på midlene for denne betalingen, betalingsmetode som brukes - PayPal Wallet-betaling, Bank Direkte Debit eller Direkte kredittkort. 
  • transaksjoner: Dette brukes til å spesifisere beløpet for betalingen og eventuelt angi elementene som skal betales for. Du kan også spesifisere subtotal, frakt og skatt hvis nødvendig.
  • Viderekoblingsadresser: Angi nettadressen som PayPal vil omdirigere kundene dine etter en transaksjon, slik at du kan oppdatere databasen og vise en bekreftelsesmelding.

De tidligere funksjonene kan brukes fra din kontroller slik:

offentlig IActionResult CreatePayment () var betaling = PayPalPaymentService.CreatePayment (GetBaseUrl (), "salg"); returnere omadressering (payment.GetApprovalUrl ());  offentlig IActionResult PaymentCancelled () // TODO: Håndter kansellert betalingsavkastning RedirectToAction ("Error");  offentlig IActionResult PaymentSuccessful (streng betalingId, strengtoken, streng PayerID) // Utfør betaling var betaling = PayPalPaymentService.ExecutePayment (paymentId, PayerID); returvisning (); 

Som du ser, har jeg opprettet tre handlinger:

  • CreatePayment: Dette er handlingen som utløser betalingen. Det ringer til PayPal for å opprette Betalingen, og omdirigerer brukeren til PayPal for å godkjenne transaksjonen.
  • Betalingen var vellykket: Dette er handlingen der PayPal omdirigerer kunden vår etter en vellykket betaling. På dette tidspunktet kan vi utføre betalingen for å få pengene overført til vår selgerkonto.
  • PaymentCancelled: Denne handlingen er hvor brukeren blir omdirigert fra PayPal dersom brukeren kansellerer godkjenningsprosessen. På denne tiden vil du sannsynligvis gi kunden muligheten til å prøve igjen eller komme i kontakt med deg.

Tillat en betaling til å ta opp senere

Dette scenariet er veldig lik det forrige tilfellet. Du vil kanskje bruke denne metoden hvis du prøver å ta forbestillinger for et produkt som ikke er tilgjengelig ennå. Fremgangsmåten for å få denne betalingen er:

  1. Godkjenn betaling: "Intent" -parameteren for denne anropet bør være "autorisere".
  2. Fang betalingen: Husk at autorisasjoner er garantert i opptil 3 dager, selv om du kan forsøke å ta opp en betaling i opptil 29 dager.

For å implementere denne typen betaling har jeg bare lagt til en ny metode for klassen PayPalPaymentService for å fange betalingen:

offentlig statisk Capture CapturePayment (streng betalingId) var apiContext = PayPalConfiguration.GetAPIContext (); var payment = Payment.Get (apiContext, paymentId); var auth = payment.transactions [0] .related_resources [0] .authorization; // Angi et beløp som skal fanges. Ved å sette 'is_final_capture' til sann, vil alle gjenværende midler som er godkjent, frigis fra finansieringsinstrumentet. var capture = new Capture () amount = nytt beløp () currency = "USD", total = "4.54", is_final_capture = true; // Fang en autorisert betaling med POSTing til // URI v1 / betalinger / autorisasjon / authorization_id / capture var responseCapture = auth.Capture (apiContext, capture); return responseCapture; 

Så fra HomeController har jeg lagt til to nye handlinger for å vise denne typen betaling:

offentlig IActionResult AuthorizePayment () var betaling = PayPalPaymentService.CreatePayment (GetBaseUrl (), "authorize"); returnere omadressering (payment.GetApprovalUrl ());  offentlig IActionResult AuthorizeSuccessful (streng betalingId, streng token, streng PayerID) // Capture Payment var capture = PayPalPaymentService.CapturePayment (paymentId); returvisning (); 
  • AuthorizePayment er handlingen utløser betalingen. Det ligner på den tidligere "CreatePayment" -funksjonen, men vi overfører "autorisere" som hensiktsparameteren i dette tilfellet.
  • AuthorizeSuccessful er handlingen der kunden din blir omdirigert etter at du har godkjent betalingen på PayPal. På dette tidspunktet fanger jeg betalingen, men du kan lagre betalingenId i databasen din og ta opp betalingen når du trenger det.

I disse kodesamplene har jeg for enkelhets skyld hardkodede betalingsvariabelenes verdier. I ditt virkelige program vil du sannsynligvis pakke dem inn i metoder som tar alle disse verdiene som variabler, slik at alt kan settes dynamisk og gjenbrukes.

abonnementer

Dette kalles "Faktureringsplaner" i PayPal. Du kan opprette tilbakevendende betalingsplaner og abonnere dine kunder til en faktureringsplan ved å opprette en fakturaavtale. Ved hjelp av PayPal REST API kan du opprette, oppdatere eller slette faktureringsplaner; Dette er noe du kan bruke hvis du vil bygge et administrasjonspanel for å administrere disse tingene for bedriften din.

Fremgangsmåten for å opprette gjentatte kostnader til kundene dine vil være:

  1. Opprett en faktureringsplan og aktiver den. Når du har opprettet en Faktureringsplan, er den i en CREATED-tilstand. Det må aktiveres ved å lage en PATCH-forespørsel.
  2. Opprett en fakturaavtale og gjennomføre det: Svaret på anropet for å opprette en fakturaavtale inkluderer koblingene til approval_url og execute_url. Vi må godkjenne faktureringsavtalen og deretter utføre faktureringsavtalen.

Faktureringsplaner

Opprett en faktureringsplan

Opprett en faktureringsplan som definerer faktureringsperioder. Dette er et sammendrag av parametrene som vi må passere for å lage en plan.

  • Navn: Navn på faktureringsplanen.
  • Beskrivelse: Beskrivelse av faktureringsplanen.
  • Type: Tillatte verdier er 'FIXED' for et angitt antall gjentatte betalinger, eller 'INFINITE' for en plan som gjenoppretter til den er manuelt avbrutt.
  • Selgerinnstillinger: Dette er et objekt som spesifiserer preferanser som oppsettgebyr, maksimalt mislykkede forsøk på betaling, returadresse, avbryt URL, varsle URL, hvor PayPal vil omdirigere brukeren etter en betaling.
  • Betalingsdefinisjoner: Array av betalingsdefinisjoner for denne planen. Normalt vil dette oppsettet ha en eller to betalingsdefinisjoner. Hvis vi ønsker å tilby en gratis prøveperiode eller prøveversjon til en nedsatt pris, setter vi opp to betalingsdefinisjoner. Den første vil være definisjonen for prøveperioden, og den andre definisjonen vil være den vanlige betalingen. Egenskapene for en betalingsdefinisjon er Navn, type (prøve eller vanlig), Frekvens (dag, uke, måned, år), frekvensintervall (hvis vi setter frekvensen til 'WEEK' og frekvensintervallet til '1', definerer vi en ukentlig betaling), beløp å lade kunden, og sykluser er antall totale utbetalinger. Charge Modeller er å spesifisere fraktkostnad og skatt tillegg til beløpsverdien for planen.

Dette er en kodestykke som viser hvordan du oppretter en faktureringsplan:

// Definer planen og legg til betalingsdefinisjonene og selgerinnstillingene. // Mer informasjon: https://developer.paypal.com/webapps/developer/docs/api/#create-a-plan var billingPlan = ny Plan name = "Tuts + Plus", beskrivelse = "Månedlig plan for kurs. ", type =" fixed ", // Definer selgerenes preferanser. // Mer informasjon: https://developer.paypal.com/webapps/developer/docs/api/#merchantpreferences-object merchant_preferences = nye MerchantPreferences () setup_fee = GetCurrency ("0"), // $ 0 return_url = "returnURL ", // Hent fra config cancel_url =" cancelURL ", // Hent fra config auto_bill_amount =" YES ", initial_fail_amount_action =" CONTINUE ", max_fail_attempts =" 0 ", payment_definitions = ny liste // Definer en prøveplan som kun belaster $ 9,99 for den første // måneden. Etter det vil standardplanen overta for // resterende 11 måneder av året. New PaymentDefinition () name = "Trial Plan", type = "TRIAL", frekvens = "Måned", frequency_interval = "1", amount = GetCurrency ("0"), // Gratis for 1 måneders syklus = "1 ", charge_models = ny liste new ChargeModel () type = "TAX", beløp = GetCurrency ("1,65") // Hvis vi trenger å belaste Skatt, ny ChargeModel () type = "SHIPPING", beløp = GetCurrency ("9.99") / / Hvis vi må betale for Shipping, // Definer standardbetalingsplanen. Det vil utgjøre en månedlig // plan for $ 19,99 USD som belaster en måned for 11 måneder. New PaymentDefinition name = "Standard Plan", type = "REGULAR", frekvens = "MÅNED", frequency_interval = "1", amount = GetCurrency ("15,00"), //> MERK: For 'IFNINITE' sykluser 'skal være 0 for et' REGULAR 'PaymentDefinition' objekt. cycles = "11", charge_models = ny liste new ChargeModel type = "TAX", beløp = GetCurrency ("2,47"), ny ChargeModel () type = "SHIPPING", amount = GetCurrency ("9.99"); // Få PayPal Config var apiContext = PayPalConfiguration.GetAPIContext (); // Opprett Plan plan. Opprett (apiContext);

En nyopprettet faktureringsplan er i en CREATED-tilstand. Aktiver den til ACTIVE-tilstanden, slik at kundene dine kan abonnere på planen. For å aktivere planen, må vi gjøre en PATCH-forespørsel:

// Aktiver planen var patchRequest = new PatchRequest () new Patch () op = "replace", path = "/", value = ny Plan () state = "ACTIVE"; plan.Update (apiContext, patchRequest);

Som du kan se, er PayPal-biblioteker et direkte omslag over deres REST API, som er bra, men API er også veldig komplisert sammenlignet med andre som Stripe. Av denne grunn er det virkelig et godt alternativ å pakke inn all PayPal-kommunikasjon i objekter med klarere og enklere APIer for våre applikasjoner. Her kan du se hva denne koden er innpakket i flere funksjoner som tar parametere ut som:

offentlig statisk Plan CreatePlanObject (strengplannavn, strengplanBeskrivelse, streng returnUrl, streng avbrytUrl, strengfrekvens, int frekvensInterval, desimalplanPris, desimal shippingAmount = 0, desimalskattPercentasje = 0, bool prøve = false, int trialLength = 0, desimal prøvePrice = 0 ) // Definer planen og legg til betalingsdefinisjonene og selgerinnstillingene. // Mer informasjon: https://developer.paypal.com/docs/rest/api/payments.billing-plans/ returner ny plan name = planName, description = planDescription, type = PlanType.Fixed, // Definer selgeren preferanser. // Mer informasjon: https://developer.paypal.com/webapps/developer/docs/api/#merchantpreferences-object merchant_preferences = nye MerchantPreferences () setup_fee = GetCurrency ("1"), return_url = returnUrl, cancel_url = cancelUrl , auto_bill_amount = "YES", initial_fail_amount_action = "CONTINUE", max_fail_attempts = "0", payment_definitions = GetPaymentDefinitions (prøve, prøveLengde, prøvePris, frekvens, frekvensInterval, planPris, fraktAmount, skatteprosent);  privat statisk liste GetPaymentDefinitions (bool trial, int trialLength, decimal trialPrice, strengfrekvens, int frequencyInterval, desimalplanPris, desimal shippingAmount, desimalskattPercentasje) var paymentDefinitions = new List(); if (trial) // Definer en prøveplan som vil belaste 'trialPrice' for 'trialLength' // Etter det vil standardplanen overta. paymentDefinitions.Add (new PaymentDefinition () name = "Trial", type = "TRIAL", frekvens = frekvens, frequency_interval = frequencyInterval.ToString (), amount = GetCurrency (trialPrice.ToString ()), sykluser = trialLength.ToString ), charge_models = GetChargeModels (trialPrice, shippingAmount, taxPercentage));  // Definer standardbetalingsplanen. Det vil representere en 'frekvens' (månedlig, etc) // plan for 'planpris' som belaster 'planpris' (en gang i måneden) for #cycles. var regularPayment = ny PaymentDefinition name = "Standard Plan", type = "REGULAR", frekvens = frekvens, frequency_interval = frequencyInterval.ToString (), amount = GetCurrency (planPrice.ToString ()), //> MERK: For 'IFNINITE 'type planer', 'sykluser' skal være 0 for et 'REGULAR' PaymentDefinition 'objekt. cycles = "11", charge_models = GetChargeModels (trialPrice, shippingAmount, taxPercentage); betalingDefinitions.Add (regularPayment); return paymentDefinitions; Liste GetChargeModels (desimalplanPris, desimal shippingAmount, desimalskattPercentasje) // Opprett faktureringsplanen var chargeModels = ny liste(); hvis (shippingAmount> 0) chargeModels.Add (new ChargeModel () type = "SHIPPING", beløp = GetCurrency (shippingAmount.ToString ()));  if (taxPercentage> 0) chargeModels.Add (new ChargeModel () type = "TAX", beløp = GetCurrency (String.Format ("0: f2", planPris * skatteprosent / 100)));  returneringsmodeller; 

Oppdater Faktureringsplan

Du kan oppdatere informasjonen for en eksisterende faktureringsplan ved å gjøre en forespørsel om "PATCH". Dette er en funksjon som bryter den samtalen:

offentlig statisk tomt UpdateBillingPlan (strengplanId, strengbane, objektverdi) // PayPal Authentication tokens var apiContext = PayPalConfiguration.GetAPIContext (); // Hent Plan var plan = Plan.Get (apiContext, planId); // Aktiver planen var patchRequest = new PatchRequest () new Patch () op = "replace", path = path, value = value; plan.Update (apiContext, patchRequest); 

For å oppdatere Faktureringsplanbeskrivelsen kan vi ringe denne funksjonen og sende de riktige parameterne:

UpdateBillingPlan (planId: "P-5FY40070P6526045UHFWUVEI", sti: "/", verdi: ny Plan description = "ny beskrivelse");

Slett en faktureringsplan

Ideelt sett, når du ikke vil godta nye kunder til en Faktureringsplan, vil du oppdatere den til "INAKTIVT" -tilstanden. Dette vil ikke påvirke eksisterende fakturaavtaler på denne planen. Dette kan gjøres ved å ringe UpdateBillingPlan-funksjonen:

UpdateBillingPlan (plan: "P-5FY40070P6526045UHFWUVEI", sti: "/", verdi: ny Plan state = "INACTIVE");

Faktureringsavtaler

Opprett en fakturaavtale

Når du har opprettet en eller flere faktureringsplaner, vil du begynne å få kunder til å registrere deg for abonnementsplanene dine. For å gjøre dette må du samle dine kundedetaljer og gjøre en forespørsel til PayPal. For å kunne teste denne funksjonaliteten har jeg lagt til flere handlinger i HomeController:

offentlig IActionResult Abonner () var plan = PayPalSubscriptionsService.CreateBillingPlan ("Tuts + Plan", "Testplan for denne artikkelen", GetBaseUrl ()); var abonnement = PayPalSubscriptionsService.CreateBillingAgreement (plan.id, ny PayPal.Api.ShippingAddress city = "London", line1 = "linje 1", postal_code = "SW1A 1AA", country_code = "GB", "Pedro Alonso" "Tuts +", DateTime.Now); returnere omadressering (abonnement.GetApprovalUrl ());  offentlig IActionResult SubscribeSuccess (strengtoken) // Utfør godkjent avtale PayPalSubscriptionsService.ExecuteBillingAgreement (token); returvisning ();  offentlig IActionResult SubscribeCancel (strengtoken) // TODO: Håndter kansellert betalingsavkastning RedirectToAction ("Error"); 
  • Abonnere: Dette er den første handlingen som kalles. Det oppretter en testfaktura, og deretter blir en fakturaavtale (abonnement) til den planen opprettet, og brukeren blir omdirigert til PayPal for å bekrefte betalingen.
  • SubscribeSuccess: Denne handlingen er den som ble brukt som "Returadresse" etter et vellykket abonnement. Avtale token-identifikatoren sendes i spørringsstrengen, og vi bruker dette tokenet til å utføre faktureringsavtalen og gjøre den aktiv.
  • SubscribeCancel: Denne handlingen er den som brukes som "Avbryt URL". Hvis betalingen av en eller annen grunn mislykkes, eller kunden avbryter betalingen på PayPal, blir brukeren tatt til denne handlingen, og du må håndtere dette. Kanskje tilby muligheten til å prøve igjen.

Som du kan se i forrige kodebrikke, har jeg pakket inn det meste av funksjonaliteten i flere metoder. Den første er "CreateBillingPlan" som ble forklart i forrige avsnitt. Den andre er "CreateBillingAgreement" som brukes til å abonnere en bruker til en plan:

offentlig statisk Avtale CreateBillingAgreement (streng planId, ShippingAddress shippingAddress, strengnavn, strengbeskrivelse, DateTime startDate) // PayPal Authentication tokens var apiContext = PayPalConfiguration.GetAPIContext (); var agreement = ny avtale () navn = navn, beskrivelse = beskrivelse, start_date = startDate.ToString ("yyyy-MM-ddTHH: mm: ss") + "Z", betaleren = ny Betaler () payment_method = "paypal ", plan = ny Plan () id = planId, shipping_address = shippingAddress; var createdAgreement = agreement.Create (apiContext); returnert createdAgreement; 

Den tredje metoden er "ExecuteBillingAgreement". Etter en vellykket abonnementsgodkjenning bruker vi token returnert for å aktivere abonnementet:

offentlig statisk tomrom ExecuteBillingAgreement (streng token) // PayPal Authentication tokens var apiContext = PayPalConfiguration.GetAPIContext (); var agreement = ny avtale () token = token; var executedAgreement = agreement.Execute (apiContext); 

Opphev en fakturaavtale

Bruk denne metoden for å suspendere en avtale:

Statisk statisk tomt SuspendBillingAgreement (strengavtaleId) var apiContext = PayPalConfiguration.GetAPIContext (); var agreement = ny avtale () id = agreementId; agreement.Suspend (apiContext, new AgreementStateDescriptor () note = "Suspending av avtalen"); 

Reaktiver en fakturaavtale

Denne er virkelig lik den forrige:

offentlig statisk tomrom ReactivateBillingAgreement (strengavtaleId) var apiContext = PayPalConfiguration.GetAPIContext (); var agreement = ny avtale () id = agreementId; agreement.ReActivate (apiContext, new AgreementStateDescriptor () note = "Reaktivering av avtalen"); 

Avbryt en fakturaavtale

Bruk denne funksjonen til å avbryte en plan:

offentlig statisk tomrom CancelBillingAgreement (strengavtaleId) var apiContext = PayPalConfiguration.GetAPIContext (); var agreement = ny avtale () id = agreementId; agreement.Cancel (apiContext, new AgreementStateDescriptor () note = "Avbryte avtalen"); 

Oppdater en fakturaavtale

Dette alternativet er svært begrenset, og det jeg forventer av denne anropet er muligheten til å endre abonnementsplanen, for å oppgradere eller nedgradere en kunde. Dette støttes ikke i en enkelt samtale som den er i Stripe. Du må håndtere dette scenariet ved å kansellere gjeldende avtale og opprette en ny for oppgraderinger eller nedgraderinger. Det er ikke ideelt, men det kan endres i fremtiden.

Konklusjon

Dette er en oversikt over de vanligste funksjonene som folk bruker til å integrere med PayPal. Deres API er langt større enn integrasjonsmetodene som er forklart i denne artikkelen. Du kan også utstede refusjoner og delvise tilbakebetalinger, og de har mange forskjellige muligheter for kantsaker i eksemplene dekket i denne artikkelen. Hvis du er interessert i å få mer informasjon om en hvilken som helst spesifikk integrasjon, vennligst legg et forslag i kommentarene.