Skip to content

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

Michał Budziak edited this page Jun 24, 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\Models\SmsNumber;
    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";
    
        //
        // Metoda zwracająca 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"),
            ];
        }
    
        //
        // Metoda zwracająca listę dostępnych numerów SMS
        //
        public function getSmsNumbers()
        {
            return [
                new SmsNumber("7136"),
                new SmsNumber("7255"),
            ];
        }
    
        //
        // 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");
        }
    }
  2. Plik MyExample.php umieść w folderze includes/Verification/PaymentModules

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

$paymentModuleManager->register(\App\Verification\PaymentModules\MyExample::class);