-
Notifications
You must be signed in to change notification settings - Fork 11
Dodanie nowego modułu obsługującego płatności SMS
Michał Budziak edited this page Jan 8, 2020
·
8 revisions
-
Utwórz nowy plik
*.php
, który będzie zawierał klasę, której zadaniem będzie obsługa API serwisu płatności. Nazwa pliku musi być taka sama jak nazwa klasy.Poniżej przedstawiony jest kod ( wraz z komentarzami ) przykładowego pliku obsługującego API płatności
<?php namespace App\Verification; use App\Verification\Abstracts\PaymentModule; use App\Verification\Abstracts\SupportSms; use App\Verification\Exceptions\BadCodeException; use App\Verification\Exceptions\InsufficientDataException; use App\Verification\Exceptions\NoConnectionException; use App\Verification\Exceptions\UnknownErrorException; use App\Verification\Exceptions\WrongCredentialsException; use App\Verification\Results\SmsSuccessResult; use App\Verification\DataField; class MyExample extends PaymentModule implements SupportSms { // Identyfikator naszego modułu płatności const MODULE_ID = "example"; // // Funkcja, której zadaniem jest zweryfikowanie poprawości kodu SMS ( $returnCode ), // wysłanego na konkretny numer ( $number ) // // $returnCode - kod do weryfikacji // $number - numer na który został wysłany SMS // ----------------------------- // Funkcja powinna zwracać obiekt klasy App\Verification\Results\SmsSuccessResult // Może także rzucać wyjątki, które dziedziczą po klasie App\Verification\Exceptions\SmsPaymentException // public function verifySms($returnCode, $number) { // Sam proces weryfikacji kodu zwrotnego jest inny dla każdego serwisu. // Jego dokładna dokumentacja powinna znajdować się na stronie serwisu. $response = $this->requester->get('https://example.com/validate_sms', [ 'account_id' => $this->getData('account_id'), 'code' => $returnCode, 'number' => $number, ]); if ($response === false) { throw new NoConnectionException(); } $status = $response->getBody(); if( $status === "0" ) { throw new BadCodeException(); } if( $status === "1" ) { return new SmsSuccessResult(); } if( $status === "2" ) { throw new WrongCredentialsException(); } if( $status === "3" ) { throw new InsufficientDataException(); } throw new UnknownErrorException(); } // // Metoda, ktora ma zwracac tresc, ktora uzytkownik ma wpisac // podczas wysylania smsa // public function getSmsCode() { return $this->getData('sms_text'); } // // Metoda, ktora ma zwracać listę pól konfiguracyjnych, // które użytkownik może wypełnić podczas dodawania nowej platformy płatności // public static function getDataFields() { return [ new DataField("account_id"), new DataField("sms_text"), ]; } }
-
Plik
MyExample.php
umieść w folderzeincludes/Verification/PaymentModules
-
Zarejestruj moduł płatności w metodzie
registerPaymentModules
w plikuincludes/System/Heart.php
$heart->registerPaymentModule(
App\Verification\PaymentModules\MyExample::MODULE_ID,
App\Verification\PaymentModules\MyExample::class
);
- Dodaj do tabeli
ss_sms_numbers
nowe wiersze. Opis kolumn:-
number
- numer na który klienci sklepu będą mogli wysyłać SMSy -
tariff
- taryfa, którą wart będzie kod zwrotny uzyskany poprzez wysłanie sms na powyższy numer -
service
- którego modułu płatności tyczą się powyższe dwie wartości ( podajemy tu id naszego modułu płatności )
-