ПредишенСледващото

Системата за таксуване използва модулна система за интеграция с платежни системи. За да се свържете с новата система да се напише модул за него.

Избор името на системата

Всяка система за плащане в системата за таксуване е името на система, която може да се състои на един от латинските думи и числа. Името на системата се използва в имена на файлове и класове.

Като пример, ние ще приемем, че нашата нова система за плащане, наречена «Нова платежна система», и систематично си име - newpayment. Тук и на други места newpament ще трябва да бъдат заменени от името на системата на вашия платежната система.

Файлове и папки

Модули платежните системи се съхраняват в системата контролери / фактуриране папката / / системи. Вътре в тази папка, създайте папка за новата система за плащане. Folder име съвпада с името на системата.

В папката System, трябва да се създадат две PHP файлове,

Файлът, съдържащ описание на формата на настройките на платежната система.

Първи списък на полета за формата на плащане

Обикновено, плащания през системата започва с форма на плащане на специален URL адрес. предоставена от системата. Този URL е посочено в системните настройки в административната област на фактуриране. Формата се генерира динамично.

Когато потребителят завършва баланс, той първо се избира размера на валута, за да купуват и кликнете върху "Напред". След това, той пристигне на страница "провери правилността на реда." В действителност, тази страница е необходимо, тъй като е върху него показва форма за плащане. И като кликнете върху "Отиди на плащане" изпраща под формата на плащане на десния URL.

getPaymentFormFields () метод връща набор от полета, които се добавят към формата за плащане. Този комплект е уникален за всяка система. Set се връща като масив, в който ключовете са имената на полетата, както и елементите - ценности.

Например, ако нашата система за таксуване изисква полетата на формата shop_id и Summ. методът може да изглежда така:

В допълнение, плащането образуват можете да добавите интерактивни полета, които ще трябва да попълните потребителя. В този случай, тъй като стойността на полето в върнатия масив се използва клас инстанция на полето. Например:

Допълнителна обработка на данните след формуляра за плащане

Някои платежните системи използват по-сложни механизми за плащане пробег, отколкото просто изпращането на формуляри. Поради това е възможно да се даде абсолютна система за плащане с пълен контрол върху изпращането на искането за плащане.

Схемата се реализира на три етапа:

Както плащане URL в системните настройки, определени: фактуриране / подготвят / newpayment;

форма на плащане все още се формира, но не се изпраща към системата, и на вътрешния URL. по-горе;

preparePayment () метод работи на URL адреса в нашия клас, и този метод сам прави комуникацията с недвижими система за плащане (например, с помощта на CURL) и пренасочва където е необходимо.

Подобна схема се използва в случаите, когато:

Примери за прилагане на този подход, можете да видите в код модул за тестови системи и Qiwi на стандартния фактуриране.

Заменяте този на плащане

Някои платежните системи използват динамичен URL за изпращане на плащането. Тогава тя няма да работи, просто посочете в настройките, като всеки път, когато плащането ще бъде по-различно.

Особено getPaymentURL () метод може да бъде описан в този случай в класа. която връща адреса за изпращане на формуляра за плащане. Ако този метод не е - използване на URL адреса от конфигурацията на системата за плащане.

Един пример на метода на системата модул OnPay:

Получаване на уведомление за плащане

Повечето системи за плащане, са в състояние да докладва на платежното нареждане, като се обадите специфичен URL на сайта на магазина. Най-често в търговци настройки той се нарича като URL адреса на резултат, или Status URL. Обадете този URL се извършва във фонов режим, невидим за потребителя и без използването на браузъра си.

Извикването на метод URL processPayment () започва в модула клас на системата.

Във вътрешността на метода обикновено се изпълнява следния алгоритъм:

Получаване на данни предава система за плащане (номер на поръчката за покупка сума, статус, плащане и т.н.);

Част не получите друга информация от базата данни;

Проверява точността на данните (което е сумата на поръчката не се променя, цифровия подпис е един и същ, и т.н.);

Ако всичко е наред - обърнете внимание на начина, както е внесен (за вътрешния баланс на потребителя в същото време се кредитира ги местна валута купих);

Върнете Отговорът на формата, изискван от системата за плащане.

Данните предава Резултати URL адреса на всяка платежна система е уникална. Тяхното описание е необходимо да се разгледа документацията на API на платежната система. Получаване на данни от заявката (GET / POST) се осъществява чрез молба обект $. например:

Разписка за поръчка от познатия ID се извършва с помощта на модел:

Промяна на статуса на цел "платен" произлиза също от модела:

Пример за прилагане на метода за Robokassa система:

Как да стигнем до успеха на уведомлението за плащане

Ето защо, за да се избегнат проблеми с успех URL адреса на, трябва да се уверите, че поръчката е била платена и баланс на потребителя се възстановява. И ако това не е, тогава силите на потребителя да се изчака, докато сайтът не получи уведомление за плащане.

Тъй като броят на реда дума за успех URL адреса на с потребителя, методът следва да се уточни в модула за платежната система:

Този метод трябва да бъде получена от обект $ искане ID стойността на поръчката се предава от системата за плащане на успеха URL на на. и да го върне. С помощта на получените ID фактуриране ще разпореди и да се провери състоянието й. Ако поръчката все още няма да се заплаща, фактуриране ще провери статуса си на всеки няколко секунди, докато плащането не е получено уведомление. Потребителят в същото време ще видите искане да се изчака.

Получаване на съобщения провал плащане

не се изисква по-нататъшни действия в модулите на платежната система за преработка на неуспешно плащане.

примери на връзки

За примери за реализации на модули за множество системи за плащане можете да намерите в системата / контролери / фактуриране / системи папката включени с доставка за фактуриране.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!