Noțiuni de bază cu api paypal

PayPal este cel mai popular sistem de plată pe Internet. Factorul cheie pentru care acest sistem este atât de popular este ușurința deschiderii unui cont și primirea / trimiterea plăților. De asemenea, un aspect important este prezența API, care vă permite să încorporați un sistem de plăți în proiectele dvs. În articolul nostru de astăzi, pentru a exclude complexitatea integrării, vă vom spune despre unele modalități și abordări pentru a lucra cu API-ul de la PayPal.







Noțiuni de bază cu api paypal


Opțiuni de plată diferite

PayPal oferă diferite metode de plată, care la prima vedere pot deruta:

1. Express Checkout

2. Plăți directe

3. Plăți recurente

Această metodă vă va permite să configurați sistemul de la plăți periodice (de exemplu, să plătiți pentru un abonament).

4. Plăți în masă

5. Plăți adaptate

Un alt API pentru trimiterea de fonduri către câțiva destinatari, dar cu unele diferențe față de API-ul pentru plăți în vrac (nu ne-am avertizat că este ușor să fii confuz ...).

Această listă nu este atât de complicată și acoperă metodele de bază de plată (pentru mai multe informații, consultați documentația API).

Crearea unei solicitări API

PayPal suportă două formate de bază HTTP: NVP și SOAP. NVP este o abreviere pentru perechea de nume-valoare și SOAP este un protocol de acces simplu de obiect (Simple Object Access Protocol). Să aruncăm o privire la abordarea NVP, pe care o preferăm din cauza greutății și a complexității SOAP.

USER este numele dvs. de utilizator în API-ul PayPal.

PWD este parola dvs. în PayPal API.

VERSIUNE - numărul versiunii serviciului NVP în API, de exemplu, 74.0 (cea mai comună versiune în momentul acestei scrieri).

Ultimul parametru solicitat, METHOD. declară ce metodă API a fost apelată.

Solicitările sunt făcute prin HTTPS. Vom folosi cURL pentru a crea interogarea noastră principală, apoi împachetați procesul în clasă:


Rețineți că folosim fișierul certificatului CA pentru a valida certificatul SSL. Puteți obține fișierul de pe site-ul cURL sau dintr-o altă sursă de încredere. Actualizați calea spre fișierul de certificat în funcție de locul în care ați plasat-o.

Răspunsul primit va fi, de asemenea, în formatul NVP, iar înainte de a-l returna, îl reformatăm într-o matrice. Parametrul numit ACK semnează starea de solicitare (de succes (succes) sau SuccessWithWarning (cu succes, dar cu suspiciune)), atunci când se face solicitarea sau eroare (eroare) sau de avertizare (avertizare) în cazul în care cererea nu a reușit.

Interogarea poate eșua din mai multe motive și există diferite motive pentru fiecare metodă API (toate fiind detaliate în manual). Apoi vom reveni la unele dintre ele și vă vom spune cum să evitați un astfel de rezultat. Amintiți-vă că valorile parametrilor sunt sensibile la minuscule și nu uitați să le decorați corespunzător.

Procesul de plăți expres este următorul:

1. Utilizând datele tranzacției, solicităm o plată de plată din PayPal;
2. În cazul în care tranzacția are succes, redirecționăm utilizatorul la obiectivul PayPal utilizând cuponul primit;
3. Utilizatorul completează sau anulează plata în platforma PayPal și este redirecționat către site-ul nostru;
4. Completăm plata fie după ce utilizatorul este redirecționat înapoi, fie prin IPN (notificare de plată instantanee).


1. Primim un formular de plată: SetExpressCheckout

Continuăm procesul de plată expres prin transferarea datelor de comandă către API-ul PayPal și primim un cupon care determină plata specifică. Acest cupon este folosit pentru a merge la PayPal.

Să analizăm parametrii necesari:

METODA - Aceasta este exact metoda API pe care am folosit-o (cu alte cuvinte, SetExpressCheckout).

RETURNURL este adresa URL la care utilizatorul va fi redirecționat după efectuarea plății.

CANCELURL - Adresa URL la care utilizatorul va fi redirecționat după ce plata a fost anulată.

PAYMENTREQUEST_0_AMT reprezintă numărul total de tranzacții. Aici avem două câmpuri zecimale cu un separator zecimal (.). Un delimiter cu introducerea unei mii de puncte trebuie să fie (,).

PAYMENTREQUEST_0_ITEMAMT - costul total al unităților din comandă, excluzând taxele de livrare, taxele și alte costuri suplimentare. Dacă nu există taxe suplimentare, această valoare va fi aceeași ca în PAYMENTREQUEST_0_AMT.

Putem adăuga parametri suplimentari pentru a adăuga mai multe informații despre comandă. Să analizăm câțiva parametri cu valori standard:

PAYMENTREQUEST_0_CURRENCYCODE - moneda în care se efectuează plata (Format în trei litere, Valoare standard: USD).

PAYMENTREQUEST_0_SHIPPINGAMT reprezintă costul total de livrare a comenzii.

PAYMENTREQUEST_0_TAXAMT - suma totală a taxelor pentru comandă. Această opțiune este importantă dacă ați indicat impozitarea pentru fiecare unitate de comandă (vedeți mai jos).







PAYMENTREQUEST_0_DESC - descrierea comenzii.

De asemenea, putem introduce date despre unitățile individuale în comandă:

L_PAYMENTREQUEST_0_NAMEm - Denumire unitate.

L_PAYMENTREQUEST_0_DESCm - Descrierea unității.

L_PAYMENTREQUEST_0_AMTm - costul unitar.

L_PAYMENTREQUEST_0_QTYm - Numărul de unități comandate.

Indicele variabilei "m" definește unitatea ordinului (utilizați aceeași variabilă pentru toate părțile unității de comandă identice).

Există mulți alți parametri opționali care pot fi găsiți în documentația API.

Utilizăm funcția descrisă mai sus pentru a crea o interogare SetExpressCheckout:


2. Redirecționarea către PayPay prin intermediul cuponului de plată expres primit

Dacă cererea are succes, primim un cupon de plată în parametrul TOKEN.


Acum, utilizatorul trebuie să treacă prin procesul de plată pe site-ul PayPal. Când confirmă sau anulează plata, acesta va fi returnat la unul dintre adresele URL pe care le-am indicat în cerere.

3. Finalizarea tranzacției

Să presupunem că un utilizator confirmă o tranzacție, atunci el nu va fi redirecționat către site prin intermediul PayPal. Pe această bază, trebuie să aplicăm două metode importante API:
DoExpressCheckoutPayment va finaliza tranzacția, dar înainte de aceasta trebuie să obținem informații suplimentare despre cumpărător folosind GetExpressCheckoutDetails.

PayPal va redirecționa utilizatorul înapoi la pagina de achiziție cu un cupon de plată care va apela aceste metode. Biletul va fi disponibil în parametrii de solicitare a adresei URL prin parametrul token. Vom verifica disponibilitatea acestuia în adresa URL pentru confirmare și apoi vom trimite cererile noastre API dacă aceasta este detectată.

Metoda GetExpressCheckoutDetails necesită doar o plată de plată.
DoExpressCheckoutPayment necesită câțiva parametri suplimentari:

Plata directă API (plăți directe) vă permite să vă plătiți direct prin site-ul sau aplicația dvs., ceea ce vă oferă un control complet asupra procesului de plată. PayPal încearcă să forțeze utilizatorilor să se înregistreze la PayPal, care este de înțeles, dar este în contradicție cu interesele noastre, care implică procesul de verificare mai ușor și simplu pentru cumpărători. Din acest motiv, preferăm controlul complet al procesului de plată, ceea ce ne oferă mai multe oportunități de optimizare și de creștere a vânzărilor.


Aici procesul este un pic mai ușor decât în ​​cazul plăților expres, deoarece toate comunicațiile se realizează în site-ul, și trebuie să facem doar o singură solicitare API pentru a pune în aplicare procedura standard de plată: DoDirectPayment.

Parametrii de bază ai DirectPayment:

Informații despre cartela de plastic:

CREDITCARDTYPE - tip de card plastic (credit) (Visa, MasterCard, etc.). Pentru o listă completă a cardurilor acceptate, consultați documentația API.

ACCT este numărul plăcii de plastic. Acest parametru trebuie să corespundă formatului exact al numărului unui anumit tip de card.

EXPDATE - data de expirare a cardului în formatul MMYYYY (cu alte cuvinte, două cifre ale lunii, 4 cifre ale anului într-o singură linie).

CVV2 este valoarea confirmării cardului. Cod de securitate.

FIRSTNAME, LASTNAME - Numele și prenumele plătitorului respectiv (în câmpuri separate). De asemenea, puteți introduce un parametru de e-mail, dar acest lucru nu este atât de important.

CITY, STATE, COUNTRYCODE, ZIP - orașul, statul și codul țării (în două litere), precum și indexul. Sunt necesare toate câmpurile.

Parametrii detaliile de plată sunt similare cu cele ale plăților exprese, cu excepția unor diferențe minore în numele (AMT. ITEMAMT. CURRENCYCODE. SHIPPINGAMT. TAXAMT și DESC), precum și lipsa de PAYMENTREQUEST_0_ prefix. Pentru informații detaliate, consultați documentația API sau secțiunea anterioară a articolului.

Trimiterea unei solicitări folosind funcția noastră este foarte asemănătoare cu GetExpressCheckoutToken. Executăm toți parametrii din funcția de interogare, ca mai înainte; metoda trebuie să fie setată la DoDirectPayment.


Există mulți parametri, dar toate sunt foarte simple.

Dacă am trăi într-un basm, acest articol nu ar fi deloc în articol. În realitate, veți face referire la secțiuni similare în aproape orice caz. PayPal poate eșua tranzacția din mai multe motive, și nu în toate cazurile, veți putea face față situației.

Variabila $ răspuns. pe care am primit-o din funcția paypalApiRequest (). poate conține o valoare diferită de valoarea "Succes" din parametrul ACK. Valoarea poate fi:

Succesul - indică funcționarea reușită.

SuccessWithWarning - indică o funcționare reușită, precum și faptul că unele dintre datele primite trebuie rechetate.

Eroare - indică faptul că operația a eșuat și răspunsul conține unul sau mai multe mesaje de eroare.

FailureWithWarning - indică faptul că operația a eșuat, iar mesajele recepționate ca răspuns trebuie verificate.

Ca rezultat, avem 2 statute de succes și 2 stări de eșec. Codul de mai sus testează numai valoarea de succes Succes. Dar o putem schimba și, de asemenea, o putem transmite la verificarea SuccessWithWarning. Și rețineți că trebuie să aflăm ce este mesajul de avertizare. În scenariul tradițional, se întâmplă că o plată directă a fost efectuată cu succes, dar există unele probleme cu cardul de credit.

Erori primite ca raspuns de la PayPal, sunt 4 tipuri:

L_ERRORCODE0 - codul de eroare numeric, prin care se poate determina tipul de eroare prin consultarea listei de erori în PayPal (nu atât de mult).

L_SHORTMESSAGE0 - un mesaj de eroare scurt cu o descriere a problemei.

L_LONGMESSAGE0 - un mesaj de eroare mai detaliat cu o descriere a problemei.

L_SEVERITYCODE0 - cod greșeli „grave“ (nu am găsit nici o documentație desfășurată în acest sens, așa că părea să ne că elementul nu este la fel de important).

0 în acești parametri este numărul de mesaje de eroare diferite (1. 2 și așa mai departe)

Să facem cunoștință cu cele mai frecvente greșeli pe care le-ați putea întâlni:

81 *** este parametrul lipsă. Nu există multe astfel de erori și toate încep cu 81. Fiecare este responsabil pentru un parametru separat revendicat care nu se află în interogare.

104 ** este un argument nevalid. Aceasta indică faptul că unul dintre parametrii acceptat este indicat de o valoare nevalidă. Fiecare argument are o eroare separată; fiecare dintre eroarea începe cu 104. Cele mai frecvente - 10413. Aceasta înseamnă că costul total al coșului de mărfuri nu corespunde numărului de unități, în ordine (cu alte cuvinte, o situație în care costul total nu se potrivește cu numărul de unități în ordinea + transport, taxe și alte suprataxe pentru a preț (valoarea totală a parametrului AMT)).

Cum să evitați aceste erori în practică?

În cele mai multe cazuri, vă sfătuim să faceți următoarele:

1. Ajustați lista albă de erori pe care le pot arăta în mod liber utilizatorii (de exemplu, în cazul în care utilizatorul a uitat să introduceți detaliile cardului de credit sau data expirării valabilității acesteia);

2. Verificați codul de răspuns al matricei create cu lista albă;

3. Dacă mesajul de eroare nu este în lista albă, afișați un mesaj abstract cum ar fi "A apărut o eroare în timpul tranzacției. Încercați din nou în câteva minute. "

În cazul în care erorile nu sunt incluse în lista albă, recomandăm în continuare să le înscrie într-un fișier jurnal pe server, și trimite e-mail la administrator cu detalii complete. De fapt, păstrarea unui jurnal de solicitări și răspunsuri PayPal - aceasta este o idee grozavă, indiferent dacă vor exista erori sau nu. La urma urmei, în acest fel puteți monitoriza performanța sistemului.

Sunteți gata să începeți să lucrați cu API-ul din PayPal?

În articolul nostru de astăzi, v-am povestit despre cele două metode de API cele mai populare și, de asemenea, am prezentat câteva exemple de erori și cum să le gestionăm. Pentru un bun început, acest lucru ar trebui să fie suficient. Acum puteți începe să vă gândiți la utilizarea celui mai popular sistem de plată din lume.







Trimiteți-le prietenilor: