Răspuns scurt: Aplicația sau site-ul web deschide o adresă URL payment://, Payment for Stripe preia plata, apoi deschide adresa URL de apel invers cu rezultatul. Fără SDK. Nicio funcționare pe server. Funcționează la fel pe iPhone și Android, cu câteva diferențe menționate mai jos.
Referința completă se găsește la paymentforstripe.com/api.
Cum funcționează
- Aplicația ta deschide o adresă URL
payment://cu parametri. - Payment for Stripe se deschide și configurează vânzarea. Comerciantul preia plata cu un cititor, Tap to Pay sau cu un card introdus la mașină.
- Când este gata, aplicația deschide adresa URL
callback, rezultatul fiind adăugat ca parametri de interogare.
Comerciantul trebuie să fie conectat. Dacă un link sosește în timp ce o altă plată este în curs, aplicația îl refuză și apelul dvs. de retur primește error=charge_in_progress.
Creați o taxă: plată://nou
O plată unică pentru o sumă stabilită de dumneavoastră.
| Nume | Tip | Necesar | Descriere |
|---|---|---|---|
amount
|
întreg | Da | Sumă în cea mai mică unitate a monedei, mai mare decât 0. 1000 = 10,00 USD. |
currency
|
şir | Nu | Cod ISO din trei litere, cum ar usd sau eur. Dacă îl omiteți, aplicația va folosi moneda pe care este deja setată. |
description
|
şir | Nu | Descrierea taxei. Codificați-o prin URL. |
customer
|
şir | Nu | ID-ul clientului Stripe existent ( cus_…). customer_id funcționează și el. Când este setat, email și name sunt ignorate. |
email
|
şir | Nu | Adresă de e-mail a clientului. Creează un client nou. |
name
|
şir | Nu | Numele clientului. Codificare URL. Creează un client nou. |
metadata
|
şir | Nu | Obiect JSON codificat URL cu perechi cheie-valoare, adăugat la plată. Se aplică limitele de metadate Stripe. |
callback
|
şir | Nu | URL de deschis la finalizarea vânzării. |
autoprocess
|
boolean | Nu | true ignoră tastatura și începe încărcarea imediat. Implicit false. |
auto_return
|
boolean | Nu | true deschide apelul invers imediat ce rezultatul este cunoscut. false implicit: apelul invers așteaptă până când comerciantul închide ecranul cu rezultate. |
payment://new?amount=2500¤cy=eur&description=Coffee%20and%20pastry payment://new?amount=3500&autoprocess=true&auto_return=true&callback=myapp://payment-complete O legătură cu o amount lipsă, zero sau non-numerică este ignorată.
Creați o factură din catalogul dvs.: payment://cart
Completează coșul cu prețuri din catalogul tău de produse Stripe. Comerciantul percepe apoi taxele ca de obicei, iar vânzarea este salvată în Stripe ca factură plătită cu articolele respective. Nu trimite o factură prin e-mail clientului tău.
| Nume | Tip | Necesar | Descriere |
|---|---|---|---|
prices
|
şir | Da | Perechi separate prin virgulă price_id:quantity, cum ar fi price_abc:2,price_xyz:1. line_items funcționează și el. |
coupon
|
şir | Nu | ID-ul cuponului Stripe pentru aplicare în coș. |
customer
|
şir | Nu | ID-ul clientului Stripe existent, customer_id, funcționează și el. |
email
|
şir | Nu | Adresă de e-mail a clientului. Creează un client nou. |
name
|
şir | Nu | Numele clientului. Codificați-l în URL. |
metadata
|
şir | Nu | Obiect JSON codificat URL cu perechi cheie-valoare. |
callback
|
şir | Nu | URL de deschis la finalizarea vânzării. |
autoprocess
|
boolean | Nu | true începe taxarea odată ce fiecare preț (și cupon) s-a încărcat. |
auto_return
|
boolean | Nu | La fel ca mai sus. Implicit, false. |
payment://cart?prices=price_coffee:2,price_muffin:1&email=customer@example.com Nu trimiteți amount cu prices. Totalul provine din prețuri, iar un link cu ambele este ignorat. Prețurile ascunse cu payment_hidden funcționează în continuare aici.
Plata unei facturi existente: payment://invoice
Colectează o plată în persoană pentru o factură Stripe deschisă. Suma, moneda, clientul și taxa provin toate din factură. În caz de succes, aplicația marchează factura ca fiind plătită. Funcționează pe iPhone și Android.
| Nume | Tip | Necesar | Descriere |
|---|---|---|---|
id
|
şir | Da | ID-ul facturii Stripe. Trebuie să înceapă cu in_. Trimiteți o factură deschisă. Pe iPhone, o schiță este finalizată mai întâi. Pe Android, o schiță este refuzată cu error=invoice_state_changed. |
metadata
|
şir | Nu | Obiect JSON codificat URL, adăugat la PaymentIntent. |
callback
|
şir | Nu | URL de deschis la finalizarea vânzării. Obține invoice_id și payment_intent_id în caz de succes. |
autoprocess
|
boolean | Nu | true începe taxarea după ce verificările facturilor sunt trecute, numai atunci când este conectat un cititor de carduri. |
auto_return
|
boolean | Nu | La fel ca mai sus. Implicit, false. |
payment://invoice?id=in_1ABC123xyz&autoprocess=true&callback=myapp://invoice-paid Factura setează vânzarea, așadar oricare dintre amount, currency, customer, customer_id, email, name, description, coupon, prices sau line_items primește linkul refuzat cu error=invoice_invalid_param. Facturile plătite, nule, neîncasabile, cu valoarea de 0 USD, legate de un abonament sau setate să debiteze o metodă de plată implicită sunt, de asemenea, refuzate, fiecare cu propria eroare invoice_….
Apelul invers
Aplicația adaugă următoarele la adresa URL de apel invers:
| Nume | Tip | Trimis | Descriere |
|---|---|---|---|
status
|
şir | Întotdeauna | success, error sau cancelled. |
charge_id
|
şir | La succes | ID-ul plății. Pe iPhone este ID-ul debitării Stripe ( ch_…). Pe Android este ID-ul PaymentIntent ( pi_…). |
stripe_charge_id
|
şir | Numai pentru Android | Taxa Stripe ( ch_…). |
payment_intent_id
|
şir | La succes | Intenția de plată. iPhone o trimite doar pentru payment://invoice. Android o trimite pentru fiecare plată cu cardul. |
invoice_id
|
şir | Linkuri către facturi | Factura plătită, pentru payment://invoice. |
amount
|
întreg | La succes | Suma percepută, în cea mai mică unitate. |
currency
|
şir | La succes | Cod ISO cu litere mici. |
error
|
şir | În caz de eroare | Un cod scurt precum charge_in_progress sau invoice_already_paid sau un mesaj lizibil pentru un card respins. |
myapp://payment-complete?status=success&charge_id=ch_3Qx…&success=true&amount=3500¤cy=usd&chargeId=ch_3Qx… Aveți nevoie de același ID pe ambele platforme? Citiți mai întâi stripe_charge_id, apoi reveniți la charge_id.
Pentru integrările mai vechi, aplicația trimite și success=true, chargeId, cancelled=true și error[message]. Noul cod ar trebui să citească status.
O anulare deschide imediat apelul invers. Succesul sau eroarea unei plăți așteaptă ca comerciantul să închidă ecranul cu rezultate, cu excepția cazului în care transmiteți auto_return=true. Pe iPhone, o vânzare cu numerar nu deschide niciodată apelul invers, deoarece nu s-a perceput nimic.
Codificare URL
- Codificați fiecare valoare care conține spații sau simboluri. Spațiile devin
%20,{și}devin%7B, iar%7D,"devine%22,:devine%3A. - Dacă adresa URL de apel invers are propriul șir de interogare, codificați întreaga apel invers astfel încât să fie
&să nu divizeze linkulpayment://. - Virgulele și două punctele din
pricespot rămâne neschimbate.
Metadatele {"order_id":"1234","location":"Store A"} devin:
payment://new?amount=10000&description=Invoice%20%231234&metadata=%7B%22order_id%22%3A%221234%22%2C%22location%22%3A%22Store%20A%22%7D Și formularul mai vechi metadata[order_id]=1234 funcționează.