Tækni
BillingMeld: hvers vegna er server að staðfesta innkaup frekar en forritið
BillingMeld verður miðpunktur upplýsinga um innkaup og áskriftir. Hann staðfestir aðgerðir í App Store og Google Play, fylgist með breytingum á stöðu þeirra, og tengdir þjónustur vinna aðeins með staðfestingarástand BillingMeld.
Innkaup innan farsímaforrits virðast oft vera einföld fyrir notandann. Hann ýtir á hnapp, staðfestir greiðslu, fær aðgang að eiginleika eða áskrift — og treystir því að allt muni virka sjálfvirkt.
Hins vegar fer þróunaraðili með mun flóknari ferli bak við þessa hnappa. Hann þarf að staðfesta innkaupið sjálft, fylgjast með framlengingar, uppsögnum, endurgreiðslum, viðbrögðum við aðgerðum, breytingum á tækjum og mun á milli Apple og Google verslana.
Aðalvandamálið kemur upp þegar serverinn byrjar að telja móttökuforritið vera sannleiksgreinupptal.
Ef forritið segir: „Innkaupið er fullgilt,“ þá opnar serverinn aðgang og vinnur aðallega með það ástand sem hann fékk einu sinni. En lífshlaup innkaupa lýkur ekki þar.
Á áskriftir getur verið framlengt, sjálfvirk framlenging getur verið slökkt, greiðsla getur verið endurgreidd, og aðgerðin sjálf getur verið afturkölluð af verslun.
Þess vegna staðfestir BillingMeld innkaup ekki af forritinu, heldur serverinn.
Client informerar, en ekki að fullu ákvörða
Í uppbyggingu BillingMeld er ekki mobile forritið aðal heimild um innkaup.
Notandinn getur sent gögn um aðgerðina, en það er aðeins grunneining fyrir staðfestingu. Lokastjórn fær serverinn, sem staðfestir upplýsingarnar í gegnum Apple eða Google innviði.
Þetta er grundvallarmunur.
Forritið á símanum getur verið að vinna með gamalt ástand, ekki fengið síðasta breytingu á réttum tíma, eða sent gögn sem eru ekki í samræmi við raunverulegt innkaup.
Auk þess á notandinn ekki að hafa val um að ákvörða aðgang eingöngu á grundvelli sínar eigin ákvörðunar.
BillingMeld getur, til dæmis, staðfest:
Athygli, hvort innkaupið sé raunverulega til staðar;
Hvort það eigi við um rétt forrit og vöru;
Hvort greitt tímabil sé útilokað;
Að ný framlenging hafi átt sér stað;
Hvort sjálfvirk framlenging sé slökkt;
Að endurgreiðsla hafi verið gerð;
Að aðgerð hafi verið afturkölluð;
Að greiðslutímabil sé lokið.
Þannig verður tilkynning notandans ekki sönnun um innkaup, heldur ástæða til að kanna raunverulegt ástand.
Einn sannleikur fyrir servera
Þar sem þjónustur eru tengdar þarf ekki að framkvæma fullt samræmi við Apple og Google samhliða.
Þeir beita BillingMeld og fá ástand sem hefur verið normalíserað.
Til dæmis: aðgangur er virkur, greiðslutímabili lokið, framlenging staðfest, sjálfvirk framlenging slökkt eða innkaup afturkallað.
Þetta gerir kleift að skilyrðislega deila ábyrgð.
Apple og Google eru heimildir fyrir stöðu innkaupa hjá verslunum. BillingMeld staðfestir gögnin, fær þau í sameignarmódel og geymir ástandið. Endanlega ákvarðanir um aðgang taka þjónustur út frá stöðu BillingMeld.
Fyrir þjónustur er þetta ein samningur, í stað margra óháðra innri samninga. Það þurfa ekki að vera sérhvern góður kóði í hverri þjónustu fyrir mismunandi verslanir. Þetta minnkar tækniendurtekningu og hætta á því að mismunandi forrit skilji sat sama greiðsluregluna á ólíkan hátt.
Af hverju á ekki að treysta fullkomlega client
Client-ið er keyrt á tæki notanda.
Það getur verið lokað, endurræst, endurheimt úr öryggisafriti, uppfært síðar eða keyrt á annarri tækju. Það getur unnið með eldri gögn eða ekki fengið viðbrögð sem gerðust eftir fyrstu aðgerð.
Jafnvel án innskots notandans er client léleg heimild fyrir endanlegt ástand áskriftar.
Til dæmis, notandi gerði áskrift og fékk aðgang. Seinna var tilkynnt um endurgreiðslu eða verslun afturkallaði aðgerðina.
Ef serverinn þekkir eingöngu upprunalega tilkynningu notandans mun hann halda að innkaupið sé enn í gildi.
Í öðrum tilvikum getur notandinn slökkt á sjálfvirkri framlengingu. Þá ætti greitt tímabil að vera enn í gildi þar til það rennur út.
Ef kerfið byggist eingöngu á einfaldri stöðu, „er/er ekki áskrift“, þá getur það hæglega lokað aðgangi of snemma eða veitt honum eftir að réttur hefur rofist.
BillingMeld byggir á annarri hugmynd: notandinn staðfestir ekki réttar sínar. Hann tilkynnir atburð, en serverinn ákveður raunverulega stöðu innkaupsins.
Innkaup – ekki eitt atvik
Einn helsti misskilningurinn í innkaupakerfi er að líta á innkaup sem eitt atvik.
Raunverulega hefur það líftíma.
Fyrst kemur aðgerð, síðan er það staðfest í verslun. Þá hefst greitt tímabil. Síðan getur það verið framlengt aftur.
Notandi getur slökkt á sjálfvirkri framlengingu en haldið áfram að nota áskriftina þar til tímabilinu lýkur.
Greiðsla getur mistekist við næstu framlengingu.
Endurgreiðsla getur verið framkvæmd.
Í einstaka tilvikum getur innkaup verið afturkallað.
Þess vegna er ekki nóg að segja aðeins: „þetta innkaup var á sínum tíma“. Stærra mikilvægi er að vita hvað er að gerast núna.
Endurtekning á endurgreiðslu er ekki tekin sem atlæti
Sérstaklega er sjáanlegt þegar kemur að endurgreiðslum og afturköllum.
Fyrsta innkaupið gæti verið fullkomlega rétt, notandinn greiddi og fékk aðgang.
En síðan breytist ástandið.
Ef BillingMeld fær upplýsingar um breytingu, uppfærir hún stöðu innkaupsins og, ef þörf krefur, staðfestir einnig í verslun.
Þannig vinnur þjónustan með nýja stöðu.
Án þess að treysta ónúnum tilteknum staðfestingum frá notanda.
Ef verslun segir að rétturinn sé ekki lengur í gildi, þá endurspeglar BillingMeld það í sínu ástandi.
Uppsögn áskriftar og aðgangsleysi – ekki það sama
Það er mikilvægt að viðurkenna mun á þessum tveimur.
Ef notandi slakar á sjálfvirkri framlengingu, þýðir það ekki endilega að aðgangur sé aflýstur strax. Sú þessi staða gildir áfram þar til tímabilið lýkur.
BillingMeld þarf að geyma upplýsingarnar um að framlenging sé slökkt, en líka skilja hvenær greitt tímabil rennur út. Aðgangur hættir þá þegar tímabilinu lýkur, ef ekkert nýtt staðfestingartímabil verður.
Þetta sýnir hvers vegna það er ekki nóg að nota einfalt boolean-gefandi „subscription=true“ fyrir kerfið. Ástand áskriftar er alltaf tengt tíma og atburðum í lífshlaupi hennar.
Framlenging er önnur staðfesting
Askrift lýkur ekki eftir fyrstu greiðslu. Þess vegna þarf serverinn að vita hvort framlenging hafi átt sér stað og hvort nýtt greiðslu tímabil er staðfest af verslun.
BillingMeld fylgist með slíkum breytingum og uppfærir ástand áskriftarinnar.
Ef framlenging er staðfest, þá heldur rétturinn áfram.
Ef næsta innlögn er ekki gerð eða verslun staðfestir ekki framhald, ætti kerfið ekki að halda aðgangi sjálfvirkt áfram af því að það sé til staðar.
Þetta er skiljanlegt fyrir notandann: aðgangur er aðeins til staðar meðan greitt tímabil stendur.
Þetta kemur líka til móts við þróunaraðila, því að sama hugsunarháttur er notaður í öllum forritum, og þurfa ekki að endurreisa sama kerfið í hvert skipti.
Hvernig er venjulegt scenario
Notandi gerir áskrift í forriti.
Client fær upplýsingar um innkaup og sendir þau til BillingMeld. En þessi tilkynning er ekki endanlegt sannleikskort um innkaup.
BillingMeld staðfestir aðgerð í viðkomandi verslun.
Ef App Store eða Google Play staðfestir innkaupið og það stendur í samræmi við reglur vöru, þá geymir BillingMeld virkan rétt.
Eftir það veitir þjónustan notanda aðgang að greiðslumöguleikum.
Ástandið heldur áfram og lifir sitt eigið líf, óháð upprunalega tilkynningu notandans.
Ef áskriftin er framlengd, tekur BillingMeld mið af nýju greiðslutímabili.
Ef notandi slakar á sjálfvirkri framlengingu, heldur tímabil áfram þar til það lýkur.
Ef endurgreiðsla eða afturkallað verður, breytist ástandið aftur.
Þessi sambandaskipti sýna hvernig forritið stenst ekki þörf fyrir að halda eigin staðfestaraðila. Það vinnur með ástand, sem BillingMeld hefur þegar staðfest.
Hvað gerist þegar tækið breytist
Servermiðlun er sérstaklega gagnleg þegar notandi skipti um síma eða er að setja forrit aftur upp.
Réttur á innkaupum ætti ekki að vera bundinn því að forritið hafi horft á síðustu staðfestingu á gjörð.
Á sama hátt, ætti enduruppsetning forrits ekki að eyða réttindum notanda sem hafa verið staðfest.
Ef ástand innkaupa er á serveri og er tengt við til staðar stöðu í verslun, getur nýtt tæki fengið áreiðanlegar upplýsingar frá serveri.
Þetta er annar ástæða til að halda ekki huglægri lögun aðgangs bara innan klientins.
Hvað þetta gefur forriturum
Fyrir teymi sem gefur út fleiri en eitt app eða vinnur með iOS og Android, fer innkaup fljótlega að snúast um eitt innra kerfi.
Það þarf að taka tillit til:
mismunandi gagnasnið Apple og Google;
staðfestingar á upprunalegu innkaupi;
framlengingar áskrifta;
loka greitt tímabil;
slökkt á sjálfvirkri framlengingu;
endurgreiðslur;
aðgerðir sem eru afturkallaðar;
endursetningu apps;
breytingu tækis;
endurheimt innkaupa;
staða breytinga án þátttöku notanda.
BillingMeld sér um þessa vinnu sem aðskildan sérhæfðan lag. þjónustur vinna með hann samkvæmt einu samningi og þurfa ekki að túlka sérkenni hverrar verslunar sjálf.
Þetta minnkar endurtekningar í kóðanum og auk þess hættuna á því að mismunandi forrit á sama fyrirtæki skilji einn og sama greiðsluscenaríó með ólíkan hátt.
Áhersla er ekki á kvittun heldur á réttinn
Mesta áhuginn minn á þessari hugmynd er sú breyting á fjarðavísun, frá því að staðfesta innkaup sem atburð yfir í að stjórna raunverulegu ástandi.
Sagnfræðileg greiðslumikilskylding er ekki endilega sama og spurningin: „Hafa notandi rétt á greiðslu aðgöngum núna?“
Innkaupið gæti hafa verið staðfest fyrst, en núverandi tímabil lokið.
Ætti að virka sjálfvirkt framlenging en samt ekki vera í gildi áður en nýra staðfesting er komin.
Getur verið staðfest ný framlenging, endurgreiðsla eða aðgerð sem afturkallað er af verslun.
Þess vegna er kannski mikilvægar að framkvæma ekki „alveg lösen“ í innkaupum og halda á núverandi réttindum á þessari grundvallarstað við þetta ástand.
Samhliða, er þetta aukið kerfi, sem byggir á raunverulegri stöðu, ekki bara ketill sem segist „er/er ekki áskrift“.
Þetta er verkefni BillingMeld, sem miðlar og staðfestir núverandi réttindi notanda, þannig að önnur kerfi eigi alltaf nýjasta valid ástandið.
BillingMeld sem milligátur milli verslana og vörum
Eftir því aukast skýrar landamæri í hugmyndafræðinni. Annar helmingur er App Store og Google Play með sinn sniði, viðburðum, reglum og líftíma innkaupa. Hinn helmingurinn eru forrit og innri þjónustur, sem í meirihluta tilvika þurfa einfaldari ákvörðun: hvaða réttindi eru til staðar hjá notanda núna?
BillingMeld kemur inn með að taka við geymdum gögnum, staðfesta þau, samræma þau við sitt eigið model og leggja á borð fyrir útbúnaðinum niðurstöðuna sem hefur verið normalíserað. Þannig þarf enginn að hafa alveg nákvæma innra þekkingu á hverri verslun. Þetta lækkar flækjustig og líkur á misskilningi, þar sem mismunandi forrit geta lesið sama greiðslusamanburð með ólíkum hætti.
Hvað þetta skiptir máli fyrir notandann
Þægilegt er að bestu innkaupakerfin ættu að vera næstum óséð. Ef innkaupið er staðfest og tímabil virkar, þá ætti að vera aðgangur.
Ef notandi slakar á sjálfvirkri framlengingu, þá ætti ekki að fela aðgreiningu tímabilanna fyrr en næsta tímabil hefur runnið út.
Ef ný framlenging er staðfest, skal aðgangurinn halda áfram.
Efverslun staðfestir endurgreiðslu eða afturkall, þá skal kerfið leiðrétta réttindin í samræmi við það.
Þegar tæki er breytt eða forrit enduruppsett, ætti notandinn ekki að þurfa að sanna innkaup til annarra kerfa handvirkt.
Svara: Reglan er einföld: Client sendir tilkynningu, verslun er ytri heimild, BillingMeld staðfestir og normalíserar, og aðrir þjónustur taka ákvarðanir út frá staðfestu gögnunum.
Þess vegna er BillingMeld ekki bara enn eitt greiðslumódelið, heldur innra öryggissvæði milli mobile forrits, verslana Apple og Google og vara sem þurfa nákvæmar upplýsingar um réttindi notanda í hverri stundu.
Meira um verkefnið: billingmeld.de.