Wstep
Niniejsza dokumentacja jest przeznaczona dla obecnych oraz przyszłych Partnerów
Simpay. Przed wdrożeniem, niezbędne jest wcześniejsze zdefiniowanie usługi w Panelu
Partnera oraz oczekiwanie na jej aktywacje bezpośrednio u operatorów.
Inne języki
Gotowe biblioteki
Paginacja
Obiekt paginacji
"pagination" : {
"total" : 1 ,
"count" : 1 ,
"per_page" : 15 ,
"current_page" : 1 ,
"total_pages" : 1 ,
"links" : {
"next_page" : null ,
"prev_page" : null
}
}
Jeżeli w danym Requescie dostępna jest paginacja istnieje możliwość użycia poniższych Parametrów URL
Parametry URL
Nazwa
Typ
Opis
page
integer
Strona
limit
integer
Limit wyników. domyślnie: 15, maksymalnie: 99
Opis obiektu
Nazwa
Typ
Opis
total
integer
Liczba wszystkich rekordów w obiekcie
count
integer
Liczba rekordów na aktualnej stronie
per_page
integer
Ilość rekordów maksymalnie na stronie
current_page
integer
Aktualna strona
total_pages
integer
Ilość wszystkich stron
links[next_page]
string/null
URL następnej strony lub jeżeli nie istnieje null
links[prev_page]
string/null
URL poprzedniej strony lub jeżeli nie istnieje null
SMS
$simpay = new SimPay ( '0b4dca15' , '3eea38f407073ff0abff956b57d71783' ) ;
$sms = $simpay -> sms ( ) ;
SimPay(string $apiKey, string $apiPassword) → SimPay
Opis parametrów
Nazwa
Typ
Wymagany?
Opis
apiKey
string
Tak
Klucz API z panelu klienta
apiPassword
string
Tak
Hasło API z panelu Klienta
sms() → sms
Dostepne metody w obiekcie sms
Pobieranie listy usług
$sms -> getServices ( ) ;
Przykładowa odpowiedź
Array
(
[ 0 ] => stdClass Object
(
[ id] => 3539
[ type] => CODE_PACK
[ status] => service_rejected
[ name] => TESTA3213213
[ prefix] => SIM
[ suffix] => ASD12DASD21DASSD
[ adult] => false
[ created_at] => 2021 - 05 - 21 10 : 28 : 04
)
[ 1 ] => stdClass Object
(
[ id] => 3538
[ type] => API_URL
[ status] => service_rejected
[ name] => TEST213123
[ prefix] => SIM
[ suffix] => TEST2131233
[ adult] => false
[ created_at] => 2021 - 05 - 18 17 : 05 : 11
)
)
getServices(int $page, int $limit) → array
Opis parametrów
Nazwa
Typ
Wymagany?
Opis
page
integer
Nie
Numer strony
limit
integer
Nie
Limit obiektów na strone
Opis obiektu
Nazwa
Typ
Opis
id
integer
Id usługi
type
string
Typ usługi
status
string
Status usługi. service_active - oznacza status aktywny
name
string
Nazwa usługi
prefix
string
Prefix treści SMS
suffix
string
Suffix treści SMS
adult
boolean
Czy usługa jest 18+
created_at
datetime
Data utworzenia usługi w formacie: ISO 8601
$sms -> getService ( 3549 ) ;
Przykładowa odpowiedź
stdClass Object
(
[ id] => 3549
[ type] => ONE_TIME_CODE
[ status] => service_active
[ name] => TEST
[ prefix] => SIM
[ suffix] => TESTSIMPAY
[ description] => Usługa testowa
[ adult] =>
[ numbers] => Array
(
[ 0 ] => 7055
[ 1 ] => 7136
[ 2 ] => 7255
[ 3 ] => 7355
[ 4 ] => 7455
[ 5 ] => 7555
[ 6 ] => 7636
[ 7 ] => 77464
[ 8 ] => 78464
[ 9 ] => 7936
[ 10 ] => 91055
[ 11 ] => 91155
[ 12 ] => 91455
[ 13 ] => 91664
[ 14 ] => 91955
[ 15 ] => 92055
[ 16 ] => 92555
)
[ created_at] => 2016 - 11 - 08 17 : 18 : 53
)
getService(int $serviceId) → object
Opis parametrów
Nazwa
Typ
Wymagany?
Opis
serviceId
integer
Nie
Id usługi
Opis obiektu
Nazwa
Typ
Opis
id
integer
Id Usługi
type
string
Typ usługi
status
string
Status usługi. service_active - oznacza status aktywny
name
string
Nazwa usługi
prefix
string
Prefix treści SMS
suffix
string
Suffix treści SMS
description
string
Opis usługi
adult
boolean
Czy usługa jest 18+
numbers
array
Lista numerów SMS dostępnych w usłudze
created_at
datetime
Data utworzenia usługi w formacie: ISO 8601
Pobieranie listy transakcji
$sms -> getTransactions ( 3549 ) ;
Przykładowa odpowiedź
Array
(
[ 0 ] => stdClass Object
(
[ id] => 2216609
[ from] => 123123123
[ code] => 81 FFC5
[ used] => 1
[ send_at] => 2021 - 08 - 18 00 : 07 : 45
)
)
getTransactions(int $serviceId, int $page, int $limit) → array
Opis parametrów
Nazwa
Typ
Wymagany?
Opis
serviceId
integer
Tak
Id usługi
page
integer
Nie
Strona
limit
integer
Nie
Limit obiektów na strone
Opis obiektu
Nazwa
Typ
Opis
id
integer
Id transakcji
from
integer
Numer, z którego został wysłany SMS
code
string
Kod zwrotny SMS
used
boolean
Czy kod został wykorzystany
send_at
datetime
Data wysłania SMSa w formacie: ISO 8601
$sms -> getTransaction ( 3549 , 2216609 ) ;
Przykładowa odpowiedź
stdClass Object
(
[ id] => 2216609
[ from] => 123123123
[ code] => 81 FFC5
[ used] => 1
[ send_number] => 7055
[ value] => 0.5
[ send_at] => 2021 - 08 - 18 00 : 07 : 45
)
getTransaction(int $serviceId, int $transactionId) → object
Opis parametrów
Nazwa
Typ
Wymagany?
Opis
serviceId
integer
Tak
Id usługi
transactionId
integer
Nie
Id transakcji
Opis odpowiedzi
Nazwa
Typ
Opis
id
integer
Id transakcji
from
integer
Numer, z którego został wysłany SMS
code
string
Kod zwrotny SMS
used
bolean
Czy kod został wykorzystany
send_number
integer
Numer na jaki został wysłany SMS
value
float
Koszt wysłanego SMSa netto
send_at
datetime
Data wysłania SMSa w formacie: ISO 8601
Pobieranie dostępnych numerów dla usługi
$sms -> getNumbers ( ) ;
Przykładowa odpowiedź
Array
(
[ 0 ] => stdClass Object
(
[ number] => 7055
[ value] => 0.5
[ value_gross] => 0.62
[ adult] => false
)
[ 1 ] => stdClass Object
(
[ number] => 7136
[ value] => 1
[ value_gross] => 1.23
[ adult] => false
)
)
getServiceNumbers(int $serviceId, int $page, int $limit) → array
Opis parametrów
Nazwa
Typ
Wymagany?
Opis
serviceId
integer
Tak
Id usługi
page
integer
Nie
Strona
limit
integer
Nie
Limit obiektów na strone
Opis obiektu
Nazwa
Typ
Opis
number
integer
Numer SMSa
value
float
Kwota netto
value_gross
float
Kwota brutto
adult
boolean
Czy jest 18+
$sms -> getNumber ( 7055 , 3549 ) ;
Przykładowa odpowiedź
stdClass Object
(
[ number] => 7055
[ value] => 0.5
[ value_gross] => 0.62
[ adult] => false
)
getServiceNumber(int $serviceId, int $number) → object
Opis parametrów
Nazwa
Typ
Wymagany?
Opis
serviceId
integer
Tak
Id usługi
number
integer
Tak
Numer
Opis odpowiedzi
Nazwa
Typ
Opis
number
integer
Numer SMSa
value
float
Kwota netto
value_gross
float
Kwota brutto
adult
boolean
Czy jest 18+
Pobieranie wszystkich dostępnych numerów
$sms -> getNumbers ( ) ;
Przykładowa odpowiedź
Array
(
[ 0 ] => stdClass Object
(
[ number] => 7055
[ value] => 0.5
[ value_gross] => 0.62
[ adult] => false
)
[ 1 ] => stdClass Object
(
[ number] => 7136
[ value] => 1
[ value_gross] => 1.23
[ adult] => false
)
)
getNumbers(int $page, int $limit) → array
Opis parametrów
Nazwa
Typ
Wymagany?
Opis
page
integer
Nie
Strona
limit
integer
Nie
Limit obiektów na strone
Opis odpowiedzi
Nazwa
Typ
Opis
number
integer
Numer SMSa
value
float
Kwota netto
value_gross
float
Kwota brutto
adult
boolean
Czy jest 18+
Pobieranie pojedyńczego numeru sms
getNumber(int $number) → object
Opis parametrów
Nazwa
Typ
Wymagany?
Opis
number
integer
Tak
Numer
Opis odpowiedzi
Nazwa
Typ
Opis
number
integer
Numer SMSa
value
float
Kwota netto
value_gross
float
Kwota brutto
adult
boolean
Czy jest 18+
Weryfikacja poprawności kodu
$sms -> getSmsCode ( 1636 , 'AF4CXF' ) ;
Przykładowa odpowiedź w przypadku nowego kodu
stdClass Object
(
[ used] => false
[ code] => 79 YB44
[ test] => 1
[ from] => 123123123
[ number] => 7055
[ value] => 0.5
)
Przykładowa odpowiedź w przypadku użytego kodu
stdClass Object
(
[ used] => 1
[ code] => 79 YB44
[ test] => 1
[ from] => 123123123
[ number] => 7055
[ value] => 0.5
[ used_at] => 2021 - 11 - 08 00 : 53 : 27
)
getSmsCode(int $serviceId, string $code, int $number) -> object
Opis parametrów
Nazwa
Typ
Wymagany
Opis
serviceId
integer
Tak
Id usługi
code
string
Tak
Kod zwrotny z SMSa
number
integer
Nie
Numer na jaki miał zostać wysłany SMS
Opis odpowiedzi
Nazwa
Typ
Opis
used
boolean
Czy SMS został wykorzystany
code
string
Kod zwrotny z SMSa
test
boolean
Czy testowy SMS
from
integer
Numer z jakiego wysłano SMSa
number
integer
Numer na jaki wysłano SMSa
value
integer
Kwota netto kosztu SMSa
used_at
datetime
Data kiedy wykorzystano SMSa w formacie: ISO 8601, dostępne tylko w przypadku gdy used
jest równe true
Modele
Znajdziesz tutaj modele typów, statusów itd. do usług SMS
Status usługi
Nazwa
Opis
service_new
Nowa (do zweryfikowania)
service_active
Aktywna
service_blocked
Zablokowana
service_deleted
Usunięta
service_second_verify
Ponowna weryfikacja
service_rejected
Odrzucona
service_verify
Weryfikacja
service_ongoing_registration
W trakcie rejestracji
Typ usługi
Nazwa
Opis
ONE_TIME_CODE
Kod jednorazowy
CODE_PACK
Paczka kodów
API_URL
API
SMSXML
$simpay = new SimPay ( '0b4dca15' , '3eea38f407073ff0abff956b57d71783' ) ;
$smsXml = $simpay -> smsXml ( 'testKey' ) ;
SimPay(string $apiKey, string $apiPassword) → SimPay
SMS Api XML pozwala kontrolować cały proces otrzymania sms’a oraz wysyłki kodu po stronie serwisu partnera.
Partner przygotowuje link URL zgodnie z opisaną specyfikacją SimPay.
W momencie złożenia przez użytkownika zamówienia (wysłanie wiadomości SMS), nasz system odpytuje URL podany przez partnera oraz pobiera kod bezpośrednio.
Opis parametrów
Nazwa
Typ
Wymagany?
Opis
apiKey
string
Tak
Klucz API z panelu klienta
apiPassword
string
Tak
Hasło API z panelu Klienta
smsXml(string $hashKey) → smsXml
Opis parametrów
Nazwa
Typ
Wymagany?
Opis
hashKey
string
Tak
Klucz do tworzenia sygnatury znajdujący się w panelu klienta w usłudze
$smsObject = $smsXml -> parseSMS ( $_POST ) ;
if ( $smsXml -> isError ( ) ) {
exit ( $smsXml -> getErrorText ( ) ) ;
}
$arrayPieces = $smsObject -> getPieces ( ) ;
$smsCode = $smsXml -> generateCode ( ) ;
echo $smsXml -> generateXml ( 'Twoj kod doladowania to ' . $smsCode ) ;
DirectBilling
$simpay = new SimPay ( '0b4dca15' , '3eea38f407073ff0abff956b57d71783' ) ;
$directbilling = $simpay -> directbilling ( ) ;
SimPay(string $apiKey, string $apiPassword) → SimPay
Opis parametrów
Nazwa
Typ
Wymagany?
Opis
apiKey
string
Tak
Klucz API z panelu klienta
apiPassword
string
Tak
Hasło API z panelu Klienta
directbilling() → directbilling
Dostepne metody w obiekcie directbilling
Pobieranie listy usług
$directbilling -> getServices ( ) ;
Przykładowa odpowiedź
Array
(
[ 0 ] => stdClass Object
(
[ id] => 141
[ name] => testtttt
[ suffix] => DASDASDSADAS
[ status] => service_db_rejected
[ created_at] => 2021 - 02 - 12 16 : 57 : 18
)
[ 1 ] => stdClass Object
(
[ id] => 139
[ name] => test. pl
[ suffix] => test
[ status] => service_active
[ created_at] => 2020 - 11 - 25 01 : 45 : 28
)
)
getServices(int $page, int $limit) → array
Opis parametrów
Nazwa
Typ
Wymagany?
Opis
page
integer
Nie
Numer strony
limit
integer
Nie
Limit obiektów na strone
Opis odpowiedzi
Nazwa
Typ
Opis
id
integer
Id usługi
name
string
Nazwa usługi
suffix
string
Suffix usługi
status
string
Status usługi, po więcej informacji sprawdź Modele
created_at
datetime
Data utworzenia usługi w formacie: ISO 8601
$directbilling -> getService ( 139 ) ;
Przykładowa odpowiedź
stdClass Object
(
[ id] => 139
[ name] => test. pl
[ suffix] => test
[ status] => service_active
[ api] => stdClass Object
(
[ complete] => https:
[ failure] => https:
)
[ providers] => stdClass Object
(
[ t- mobile] => true
[ orange] => true
[ play] => true
[ plus] => true
)
[ commissions] => stdClass Object
(
[ t- mobile] => stdClass Object
(
[ commission_0] => 60
[ commission_9] => 60
[ commission_25] => 60
)
[ orange] => stdClass Object
(
[ commission_0] => 67
[ commission_9] => 67
[ commission_25] => 70
)
[ play] => stdClass Object
(
[ commission_0] => 55
[ commission_9] => 65
[ commission_25] => 70
)
[ plus] => stdClass Object
(
[ commission_0] => 50
[ commission_9] => 50
[ commission_25] => 60
)
)
[ maxValues] => stdClass Object
(
[ t- mobile] => 250
[ orange] => 300
[ play] => 600
[ plus] => 400
)
[ created_at] => 2020 - 11 - 25 01 : 45 : 28
)
getService(int $serviceId) → object
Opis parametrów
Nazwa
Typ
Wymagany?
Opis
serviceId
integer
Nie
Id usługi
Opis odpowiedzi
Nazwa
Typ
Opis
id
integer
Id usługi
name
string
Nazwa usługi
suffix
string
Suffix usługi
status
string
Status usługi, po więcej informacji sprawdź Modele
api[complete]
string
Przekierowanie w przypadku powodzenia transakcji
api[failure]
string
Przekierowanie w przypadku niepowodzenia transakcji
providers[t-mobile]
boolean
Dostępność operatora T-Mobile
providers[orange]
boolean
Dostępność operatora Orange
providers[play]
boolean
Dostępność operatora Play
providers[plus]
boolean
Dostępność operatora Plus
commissions[t-mobile][commission_0]
string
Prowizja dla partnera w % operatora T-Mobile od kwota 0.01 zł do 8.99 zł
commissions[t-mobile][commission_9]
string
Prowizja dla partnera w % operatora T-Mobile od kwota 9.00 zł do 24,99 zł
commissions[t-mobile][commission_25]
string
Prowizja dla partnera w % operatora T-Mobile od kwota 25.00 zł do maksymalnej kwoty
commissions[orange][commission_9]
string
Prowizja dla partnera w % operatora Orange od kwota 0.01 zł do 8.99 zł
commissions[orange][commission_25]
string
Prowizja dla partnera w % operatora Orange od kwota 9.00 zł do 24,99 zł
commissions[orange][commission_0]
string
Prowizja dla partnera w % operatora Orange od kwota 25.00 zł do maksymalnej kwoty
commissions[play][commission_0]
string
Prowizja dla partnera w % operatora Play od kwota 0.01 zł do 8.99 zł
commissions[play][commission_9]
string
Prowizja dla partnera w % operatora Play od kwota 9.00 zł do 24,99 zł
commissions[play][commission_25]
string
Prowizja dla partnera w % operatora Play od kwota 25.00 zł do maksymalnej kwoty
commissions[plus][commission_0]
string
Prowizja dla partnera w % operatora Plus od kwota 0.01 zł do 8.99 zł
commissions[plus][commission_9]
string
Prowizja dla partnera w % operatora Plus od kwota 9.00 zł do 24,99 zł
commissions[plus][commission_25]
string
Prowizja dla partnera w % operatora Plus od kwota 25.00 zł do maksymalnej kwoty
maxValues[t-mobile]
string
Maksymalna kwota pojedyńcznej transakcji dla operatora T-Mobile
maxValues[orange]
string
Maksymalna kwota pojedyńcznej transakcji dla operatora Orange
maxValues[play]
string
Maksymalna kwota pojedyńcznej transakcji dla operatora Play
maxValues[plus]
string
Maksymalna kwota pojedyńcznej transakcji dla operatora Plus
created_at
datetime
Data utworzenia usługi w formacie: ISO 8601
Kalkulacja prowizji
$directbilling -> calculate ( 1 , 250 ) ;
Przykładowa odpowiedź
stdClass Object
(
[ orange] => stdClass Object
(
[ net] => 357.15
[ gross] => 439.29
)
[ play] => stdClass Object
(
[ net] => 357.15
[ gross] => 439.29
)
[ t- mobile] => stdClass Object
(
[ net] => 416.67
[ gross] => 512.5
)
[ plus] => stdClass Object
(
[ net] => 416.67
[ gross] => 512.5
)
)
calculate(int $serviceId, float $amount) → object
Opis parametrów
Nazwa
Typ
Wymagany?
Opis
serviceId
integer
Tak
Id usługi
amount
float
Tak
Kwota jaką chcemy otrzymać “na czysto”
Opis odpowiedzi
Nazwa
Typ
Opis
orange[net]
float
Kwota netto
orange[gross]
float
Kwota brutto
play[net]
float
Kwota netto
play[gross]
float
Kwota brutto
t-mobile[net]
float
Kwota netto
t-mobile[gross]
float
Kwota brutto
plus[net]
float
Kwota netto
plus[gross]
float
Kwota brutto
Jeżeli operator nie jest aktywny lub kwota jest za duża zwrócony zostanie null
Pobieranie listy transakcji
$directbilling -> getTransactions ( 139 ) ;
Przykładowa odpowiedź
Array
(
[ 0 ] => stdClass Object
(
[ id] => 552098
[ status] => transaction_db_generate_error
[ value] => 0.34
[ value_netto] => 0.24
[ operator] => orange
[ created_at] => 2021 - 10 - 20 00 : 34 : 47
[ updated_at] => 2021 - 10 - 19 22 : 34 : 47
)
[ 1 ] => stdClass Object
(
[ id] => 552097
[ status] => transaction_db_new
[ value] => 0.34
[ value_netto] => 0.24
[ operator] => orange
[ created_at] => 2021 - 10 - 20 00 : 34 : 14
[ updated_at] => 2021 - 10 - 19 22 : 34 : 14
)
)
getTransactions(int $serviceId, int $page, int $limit) → array
Opis odpowiedzi
Nazwa
Typ
Opis
id
integer
Id transakcji
status
string
Status transakcji, więcej informacji zobacz w Modelach
value
float
Kwota transakcji
value_netto
float
Kwota transakcji netto
operator
string
Operator, listę operatorów zobacz w Modelach
created_at
datetime
Data utworzenia transakcji w formacie: ISO 8601
updated_at
datetime
Data aktualizacji transakcji w formacie: ISO 8601
$directbilling -> getTransaction ( 139 , 552097 ) ;
Przykładowa odpowiedź
stdClass Object
(
[ id] => 552097
[ status] => transaction_db_new
[ phoneNumber] =>
[ control] => 123 - 123 - 123
[ value] => 0.34
[ value_netto] => 0.24
[ operator] => orange
[ notify] => stdClass Object
(
[ is_send] => false
[ last_send_at] => 1970 - 01 - 01 00 : 00 : 00
[ count] => 0
)
[ created_at] => 2021 - 10 - 20 00 : 34 : 14
[ updated_at] => 2021 - 10 - 19 22 : 34 : 14
)
getTransaction(int $serviceId, int $transactionId) → object
Opis odpowiedzi
Nazwa
Typ
Opis
id
integer
Id transakcji
status
string
Status transakcji, więcej informacji zobacz w Modelach
phoneNumber
string/null
Numer telefonu, który został wymuszony przy generowaniu transakcji
control
string
Status transakcji, więcej informacji zobacz w Modelach
value
float
Kwota transakcji
value_netto
float
Kwota transakcji netto
operator
string
Operator, listę operatorów zobacz w Modelach
notify
array
Tablica z informacjami dotyczącymi notyfikacji serwera, zobacz poniżej
notify[is_send]
boolean
Informacja czy powiadomienie zostało wysłane
notify[last_send_at]
datetime
Data wysłania ostatniego powiadomienia w formacie: ISO 8601
notify[count]
integer
Ilość wysłanych powiadomień
created_at
datetime
Data utworzenia transakcji w formacie: ISO 8601
updated_at
datetime
Data aktualizacji transakcji w formacie: ISO 8601
Generowanie transakcji
use SimPay\ API\ DirectBilling\ Models\ AmountTypes ;
$directbilling -> payment ( 1636 , 'dart54543edwsfcvgfrt54re3e' )
-> setAmount ( 11.14 )
-> setAmountType ( AmountTypes :: net )
-> make ( ) ;
Przykładowa odpowiedź
SimPay\API \Components\DirectBilling\GenerateResponse Object
(
[ transactionId] => d94f5ecf- 01 a0- 4 b0c- 9 a36- bea55b695fbe
[ redirectUrl] => https:
)
payment(int $serviceId, string $apiKey) → object
Opis parametrów
Nazwa
Typ
Wymagany?
Opis
serviceId
integer
Tak
Id usługi
apiKey
string
Tak
Api key z panelu klienta, dostępny w usłudze
Opis metod dostępnych w obiekcie
Nazwa
Typ
Wymagany
Opis
setAmount
float
Tak
Kwota transakcji
setAmountType
string
Nie
Typ kwoty transakcji. Dostępne: required
, net
, gross
. Domyślnie gross
setDescrption
string
Nie
Opis transakcji
setControl
string
Nie
Parametr do wykorzystania przez partnera w celu identyfikacji transakcji
setReturnSuccess
string
Nie
Adres URL na jaki zostanie przekierowany klient po powodzeniu transakcji, jeżelu puste zostanie wykorzystany URL z usługi
setReturnFailure
string
Nie
Adres URL na jaki zostanie przekierowany klient po niepowodzeniu transakcji, jeżelu puste zostanie wykorzystany URL z usługi
setPhoneNumber
string
Nie
Wymuszony numer telefonu
setProvider
string
Nie
Wymuszony operator
setSteamID
string
Nie
SteamID 64
Typy kwoty
Nazwa
Opis
AmountTypes::net
Typ kwoty transakcji netto
AmountTypes::gross
Typ kwoty transakcji brutto
AmountTypes::required
Typ kwoty transakcji kwota wymagana netto
Opis obiektu
Nazwa
Typ
Opis
transactionId
string
UUID transakcji
redirectUrl
string
Adres na jaki należy przekierować klienta
Na końcu metody wymagane jest dodanie metody make() do obiektu
Po wygenerowaniu transakcji użytkownika należy przekierować na url podany w odpowiedzi, można go pobrać z obiektu pod kluczem redirectUrl
lub metodą
getRedirectUrl()
. Dostępna jest jeszcze metoda getTransactionId()
do pobrania Id wygenerowanej transakcji.
use SimPay\ API\ DirectBilling\ Notification ;
try {
$notify = new Notification ( 'mdRhwVlXc3WMN4Dbd3hfvkap4' , file_get_contents ( 'php://input' ) ) ;
} catch ( \ Exception $e ) {
exit ( 'ERROR' ) ;
}
$notify -> responseOk ( ) ;
Obiekt jaki zostanie przesłany do serwisu partnera
{
"id" : 1111 ,
"service_id" : 1 ,
"status" : "transaction_db_payed" ,
"values" : {
"net" : 11.07 ,
"gross" : 11.07 ,
"partner" : 11.07
} ,
"returns" : {
"complete" : "https://www.simpay.pl" ,
"failure" : "https://www.simpay.pl"
} ,
"control" : "test" ,
"number_from" : "123123123" ,
"provider" : 1 ,
"signature" : "signature"
}
Notification(string $apiKey, string $payload)
Opis parametrów
Nazwa
Typ
Wymagany?
Opis
apiKey
string
Tak
Api key z panelu klienta, dostępny w usłudze
payload
string
Tak
Body zapytania przychodzącego
Opis przesłanego zapytania
Nazwa
Typ
Opis
id
integer
Id transakcji
service_id
integer
Id usługi
status
string
Status transakcji, więcej informacji zobacz w Modelach
values
object
Obiekt z kwotami transakcji
values[net]
float
Kwota transakcji netto
values[gross]
float
Kwota transakcji brutto
values[partner]
float
Prowizja dla partnera z transakcji
returns
object
Obiekt z adresami URL przekierowań po transakcji
returns[complete]
string
Adres na jaki klient miał zostać przekierowany po prawidłowej transakcji
returns[failure]
string
Adres na jaki klient miał zostać przekierowany po nie prawidłowej transakcji
control
string
Pole control do wykorzystania przez partnera
number_from
string
Numer telefonu z jakiego została przeprowadzona transakcja
provider
integer
Operator płatności, zobacz więcej w Modele
signature
string
Sygnatura, automatycznie weryfikowana przez bibliotekę
Modele
Znajdziesz tutaj modele typów, statusów itd. do usług DirectBilling
Status usługi
Nazwa
Opis
service_db_new
Nowa
service_db_active
Aktywna
service_db_rejected
Odrzucona
service_db_ongoing_registration
W trakcie rejestracji
Status transakcji
Nazwa
Opis
transaction_db_new
Nowa
transaction_db_confirmed
Użytkownik przekierowany
transaction_db_rejected
Odrzucona
transaction_db_canceled
Anulowana
transaction_db_payed
Opłacona
transaction_db_generate_error
Błąd podczas generowania
Provider
Nazwa
Opis
1
Orange
2
Plus
3
Play
4
T-Mobile
Bezpieczeństwo
Weryfikacja certyfikatu klienta
Powiadomienia z serwerów SimPay są podpisywane certyfikatem.
Przykład konfiguracji nginx z weryfikacją certyfikatu klienckiego na lokalizacji /notify
set $simpay_fingerprint "13d4313b94469038cdbab1839559ae381309a79d" ;
ssl_client_certificate /opt/simpay/ssl/ipn.simpay.pem;
ssl_verify_client optional;
ssl_verify_depth 2 ;
location /notify {
if ($ssl_client_verify != "SUCCESS" ) { return 403 ; }
if ($ssl_client_fingerprint != $simpay_fingerprint ) {
return 403 ;
}
}
Certyfikat IPN SimPay
-----BEGIN CERTIFICATE-----
MIICZjCCAe2gAwIBAgIUESmcYMAYfB5YTAGSqCyOay9OnZgwCgYIKoZIzj0EAwIw
czEmMCQGA1UEAwwdUGF5bWVudHMgU29sdXRpb25zIFJvb3QgQ0EgWDExJjAkBgNV
BAoMHVBheW1lbnRzIFNvbHV0aW9ucyBzcC4geiBvLm8uMRQwEgYDVQQHDAtLcmFz
bm9zaWVsYzELMAkGA1UEBhMCUEwwHhcNMjExMTExMTg0NzI5WhcNMzExMTA5MTg0
NzI5WjBzMSYwJAYDVQQDDB1QYXltZW50cyBTb2x1dGlvbnMgUm9vdCBDQSBYMTEm
MCQGA1UECgwdUGF5bWVudHMgU29sdXRpb25zIHNwLiB6IG8uby4xFDASBgNVBAcM
C0tyYXNub3NpZWxjMQswCQYDVQQGEwJQTDB2MBAGByqGSM49AgEGBSuBBAAiA2IA
BE371EkfU3OZJj6aUnv4JLfQ773ShbEooYxFc//DsWVi0rps0MUlpLuWpDN9tqdh
DJWQpdXq2Pam3nbzEr/klHeFRBBdI4ghWjs3GX+KxNUMMp0qVFNxZ+oBDdBkb7GD
s6NCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
FMplUBx3+kPIl5fkMLREXv5DwQyvMAoGCCqGSM49BAMCA2cAMGQCMGLV6BCrVb/W
RjsFkmho+qVUa9mdm54dPDI4JZ5rb98BnU0xxSGpPwXc+odSgPox7QIwXP1vJztU
qPn0D9ZdNFSIg7wpppLwIfhniv3gy4khuI9PAuWF76rjs90+Ij/pR67n
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICWjCCAeGgAwIBAgIUcPa5Jqg71Be/IaLIlPy4XDLJJP8wCgYIKoZIzj0EAwIw
czEmMCQGA1UEAwwdUGF5bWVudHMgU29sdXRpb25zIFJvb3QgQ0EgWDExJjAkBgNV
BAoMHVBheW1lbnRzIFNvbHV0aW9ucyBzcC4geiBvLm8uMRQwEgYDVQQHDAtLcmFz
bm9zaWVsYzELMAkGA1UEBhMCUEwwHhcNMjExMTExMTk0OTUwWhcNMzExMTA5MTk0
OTUwWjBnMRowGAYDVQQDDBFTaW1wYXkgUm9vdCBDQSBYMTEmMCQGA1UECgwdUGF5
bWVudHMgU29sdXRpb25zIHNwLiB6IG8uby4xFDASBgNVBAcMC0tyYXNub3NpZWxj
MQswCQYDVQQGEwJQTDB2MBAGByqGSM49AgEGBSuBBAAiA2IABE9noXtjwMQ0IlDy
Anddos7JRYf3EcCbW8/ilHQcBxkE8828iTK+4bw1h8KYRzEfJRSZmZMlbH8AKPSC
oukSbSAnMMSu8vQ2QBQKwjjsxIttLv63HHBQ4c5k7C6WYm28C6NCMEAwDgYDVR0P
AQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFDPp5r7ojf5I/9pO
Z6uZKGAoJwS7MAoGCCqGSM49BAMCA2cAMGQCMCgFY0DWNkHPr1yV7inFuKPIKUBT
XzWc7F1vlcWszNuNJtyaxiSUsmysYxyxD0+QEwIwQ53zxnkppiw9+luTIZAxkchi
DoEV+E1e5GR8f4QaKCPIb4y9qp9dpWd9328sXvVP
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICCDCCAY2gAwIBAgIUUGkJrAO+6V0xrOcbZ5szLAix4bIwCgYIKoZIzj0EAwIw
ZzEaMBgGA1UEAwwRU2ltcGF5IFJvb3QgQ0EgWDExJjAkBgNVBAoMHVBheW1lbnRz
IFNvbHV0aW9ucyBzcC4geiBvLm8uMRQwEgYDVQQHDAtLcmFzbm9zaWVsYzELMAkG
A1UEBhMCUEwwHhcNMjIwMjA3MTk0MTU3WhcNMzIwMjA1MTk0MTU3WjBjMRYwFAYD
VQQDDA1TaW1wYXkgSVBOIFgxMSYwJAYDVQQKDB1QYXltZW50cyBTb2x1dGlvbnMg
c3AuIHogby5vLjEUMBIGA1UEBwwLS3Jhc25vc2llbGMxCzAJBgNVBAYTAlBMMHYw
EAYHKoZIzj0CAQYFK4EEACIDYgAEmFd9ZEds0KBVKuRsi50sO+B+NUJM2MRbXnTh
7kkStVk8XFIzOHWEhbppttB1RaOrPpIT/Ys/+/YXWAGTAvubuWYH2rDYFv8h54gU
VI8HGK81aVbQmv8ln5tug7rKKmKtMAoGCCqGSM49BAMCA2kAMGYCMQC7sy+9bFAU
ZWUWgI0KRFWSYTwdhOC4V84+Ea4PCvVPha26hMe9NqB1A1Vf3tInBWUCMQD0x33e
8jDjlCiXN0jDf+5gKsREQs9Q2pF6r+P7uzX26dT+OvOz6IfJlYS+SEXYHjU=
-----END CERTIFICATE-----
Adresy IP serwerów
Powiadomienia z serwerów SimPay wysyłane są z następujących adresów IP