Þú vilt þjórfékrukku. Þú vilt ekki afhenda vettvangi 5 % af kvöldi götutónlistarmanns, og þú ræður fullkomlega við að tala við API. Spurningin er því ekki í hvaða þjórfékrukku á ég að skrá mig, heldur hversu mikið þarf ég í rauninni að smíða.
Minna en þú heldur. Á Stripe er virka svarið þrjú API-köll: enginn netþjónn, enginn bakendi, ekkert webhook-endapunkt. Restin af þessari færslu er nákvæmlega sú smíði — auk þeirra tveggja atriða sem allir klúðra.
Trikkið er Price af gerðinni „borgaðu það sem þú vilt“
Stripe er með verðlagningarham þar sem aðdáandinn slær sjálfur inn upphæðina. Hann heitir
pay what you want og er öll
eiginleikinn. Þú býrð til Product, hengir á það Price með
custom_unit_amount[enabled]=true, og ofan á það
Payment Link.
# 1. hluturinn sem þú "selur"
curl https://api.stripe.com/v1/products \
-u "$RK:" \
-d name="Tips — Mira" \
-d "metadata[managed_by]"=my-tip-jar
# 2. verðið sem aðdáandinn velur
curl https://api.stripe.com/v1/prices \
-u "$RK:" \
-d product=prod_... \
-d currency=eur \
-d "custom_unit_amount[enabled]"=true \
-d "custom_unit_amount[preset]"=500 \
-d "custom_unit_amount[minimum]"=200
# 3. síðan
curl https://api.stripe.com/v1/payment_links \
-u "$RK:" \
-d "line_items[0][price]"=price_... \
-d "line_items[0][quantity]"=1 \
-d submit_type=pay
Þriðja kallið skilar url. Sá URL er þjórfékrukkan þín. Þetta er síða sem Stripe hýsir, sem sagt
PCI-samhæfð án þess að þú hugsir um það, staðfærð, og hún sýnir Apple Pay eða Google Pay hverjum
þeim aðdáanda sem hefur þau uppsett í símanum —
kviklegar greiðsluleiðir
ákveða það fyrir þig eftir tæki og landi. Þú skrifaðir ekkert viðmót.
Kóðaðu URL-inn sem QR-kóða með hvaða safni sem er — þetta er bara strengur — prentaðu hann, límdu hann á kassann. Kóðinn rennur aldrei út og bendir ekki á neinn netþjón þinn, því þú átt engan.
Tveir stikar sem borgar sig að þekkja:
custom_unit_amount[preset]er upphæðin sem síðan opnast með.500þýðir að aðdáandinn sér 5,00 € þegar útfyllt og getur breytt því. Þessi tala gerir meira fyrir meðalþjórféð þitt en nokkuð annað á síðunni.custom_unit_amount[minimum]er gólf. Settu það. Ástæðan er í gjaldakaflanum hér að neðan og er ekki námundunarvilla.
Þú getur líka safnað nafni og skilaboðum. Payment Links taka allt að þrjú custom_fields — þannig færðu
„frá hverjum var þetta?“ á síðuna án þess að smíða eyðublað:
-d "custom_fields[0][key]"=nickname \
-d "custom_fields[0][type]"=text \
-d "custom_fields[0][label][type]"=custom \
-d "custom_fields[0][label][custom]"="Nafnið þitt eða viðurnefni" \
-d "custom_fields[0][optional]"=true
Stripe hefur kröfur um móttöku þjórfés og framlaga — lestu þær einu sinni. „Borgaðu það sem þú vilt“ verður ekki heldur sameinað öðrum line items, afsláttum eða endurteknum greiðslum. Fyrir þjórfékrukku bítur ekkert af því.
Þennan greinarmun borgar sig að hafa réttan. Stripe orðar það svona: þjórfé er gefið fyrir
vöru eða þjónustu sem þegar hefur verið veitt, en framlag verður að vera bundið
góðgerðartilgangi. Þú spilaðir settið; þjórféð borgar fyrir það. Þess vegna sendir kallið
hér að ofan líka submit_type=pay en ekki donate — donate myndi hýsa hlekkinn þinn á
donate.stripe.com og prenta Gefa á hnappinn. Það er annar bransi, og einn sem Stripe
skoðar mun harðar.
Lykillinn: gerðu ráð fyrir að hann leki — og gerðu það leiðinlegt
Ekki setja leynilykil (sk_live_…) í tæki sem stendur á sviði. Notaðu
takmarkaðan lykil (rk_live_…): þú velur heimild fyrir
hverja auðlind, og allt sem þú velur ekki stendur á None.
Fyrir smíðina hér að ofan er listinn allur fimm línur:
| Auðlind | Heimild | Til hvers |
|---|---|---|
| Products | Write | búa til Product |
| Prices | Write | búa til „borgaðu það sem þú vilt“-Price |
| Payment Links | Write | búa til hlekkinn |
| Checkout Sessions | Read | sjá þjórféð sem kom inn |
| Events | Read | beina streymið (næsti kafli) |
Allt annað — Balance, Payouts, Refunds, Customers, PaymentIntents, allt Connect — stendur áfram á None.
Gerðu nú æfinguna sem gerir þetta þess virði. Spjaldtölvunni þinni er stolið af varningsborðinu klukkan eitt um nótt. Hvað getur þjófurinn gert við lykilinn í lyklakippunni? Lesið þjórfésöguna þína og búið til fleiri þjórféhlekki á reikningnum þínum. Það er allur sprengiradíusinn. Hann sér ekki innstæðuna þína, getur ekki hrint af stað útborgun, getur ekki endurgreitt á kort sem hann stýrir, getur ekki lesið viðskiptavinalista. Þú afturkallar lykilinn úr símanum í leigubílnum heim og tækið slokknar. Ekkert af peningunum þínum hreyfðist.
Þetta ójafnvægi — skrifaðgangur að þjórfékrukkunni, núll aðgangur að peningunum — er eina ástæðan fyrir því að netþjónslaus hönnun með þínum eigin lykli er yfirhöfuð verjanleg. Hún er líka ástæðan fyrir því að „Login with Stripe“ er ekki svarið hér: OAuth krefst netþjóns í eigu forritarans til að geyma tókann þinn — og netþjónn er nákvæmlega það sem við erum ekki að smíða.
(Sérviska sem þú rekst á: heimildin Prices heitir innanhúss plan_write, þannig að villuboð Stripe nefna scope sem er
ekki til undir því nafni í stjórnborðinu. Það er Prices.)
Að lesa þjórfé inn án webhook
Hér hætta flestar leiðbeiningar, eða þær grípa til webhook — og hér er svið raunverulega frábrugðið vefforriti.
Webhook er innkomin HTTP-beiðni. Spjaldtölva bak við hljóðnemastatíf getur ekki tekið á móti slíkri. Hún hangir á gestaneti staðarins bak við NAT, hefur ekkert opinbert vistfang, ekkert TLS-vottorð — og hefur ekkert með það að gera. Ef þú velur webhook-leiðina þarftu að reisa netþjón sem grípur atburðina og sökkul sem ýtir þeim í tækið: bakendi, rekstrarbyrði, og staður þar sem nöfn aðdáenda þinna búa nú. Þú varst rétt í þessu að endurbyggja vettvanginn sem þú ætlaðir að forðast.
Togaðu því í stað þess að láta ýta þér. Endapunktur Stripe, List all events, er opinber, skjalfestur og skilar atburðum með þá nýjustu fyrst:
curl -G https://api.stripe.com/v1/events \
-u "$RK:" \
-d "types[]"=checkout.session.completed \
-d "types[]"=checkout.session.async_payment_succeeded \
-d ending_before=evt_SIDASTI_SEM_EG_SA \
-d limit=100
ending_before er öll hönnunin. Geymdu auðkenni nýjasta atburðarins sem þú vannst úr; hver fyrirspurn biður um allt sem
er strangt til tekið nýrra, og þú færir bendilinn. Engir tímastimplar, ekkert klukkurek, engin tvítekningarhreinsun eftir
upphæð. Í fyrstu fyrirspurn setts biður þú um limit=1 án bendils til að festa þig við það sem þegar er — annars spilarðu
þjórfé morgunsins aftur í hljóðprófinu.
Síaðu svo það sem kemur til baka. Báðar atburðategundirnar geta farið af stað fyrir eina greiðslu, svo hreinsaðu tvítekningar
eftir auðkenni Checkout Session. Athugaðu payment_status == "paid" — lokið lota er ekki endilega greidd. Og athugaðu að
payment_link passi við þinn hlekk, því /v1/events nær yfir allan reikninginn og réttir þér fúslega umferðina frá öllu
öðru sem sá Stripe-reikningur gerir.
Vertu heiðarlegur um málamiðlanirnar, því þær eru raunverulegar:
- Stripe mælir með webhooks. Fyrirspurnaraðferðin er ekki blessaða leiðin; hún er skjalfestur endapunktur notaður meðvitað. Skrifaðu það í README-skrána þína og haltu áfram.
- Atburðir ná 30 daga aftur. Orð Stripe sjálfs: „List events, going back up to 30 days.“ Þetta er beint streymi, ekki bókhaldið þitt. Bókhaldið þitt eru Checkout Sessions — og hið raunverulega er stjórnborð Stripe.
- Fylgstu með lestrarkvótanum. Allir horfa á mörkin á sekúndu (rate limits: 100 beiðnir/s í live) og enginn á hin: Stripe úthlutar um það bil 500 lestrarbeiðnum á hverja færslu yfir 30 daga rúllandi glugga, með gólfi upp á 10.000 lestra á mánuði. Spyrðu á 4 sekúndna fresti og þriggja tíma sett gerir ~2.700 lestra. Fjögur löng gigg í mánuði og þú ert á gólfinu. Þjórfé kaupir þér svigrúm um leið og það berst — en sá sem spyr á hverri sekúndu af því það virtist snarpara mun finna þakið. Fjórar sekúndur eru ekki löt tala; þær eru talan.
Svona lítur þetta út í hreinskilni: fyrirspurnir kosta þig nokkur þúsund GET og kaupa þér að eyða heilum bakenda.
Gjaldareikningurinn, gerður almennilega
Vettvangur sem auglýsir 0 % er ekki ókeypis — og þetta er það ekki heldur. Vinnslugjald Stripe sjálfs á við um hvert einasta þjórfé og Stripe rukkar þig beint. Í dag kostar venjulegt EES-kort samkvæmt evruverðskrá Stripe 1,5 % + 0,25 €. Premium EES-kort 1,9 % + 0,25 €, bresk kort 2,5 % + 0,25 €, og allt annað 3,25 % + 0,25 € auk 2 % ef skipta þarf gjaldmiðli. (Í Bandaríkjunum er það 2,9 % + 0,30 $, sem er verra af nákvæmlega þeirri ástæðu sem fylgir.)
Vandinn er ekki prósentan. Vandinn eru þessir tuttugu og fimm sent.
| Þjórfé | Stripe tekur | Listamaðurinn heldur | Raunveruleg skerðing |
|---|---|---|---|
| 2 € | 0,28 € | 1,72 € | 14,0 % |
| 5 € | 0,33 € | 4,67 € | 6,5 % |
| 10 € | 0,40 € | 9,60 € | 4,0 % |
| 20 € | 0,55 € | 19,45 € | 2,8 % |
| 50 € | 1,00 € | 49,00 € | 2,0 % |
Fast gjald er prósenta í dulargervi, og á litlum peningum rennur dulargervið af. Sömu 0,25 €, sem eru ósýnileg á 50 € þjórfé, éta áttunda part af 2 € þjórfé. Þjórfé er lítið að eðlisfari — það er einmitt það sem gerir það að þjórfé — svo þetta er ekki jaðartilvik, heldur miðgildistilvikið.
Þess vegna setur þú custom_unit_amount[minimum]. Einhvers staðar í kringum 2 € hættir færslan að borga sig; 0,50 € kortaþjórfé
kæmi inn sem 0,24 € og kostaði Stripe meira að færa en það er virði. Veldu gólfið þitt meðvitað í stað þess að uppgötva það í
fyrstu útborguninni.
Og taktu eftir hvað þetta gerir við samanburðinn sem þú byrjaðir á. Vettvangur sem tekur 0 % ofan á Stripe er að taka 0 % ofan á þetta. Þeirra 0 % eru raunveruleg — og þau eru 0 % af því sem greiðslumiðlarinn skildi eftir. Kortabraut engins er ókeypis: heiðarlega fullyrðingin er „engin skerðing umfram skerðingu greiðslumiðlarans“, og sá sem heldur fram meiru annaðhvort lýgur eða notar ekki kort.
Hvað þú hefur núna og hvað ekki
Þrjú API-köll og QR-kóði — og alvöru þjórfékrukka: hýst, PCI-samhæfð, Apple Pay, Google Pay, þjórfé sem lendir á þinni eigin Stripe-innstæðu eftir þinni eigin útborgunaráætlun, og enginn netþjónn á leiðinni. Fyrir marga er þetta einlæglega endirinn á verkefninu, og þér er velkomið að stoppa hér og gefa það út.
Það sem þú hefur ekki er svið. Þú hefur greiðslusíðu. Þar á milli standa leiðinlegu hlutirnir: fyrirspurnarlykkjan með bendli sínum
og bakslagi; skjár sem áhorfendur sjá, með markmiðinu og síðustu skilaboðunum; staður fyrir lykilinn sem heitir ekki localStorage;
læsing svo ókunnugur fikti ekki í spjaldtölvunni milli setta; og lagið með þúsund smáákvörðunum um hvað gerist þegar wifi staðarins
dettur út í miðju setti.
Það er einmitt það sem live.tips er — nákvæmlega þessi högun, fullkláruð, með MIT-leyfi.
Takmarkaði lykillinn með þessum fimm heimildum, bendilslykkjan á /v1/events, sköpun Product/Price/Payment Link — allt keyrandi í
tæki listamannsins, gegn hans eigin reikningi. Það er enginn live.tips-netþjónn á Stripe-leiðinni og engin live.tips-innstæða neins
staðar, sem við skrifuðum sérstaklega um í
hvernig live.tips fer með peninga.
Lestu kóðann, taktu þá hluta sem þú vilt, eða notaðu hann bara. Punkturinn í þessari færslu er sá að högunin er hvorki leyndarmál né erfið: Stripe hýsir þjórfékrukkuna þína ókeypis, og takmarkaður lykill auk fyrirspurnarlykkju er allt sem stendur á milli listamanns og hans eigin peninga. Okkur er meira í mun að þú vitir það en að þú skráir þig nokkurs staðar.