Ïðèíèìàåì ïëàòåæè îíëàéí. Ïðîäîëæåíèå.
Àâòîð: | Èâàí Êîðæàâèí |
email: | korjavin@yandex.ru |
Ðåøèì âòîðóþ ãëàâíóþ çàäà÷ó ïðèåìà ïëàòåæåé - ïîëó÷åíèå ðåçóëüòàòîâ àâòîðèçàöèè êëèåíòñêîé îïëàòû îò ïëàòåæíîé ñèñòåìû.
Ñóùåñòâóåò íåñêîëüêî îñíîâíûõ ñïîñîáîâ, êîòîðûìè ïëàòåæíàÿ ñèñòåìà îïîâåùàåò íàñ î ñòàòóñå ïëàòåæà
- Îòïðàâêà äàííûõ î ïëàòåæå íà e-mail;
- Ïåðåíàïðàâëåíèå áðàóçåðà êëèåíòà íà ñïåöèàëüíóþ ñòðàíèöó íàøåãî ñàéòà ñ çàïîëíåííûìè è ïîäïèñàííûìè ïàðàìåòðàìè;
- Ïåðåäà÷à ïàðàìåòðîâ ïëàòåæà íà ñïåöèàëüíóþ ñòðàíèöó íàøåãî ñàéòà ñàìîñòîÿòåëüíî, ñî ñâîèõ ñåðâåðîâ;
- Âàðèàíò êîãäà ïëàòåæíàÿ ñèñòåìà íå ïåðåäàåò íàì ðåçóëüòàòîâ, ìû ñàìè äîëæíû îïðàøèâàòü ñïåöèàëüíûé èíòåðôåéñ, ñ êîäîì ïëàòåæà, ïîëó÷àÿ â îòâåò ñòàòyñ îáðàáîòêè.
Íàïîìíþ, ÷òî â íàøåì ïðèìåðå, ìû èñïîëüçóåì ïëàòåæíóþ ñèñòåìó Moneybookers, êîòîðàÿ ïîçâîëÿåò èñïîëüçîâàòü âàðèàíòû 1,2 è 3. Ïîãîâîðèì î ïëþñàõ è ìèíóñàõ ýòèõ âàðèàíòîâ.
Ïåðåäà÷à äàííûõ ïëàòåæà ïî e-mail
Î÷åâèäíî, ñàìûé ïðîñòîé ñïîñîá. Íå òðåáóåò íèêàêîãî ñïåöèàëüíî êîäà, åäèíñòâåííîå ÷òî ìû äîëæíû óêàçàòü e-mail, íà êîòîðûé õîòèì ïîëó÷àòü óâåäîìëåíèÿ. Ñäåëàòü ýòî ìîæíî ÷åðåç çàïðîñ ðåãèñòðàöèè ïëàòåæà, âìåñòå ñ ïåðåäà÷åé îñòàëüíûõ ïàðàìåòðîâ. Îäíàêî, ýòîò ñïîñîá èìååò íåñêîëüêî áîëüøèõ ìèíóñîâ:
- Íåãàðàíòèðîâàííàÿ ñêîðîñòü äîñòàâêè äàííûõ;
- Ïëîõî ïîäõîäèò äëÿ àâòîìàòèçèðîâàííîé îáðàáîòêè, ãîðàçäî óäîáíåå îáðàáàòûâàòü çàïðîñû íàïðÿìóþ, ÷åì äîáàâëÿòü â ñèñòåìó íåíóæíûå òî÷êè îòêàçà â âèäå smtp ñåðâåðîâ.
Íà ìîé âçãëÿä, ìèíóñû ïåðåâåøèâàþò.
Ïåðåíàïðàâëåíèå êëèåíòñêîãî áðàóçåðà
 ýòîì ñïîñîáå, ïîñëå ïðîâåäåíèÿ àâòîðèçàöèè ïëàòåæíàÿ ñèñòåìà, ñôîðìèðóåò íóæíûé url, ñîñòîÿùèé èç àäðåñà íàøåé ñòðàíèöû âîçâðàòà, ïàðàìåòðîâ ïëàòåæà, è ïåðåíàïðàâèò êëèåíòñêèé áðàóçåð íà ýòîò url.
Äëÿ òîãî, ÷òî áû çëîóìûøëåííèê íå ñìîã ïîäìåíèòü äàííûå î ïëàòåæå, à îíè ïåðåäàþòñÿ â îòêðûòîì âèäå, ïëàòåæíàÿ ñèñòåìà äîáàâèò ñïåöèàëüíóþ ïîäïèñü.  ñëó÷àå moneybookers, âû äîëæíû çàðàíåå ïðèäóìàòü ñåêðåòíîå ñëîâî, óêàçàòü åãî â ëè÷íîì êàáèíåòå, è òîãäà ïîäïèñü ñôîðìèðóåòñÿ êàê md5 õýø îò êîíêàòåíàöèè êîäà âàøåãî ìàãàçèíà â ñèñòåìà moneybookers, êîäà òðàíçàêöèè, è md5 õåøà îò ñåêðåòíîãî ñëîâà. Òàê êàê çëîóìûøëåííèê íå ìîæåò çíàòü ñåêðåòíîãî ñëîâà, îíî íèãäå íå ïåðåäàåòñÿ ïî îòêðûòûì êàíàëàì, òî è ïîääåëàòü ýòó ïîäïèñü îí íå ìîæåò.
Ýòîò ñïîñîá ïîäõîäèò äëÿ àâòîìàòè÷åñêîé îáðàáîòêè çàêàçîâ, òàê êàê ìû ìîæåì ïðîâåñòè ëþáóþ îáðàáîòêó íà íàøåé ñòðàíèöå âîçâðàòà. Ïîñëå ïðîâåðêè äàííûõ è ïîäïèñè, ìû ìîæåì ðàçîñëàòü íóæíûå íàì e-mail, ïîïîëíèòü áàëàíñ ëèöåâîãî ñ÷åòà êëèåíòà è/èëè èçìåíèòü ñòàòóñ åãî çàêàçà àâòîìàòè÷åñêè.
Ê ìèíóñàì äàííîãî ñïîñîáà îòíåñåì:
- Çàâèñèìîñòü îò êëèåíòñêîãî áðàóçåðà, åñëè ó êëèåíòà áóäóò ïðîáëåìû ñî ñâÿçüþ, èëè ïðîãðàìíûì îáåñïå÷åíèåì, ìû ìîæåì íå óçíàòü î ôàêòè÷åñêè ñîâåðøåííîì ïëàòåæå.
- Íåêðàñèâûå url - âìåñòî ïðîñòîãî url âðîäå supershop.my/success, â êëèåíòñêîì áðàóçåðå áóäåò äëèííàÿ êîíñòðóêöèÿ ñ http get çàïðîñîì ñ ïàðàìåòðàìè, íàïðèìåð ?par1=val1&par2=val2&transaction_id=A205220&msid=730743ed4ef7ec631155f5e15d2f4fa0
- Åñëè ìû ïåðåäàåì äîïîëíèòåëüíûå ïîëÿ, íå ïðåäíàçíà÷åííûå äëÿ ïóáëè÷íîãî äîñòóïà, ñëåäóåò ïîìíèòü ÷òî http get çàïðîñû, âèäíû â ëîã-ôàéëàõ ïðîêñè ñåðâåðîâ, èñòîðèè áðàóçåðà è ìíîæåñòâå äðóãèõ ìåñò. Òàê æå, â ñëó÷àå ïóáëè÷íîãî wifi èëè íåçàùèùåííîé ñåòè îíè ìîãóò áûòü ïðîñëóøàíû äðóãèìè ëèöàìè. Âî èçáåæàíèè ýòîãî ñëåäóåò èñïîëüçîâàòü https ïðîòîêîë, à çíà÷èò âûäåëåííûé îòäåëüíûé èï àäðåñ äëÿ ñåðâåðà. Äëÿ êðóïíûõ ìàãàçèíîâ ýòî íå ïðîáëåìà, íî åñëè ìàãàçèí ìåëêèé, òî âåðîÿòíî è ñåðòèôèêàò ssl è ôèêñèðîâàííûé âûäåëåííûé èï àäðåñ áóäóò ëèøíèìè ðàñõîäàìè.
- Ìîæåò âîçíèêíóòü ñèòóàöèÿ, êîãäà ïîëüçîâàòåëüñêèé áðàóçåð âûçîâåò ñòðàíèöó âîçðàòà íåñêîëüêî ðàç. Íàïðèìåð ïðîñòî íàæàâ êíîïêó "îáíîâèòü", åñëè åìó ïîêàæåòñÿ ÷òî çàãðóçêà èäåò ìåäëåííî. Ñëåäóåò îáÿçàòåëüíî èìåòü ýòî ââèäó, è íå äîïóñêàòü âîçíèêíîâåíèÿ race condition. Ñðàçó çàíåñòè ýòó òðàíçàêèþ â ñïèñîê "îáðàáàòûâàåìûõ" è îòâåðãàòü ïîñëåäóþùèå ïîïûòêè. Îøèáêîé áóäåò, ïîïûòàòüñÿ ñíà÷àëà âûïîëíÿòü äëèòåëüíûå ïðîöåäóðû íàâðîäå îòïðàâêè e-mail èëè îáíîâëåíèÿ ñòàòóñà çàêàçîâ, äî áëîêèðîâêè òðàíçàêöèè - âåäü â òàêîì ñëó÷àå âîçìîæíî ÷òî âòîðè÷íûé çàïðîñ ïðèäåò áûñòðåå âàøåé áëîêèðîâêè è âû ïðîâåäåòå îïëàòó äâàæäû.
Ñïîñîá íå ïëîõ, íî åñòü âàðèàíò ëó÷øå.
Ïåðåäà÷à äàííûõ ïëàòåæíîé ñèñòåìîé íàïðÿìóþ
 ýòîì ñëó÷àå, êëèåíòñêèé áðàóçåð ïåðåíàïðàâëÿåòñÿ íà "÷èñòûé" url áåç ïàðàìåòðîâ success_url èëè cancel_url êîòîðûå ìû óêàçàëè â íàñòðîéêàõ, â çàâèñèìîñòè îò ðåçóëüòàòà.
È ïàðàëëåëüíî ïëàòåæíàÿ ñèñòåìà ñàìà âûçîâåò óêàçàííûé íàìè result_url è ïåðåäàñò íà íåãî ïàðàìåòðû ïëàòåæà.
Ñïîñîá ñî÷åòàåò â ñåáå âñå ïëþñû ïðåäûäóùåãî - ïîäõîäèò äëÿ àâòîìàòè÷åñêîé îáðàáîòêè, è èçáàâëÿåò íàñ îò ìíîãèõ ìèíóñîâ. Íåò çàâèñèìîñòè îò ïîâåäåíèÿ êëèåíòà, ïàðàìåòðû ïëàòåæà íå ïåðåäàþòñÿ â "ñòîðîíó" êëèåíòà. È èìååò äîïîëíèòåëüíûå ïëþñû - äëÿ áåçîïàñíîñòè ìû ìîæåì äîïîëíèòåëüíî óêàçàòü èï ñåòè ñ êîòîðûõ ìû áóäåì ïðèíèìàòü èíôîðìàöèþ íà ñòðàíèöó ðåçóëüòàòîâ. Ïðîïèñàâ èïû íàøåé ïëàòåæíîé ñèñòåìû, ìû ïðàêòè÷åñêè íå îñòàâèì çëîóìûøëåííèêàì øàíñà.
Òàêæå ê ïëþñàì ìîæíî îòíåñòè òî, ÷òî ïëàòåæíàÿ ñèñòåìà êîíòðîëèðóåò êîä âîçâðàòà íàøåé ñòðàíèöå, è â ñëó÷àå êàêîé ëèáî íåóäà÷è, ïîâòîðèò çàïðîñ
Âûáåðåì ýòîò ñïîñîá, è ñõåìàòè÷íî ðåàëèçóåì îáðàáîò÷èê íà php.
Íî äëÿ ïîëíîòû, ðàññìîòðèì ïëþñû è ìèíóñû ïîñëåäíåãî ñïîñîáà
Ïåðèîäè÷åñêèé îïðîñ ñïåöèàëüíîãî èíòåðôåéñà ïëàòåæíîé ñèñòåìû
Îñíîâíîé ìèíóñ ýòîãî ñïîñîáà, â òîì, ÷òî îí ìåíÿåò êîíöåïöèþ îáðàáîòêè ïëàòåæà îò ñîáûòèéíîé (êëèåíò ââåë äàííûå - ìû îáðàáîòàëè) ê ðàñòÿíóòîé âî âðåìåíè - íå çàâèñèìî îò ââîäà êëèåíòà, ìû âûíóæäåíû ïàðàëëåëüíî ïî òàéìåðó çàïðàøèâàòü ðåçóëüòàòû, à òàê êàê ââîä äàííûõ áàíêîâñêîé êàðòû, ìîæåò çàíÿòü ïðîäîëæèòåëüíîå âðåìÿ, ìû äîëæíû áóäåì ñåðüåçíî óñëîæíèòü íàø îáðàáîò÷èê ïëàòåæåé. Äîáàâèòü ðàñïèñàíèå, ëîãèêó îïðîñîâ.
Èíîãäà, â ñëó÷àÿõ íåêîòîðûõ áàíêîâñêèõ ïðîöåññèíãîâ ýòîò ñïîñîá ïðèõîäèòñÿ èñïîëüçîâàòü ïî ïðè÷èíå îòñóòñòâèÿ îñòàëüíûõ, íî ñ ïëàòåæíîé ñèñòåìîé moneybookers ýòî áåññìûñëåííî. Ó íàñ óæå åñòü âàðèàíò ëó÷øå.
Ðåàëèçàöèÿ
Îáðàòèòå âíèìàíèå, ÷òî â ïðèâåäåííîì ïðèìåðå ïðîâåðÿåòñÿ òîëüêî ñòàòóñ è ïîäïèñü.
Ýòî ñäåëàíî äëÿ óïðîùåíèÿ, ìû íå ïðåäóñìîòðåëè â ïðèìåðå õðàíåíèå ñôîðìèðîâàííîãî çàêàçà, íî â ðåàëüíîé æèçíè
ïîëåçíî òàêæå ïðîâåðÿòü ñóììó è âàëþòó çàêàçà.
Òàê êàê ýòà ñòðàíèöà âñåãäà âûçûâàåòñÿ ìåæäó äâóìÿ ñåðâåðàìè, âûâîäèòü â íåé îøèáêè áåññìûñëåííî, çàïèñûâàéòå èõ â ëîã, èëè îòïðàâëÿéòå ïî ïî÷òå îòâåòñòâåííîìó ëèöó