Skip to content

Dodanie nowego modułu obsługującego płatności SMS

Michał Budziak edited this page Jan 8, 2020 · 8 revisions
  1. 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"),
            ];
        }
    }
  2. Plik MyExample.php umieść w folderze includes/Verification/PaymentModules

  3. Zarejestruj moduł płatności w metodzie registerPaymentModules w pliku includes/System/Heart.php

$heart->registerPaymentModule(
    App\Verification\PaymentModules\MyExample::MODULE_ID,
    App\Verification\PaymentModules\MyExample::class
);
  1. 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 )