Ñêðèïò ïðèåìà-îòïðàâêè Èíòåðíåò-ïëàòåæåé
Àâòîð: | Èâàí Êîðæàâèí |
email: | korjavin@yandex.ru |
Âî âðåìÿ âçðûâíîãî ðîñòà èíòåðíåò-òîðãîâëè, ïðîãðàììèñòàì èíòåðíåò ìàãàçèíîâ, ÷àñòî ñòàâÿò çàäà÷è îðãàíèçàöèè ïðèåìà ïëàòåæåé îíëàéí.  ýòîé ñòàòüå ìû ðàçáåðåì îäèí èç ñïîñîáîâ îòïðàâêè êëèåíòà ñàéòà, íà ïëàòåæíóþ ñèñòåìó ñ ñôîðìèðîâàííûì çàêàçîì.
Èñõîäíûå äàííûå
- Ïëàòåæíàÿ ñèñòåìà: Moneybookers - ýëåêòðîííàÿ ïëàò¸æíàÿ ñèñòåìà, ïîçâîëÿþùàÿ ïîñûëàòü è ïîëó÷àòü äåíüãè. Ñ 2011 ãîäà Moneybookers ðàáîòàåò ïîä ìàðêîé Skrill. Îäíà èç íåñêîëüêèõ ñèñòåì îáñëóæèâàíèÿ îïëàòû, êîòîðóþ ìîãóò ïðåäëàãàòü ïðîäàâöû íà eBay, òàêæå ðàñïðîñòðàíåíà â ðàáîòå ôðèëàíñåðîâ.
- ßçûê ïðîãðàììèðîâàíèÿ: php
- Óñëîâèÿ ôîðìèðîâàíèÿ çàêàçà: Äîãîâîðèìñÿ, ÷òî ìû ôèêñèðóåì ñóììó íà êîòîðóþ ïîëüçîâàòåëü ìîæåò ñäåëàòü ïåðåâîä. Ýòî ðàñïðîñòðàíåííûé ñöåíàðèé äëÿ èíòåðíåò ìàãàçèíîâ, âåäü öåíà òîâàðà èëè ñóììà êîðçèíû óæå èçâåñòíà, è äîïîëíèòåëüíî ïîêàæåì - êàêèå ìåðû ìû ìîæåì ïðåäïðèíÿòü, çàùèòèâøèñü îò ïîäìåíû ýòîé ñóììû çëîóìûøëåííèêîì. Äàäèì âîçìîæíîñòü ïîëüçîâàòåëþ îñòàâèòü íàì ïðîèçâîëüíûé êîììåíòàðèé ê îïëàòå.
Âûáîð ñõåìû âçàèìîäåéñòâèÿ
Ïåðåäà÷à äàííûõ ìåæäó íàøèì ñàéòîì è ïëàòåæíîé ñèñòåìà Moneybookers (è áîëüøèíñòâîì äðóãèõ ñèñòåì) ìîæåò ïðîèñõîäèòü íåñêîëüêèìè ïóòÿìè.
1. Îòïðàâêà ÷åðåç áðàóçåð êëèåíòà, íàçîâåì ýòî c2s (client to server), êîãäà ìû ôîðìèðóåì âñå òðåáóåìûå ïëàòåæíîé ñèñòåìîé ïîëÿ, è îòïðàâëÿåì èõ ðåäèðåêòîì èëè http post/get çàïðîñîì ÷åðåç áðàóçåð êëèåíòà íà èíòåðôåéñ ïëàòåæíîé ñèñòåìû.
Ýòîò ñïîñîá î÷åíü ïðîñò äëÿ ðåàëèçàöèè, ìîæíî îáîéòèñü îäíîé html ôîðìîé, êîòîðàÿ ñîáåðåò è îòïðàâèò äàííûå. Íî â òàêîì ñëó÷àå, ìû íå ìîæåì áûòü óâåðåíû, ÷òî äàííûå äîéäóò äî ïëàòåæíîé ñèñòåìû â íåèçìåííîì ñîñòîÿíèè. Åñëè êëèåíò-çëîóìûøëåííèê çàõî÷åò, îí ñìîæåò ïîäìåíèòü, ê ïðèìåðó, ñóììó ïëàòåæà.
Äëÿ áîðüáû ñ ïîäìåíîé, ñóùåñòâóåò ñïîñîá "ïîäïèñè" îòïðàâëÿåìûõ äàííûõ.
Êàê âàðèàíò, íàø èíòåðíåò ìàãàçèí è ïëàòåæíàÿ ñèñòåìà, çàðàíåå, íà ýòàïå ðåãèñòðàöèè äîãîâîðà, îáìåíÿëèñü íåêèì ñåêðåòíûì êëþ÷îì, è àëãîðèòìîì ôîðìèðîâàíèÿ ïîäïèñè. Íàïðèìåð,
Ïîäïèñü = md5( ñåêðåòíûé êëþ÷ + ñóììà ïëàòåæà + íîìåð çàêàçà )
Òîãäà ïðè ôîðìèðîâàíèè ïîëåé äëÿ îòïðàâêè íà îïëàòó, ìû ìîæåì ðàññ÷èòàòü ýòó ïîäïèñü, è äîáàâèòü åå ê çàïðîñó â áðàóçåð êëèåíòà.
Ýòî óñëîæíÿåò ñõåìó, ìû óæå íå ìîæåì îòïðàâèòü êëèåíòà íà ïðÿìóþ ñ html ôîðìû íà ïëàòåæíóþ ñèñòåìó, ìû äîëæíû ïîëó÷èòü ýòè äàííûå, ñôîðìèðîâàòü ïîäïèñü îòâåò è ïåðåäàòü êëèåíòó äëÿ ïåðåõîäà.
Îáðàòèòå âíèìàíèå, ÷òî íè ïðè êàêèõ óñëîâèÿõ ìû íå äîëæíû ïåðåäàâàòü ñåêðåòíûé êëþ÷ êóäà ëèáî çà ïðåäåëû íàøåãî ñåðâåðíîãî êîäà.
Áîëüøîé îøèáêîé áóäåò ïåðåäàòü åãî, íàïðèìåð, ñêðûòûì ïàðàìåòðîì â ôîðìå, è ïîïûòàòüñÿ ñäåëàòü ïîäïèñü ñ ïîìîùüþ java script êîäà âûïîëíÿåìîãî â êëèåíòñêîì áðàóçåðå. Ïðè òàêîì ïîäõîäå, è êëþ÷, è àëãîðèòì ñòàíåò äîñòóïåí çëîóìûøëåííèêó ò.å. ñêîìïðîìåòèðîâàí.
2. Ðàçäåëåíèå çàïðîñà íà äâå ÷àñòè, íàçîâåì ýòîò ñïîñîá s2s (server to server), â ýòîì ñëó÷àå ìû îòïðàâëÿåì ñåêðåòíûå äàííûå ìåæäó ñâîèì ñåðâåðîì è èíòåðôåéñîì ïëàòåæíîé ñèñòåìû íàïðÿìóþ, ïëàòåæíàÿ ñèñòåìà ðåãèñòðèðóåò ýòó îòïðàâêó, ïðèñâàèâàåò åé êîä (ticket) è óæå åãî ìû ïåðåäàåì êëèåíòó.
Êîãäà êëèåíò îáðàòèòñÿ â ïëàòåæíóþ ñèñòåìó, è ïðåäúÿâèò åé êîä, ïëàòåæíàÿ ñèñòåìà "óçíàåò" åãî, è ïðèìåò ïëàòåæ ïî óæå çàïîëíåííûì äàííûì.
Èç ïëþñîâ ýòîãî ñïîñîáà ñðàçó æå ìîæíî îòìåòèòü, ÷òî ñåêðåòíûå äàííûå íå ïîïàäàþò íà êîìïüþòåð êëèåíòà, è ïîýòîìó íå ìîãóò áûòü ïîääåëàíû. Âñÿ èíôîðìàöèÿ, êîòîðàÿ äîñòóïíà çëîóìûøëåííèêó - ýòî êîä ñåññèè, ïîäìåíÿòü êîòîðûé áåññìûñëåííî. Äàæå åñëè îí óãàäàåò, êàêîé ëèáî äðóãîé êîä ñåññèé îí ïðîñòî îïëàòèò ÷óæîé çàêàç.
Âòîðûì ïëþñîì, ñëåäóåò îòìåòèòü, ÷òî ìû íå ïåðåäàåì ëèøíèõ äàííûõ â áðàóçåð êëèåíòó, óìåíüøàåì íåíóæíûé îáìåí òðàôèêîì, è íå çàâèñèì îò íàñòðîåê êëèåíòñêîãî áðàóçåðà.
 ýòîé ñòàòüå, ÿ ïîêàæó, êàê ðåàëèçîâàòü âòîðîé ñïîñîá - s2s. Ñîâåòóþ âàì èñïîëüçîâàòü åãî.
Ôîðìà îïëàòû
Ïóñòü, íàø ïîëüçîâàòåëü óæå èìååò íåêóþ ñôîðìèðîâàííóþ êîðçèíó â íàøåì èíòåðíåò ìàãàçèíå.
Òàêèì îáðàçîì, ìû çíàåì ñóììó, âàëþòó, è e-mail ïîëüçîâàòåëÿ.
Ïîêàæåì åìó html ôîðìó, ãäå îí ìîæåò îñòàâèòü ïðîèçâîëüíûé êîììåíòàðèé (íàïðèìåð, î ïðåäïî÷èòàåìîì ñïîñîáå äîñòàâêè) è ñâîé e-mail, êóäà ìû áóäåì óâåäîìëÿòü åãî î ñîñòîÿíèè åãî çàêàçà.
Îáðàòèòå, âíèìàíèå, ÷òî ìû âûâîäèì ïîëüçîâàòåëþ äàííûå î åãî çàêàçå, íîìåð è ñóììó çàêàçà, íî íå èñïîëüçóåì èõ â ôîðìå.
 íàøåì êîíòðîëëåðå, ôîðìèðóþùåì çàïðîñ íà ïëàòåæíóþ ñèñòåìó, ìû ñíîâà ïîëó÷èì èõ èç áàçû äàííûõ íàøåãî ìàãàçèíà, òåì ñàìûì èçáåæàâ âîçìîæíîñòè ïîäìåíû.
Ïðîâåðêó äàííûõ ôîðìû ÿ îñòàâëÿþ çà ðàìêàìè ýòîé ñòàòüè, ñ÷èòàåì, ÷òî îíà îáÿçàòåëüíî ïðîâåðÿåòñÿ.
Îáðàáîòêà äàííûõ è îòïðàâêà çàïðîñà s2s
Êîä íàøåãî êîíòðîëëåðà, ïîëó÷àþùåãî äàííûå îò ôîðìû ïîëüçîâàòåëÿ:
Äëÿ ïðîñòîòû îïðåäåëèì íóæíûå íàì êîíñòàíòû ïðÿìî â êîíòðîëëåðå.
Ðàçóìååòñÿ, ÷òî â ðåàëüíîì ïðîåêòå ëó÷øå ñäåëàòü îòäåëüíûé ôàéë ñ íàñòðîéêàìè.
Ôîðìèðóåì äàííûå äëÿ çàïðîñà:
Òàê êàê íàì íóæåí post çàïðîñ, óêàæåì ýòî â îïöèÿõ çàïðîñà:
Ñîçäàäèì êîíòåêñò çàïðîñà , è îòïðàâèì åãî íà ïëàòåæíóþ ñèñòåìó
 ïåðåìåííîé $result, ó íàñ ëèáî 32 ñèìâîëüíûé êîä çàðåãèñòðèðîâàííîé îïåðàöèè îïëàòû, èëè äëèííîå ñîîáùåíèå î îøèáêå, â ôîðìàòå html
Åñëè æå äëèíà ñòðîêè $result 32 ñèìâîëà, çíà÷èò, ó íàñ åñòü êîä îïåðàöèè, è ìû äîëæíû ïåðåíàïðàâèòü ïîëüçîâàòåëÿ íà ïëàòåæíóþ ñèñòåìó ñ ýòèì êîäîì.
Ïåðåéäÿ ïî ýòîé ññûëêå àâòîìàòè÷åñêè èëè â ðó÷íóþ, ïîëüçîâàòåëü óâèäèò íà ñàéòå moneybookers çàïîëíåííóþ ôîðìó ñ äàííûìè ïëàòåæà, è ñìîæåò îïëàòèòü ñâîé çàêàç îäíèì èç äîñòóïíûõ åìó ñïîñîáîâ.
 çàâèñèìîñòè îò óñïåøíîñòè îïëàòû, ñåðâåð ïåðåíàïðàâèò åãî îáðàòíî ê íàì íà ñàéò íà RETURN_URL èëè CANCEL_URL êîòîðûå ìû óêàçàëè.
Òàêæå ìû ïîëó÷èì e-mail îò ïëàòåæíîé ñèñòåìû î îïëàòå ýòîãî çàêàçà, ñ óêàçàíèåì ïåðåäàííûõ ïîëåé, ñóììû, íîìåðà çàêàçà, êîììåíòàðèÿ è ïðî÷èì.
 ñëåäóþùåé ñòàòüå ìû ðàçáåðåì ñïîñîá àâòîìàòè÷åñêîãî ïîäòâåðæäåíèÿ îïëàòû, è óñòàíîâêè ñòàòóñà çàêàçà.