-
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 Jun 24, 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\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"); } }
-
Plik
MyExample.php
umieść w folderzeincludes/Verification/PaymentModules
-
Zarejestruj moduł płatności w metodzie
registerPaymentModules
w plikuincludes/Providers/HeartServiceProvider.php
$paymentModuleManager->register(\App\Verification\PaymentModules\MyExample::class);