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
int
Strona
limit
int
Limit wyników. domyślnie: 15, maksymalnie: 99
Opis obiektu
Nazwa
Typ
Opis
Total
int
Liczba wszystkich rekordów w obiekcie
Count
int
Liczba rekordów na aktualnej stronie
PerPage
int
Ilość rekordów maksymalnie na stronie
CurrentPage
int
Aktualna strona
TotalPages
int
Ilość wszystkich stron
links.NextPage
string
URL następnej strony
links.PrevPage
string
URL poprzedniej strony
SMS
sms := simpay. NewSms ( "0b4dca15" , "3eea38f407073ff0abff956b57d71783" ) ;
Opis parametrów
Nazwa
Typ
Wymagany?
Opis
apiKey
string
Tak
Klucz API z panelu klienta
apiPassword
string
Tak
Hasło API z panelu Klienta
Dostepne metody w obiekcie sms
Pobieranie listy usług
serviceList, err := sms. GetServiceList ( 1 , 20 )
Przykładowa odpowiedź
{
PaginatedResponse: {
Response: { Success: true Errors: map [ ] }
Pagination: { Total: 1 Count: 1 PerPage: 15 CurrentPage: 1 TotalPages: 1 Links: { NextPage: PrevPage: } }
}
ServiceList: [ { Id: 3549
Type: ONE_TIME_CODE
Status: service_active
Name: TEST Prefix: SIM
Suffix: TESTSIMPAY
Adult: false
CreatedAt: 2021 - 11 - 08 17 : 18 : 53 + 0000 UTC} ]
}
GetServiceList(page, limit uint) → (SmsServiceListResponse, error)
Opis parametrów
Nazwa
Typ
Wymagany?
Opis
page
uint
Tak
Numer strony
limit
uint
Tak
Limit obiektów na strone
Opis obiektu
Nazwa
Typ
Opis
Id
int
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
bool
Czy usługa jest 18+
CreatedAt
Time
Data utworzenia usługi w formacie: ISO 8601
serviceDetails, err := sms. GetServiceDetails ( 1676 )
Przykładowa odpowiedź
{
Response: { Success: true Errors: map [ ] }
ServiceDetails: { Id: 1
Type: ONE_TIME_CODE
Status: service_rejected
Name: TEST
Prefix: SIM
Suffix: TEST
Description: Example
description
Adult: false
Numbers: [ 7055 7136 7255 7355 7455 7555 7636 77464 78464 7936 91055 91155 91455 91664 91955 92055 92555 ]
CreatedAt: 2021 - 02 - 16 21 : 00 : 30 + 0000 UTC}
}
GetServiceDetails(serviceId uint) → (SmsServiceDetailsResponse, error)
Opis parametrów
Nazwa
Typ
Wymagany?
Opis
serviceId
uint
Tak
Id usługi
Opis obiektu
Nazwa
Typ
Opis
Id
int
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
bool
Czy usługa jest 18+
Numbers
[]string
Lista numerów SMS dostępnych w usłudze
CreatedAt
Time
Data utworzenia usługi w formacie: ISO 8601
Pobieranie listy transakcji
transactions, err := sms. GetTransactions ( 1676 , 1 , 20 )
Przykładowa odpowiedź
{
PaginatedResponse: { Response: { Success: true Errors: map [ ] }
Pagination: { Total: 3 Count: 3 PerPage: 15 CurrentPage: 1 TotalPages: 1 Links: { NextPage: PrevPage: } } }
TransactionList: [ { Id: 1 From: 48123123123 Code: ABCDEF Used: false SendAt: 1970 - 01 - 01 00 : 00 : 00 + 0000 UTC}
{ Id: 2 From: 48123123123 Code: ABCDEF Used: false SendAt: 1970 - 01 - 01 00 : 00 : 00 + 0000 UTC}
{ Id: 3 From: 48123123123 Code: ABCDEF Used: false SendAt: 1970 - 01 - 01 00 : 00 : 00 + 0000 UTC} ]
}
GetTransactions(serviceId, page, limit uint) → (SmsTransactionListResponse, error)
Opis parametrów
Nazwa
Typ
Wymagany?
Opis
serviceId
uint
Tak
Id usługi
page
uint
Tak
Strona
limit
uint
Tak
Limit obiektów na strone
Opis obiektu
Nazwa
Typ
Opis
Id
int
Id transakcji
From
int64
Numer, z którego został wysłany SMS
Code
string
Kod zwrotny SMS
Used
bool
Czy kod został wykorzystany
SendAt
Time
Data wysłania SMSa w formacie: ISO 8601
transactionDetails, err := sms. GetTransactionDetails ( 1676 , 2203305 )
Przykładowa odpowiedź
{
Response: { Success: true Errors: map [ ] }
TransactionDetails: { Id: 1 From: 48123123123 Code: ABCDEF Used: false SendNumber: 7636 Value: 6 SendAt: 1970 - 01 - 01 00 : 00 : 00 + 0000 UTC}
}
GetTransactionDetails(serviceId, transactionId uint) → (SmsTransactionDetailsResponse, error)
Opis parametrów
Nazwa
Typ
Wymagany?
Opis
serviceId
uint
Tak
Id usługi
transactionId
uin
Tak
Id transakcji
Opis odpowiedzi
Nazwa
Typ
Opis
Id
int
Id transakcji
From
int64
Numer, z którego został wysłany SMS
Code
string
Kod zwrotny SMS
Used
bool
Czy kod został wykorzystany
SendNumber
int
Numer na jaki został wysłany SMS
Value
float64
Koszt wysłanego SMSa netto
SendAt
Time
Data wysłania SMSa w formacie: ISO 8601
Pobieranie dostępnych numerów dla usługi
numbers, err := sms. GetServiceNumbers ( 1676 , 1 , 20 )
Przykładowa odpowiedź
{
PaginatedResponse: { Response: { Success: true Errors: map [ ] }
Pagination: { Total: 9 Count: 9 PerPage: 15 CurrentPage: 1 TotalPages: 1 Links: { NextPage: PrevPage: } } }
NumberList: [ { Number: 70908 Value: 0.5 ValueGross: 0.62 Adult: true }
{ Number: 71908 Value: 1 ValueGross: 1.23 Adult: true }
{ Number: 72998 Value: 2 ValueGross: 2.46 Adult: true }
{ Number: 73908 Value: 3 ValueGross: 3.69 Adult: true }
{ Number: 75908 Value: 5 ValueGross: 6.15 Adult: true }
{ Number: 76908 Value: 6 ValueGross: 7.38 Adult: true }
{ Number: 79908 Value: 9 ValueGross: 11.07 Adult: true }
{ Number: 91998 Value: 19 ValueGross: 23.37 Adult: true }
{ Number: 92598 Value: 25 ValueGross: 30.75 Adult: true } ]
}
GetServiceNumbers(int $serviceId, int $page, int $limit) → array
Opis parametrów
Nazwa
Typ
Wymagany?
Opis
serviceId
uint
Tak
Id usługi
page
uint
Tak
Strona
limit
uint
Tak
Limit obiektów na strone
Opis obiektu
Nazwa
Typ
Opis
Number
int
Numer SMSa
value
float64
Kwota netto
ValueGross
float64
Kwota brutto
Adult
bool
Czy jest 18+
numberDetails, err := sms. GetServiceNumberDetails ( 7055 , 1676 )
Przykładowa odpowiedź
{
Response: { Success: true Errors: map [ ] }
NumberDetails: { Number: 70908 Value: 0.5 ValueGross: 0.62 Adult: true }
}
GetServiceNumberDetails(serviceId uint, number int64) → (NumberDetailsResponse, error)
Opis parametrów
Nazwa
Typ
Wymagany?
Opis
serviceId
uint
Tak
Id usługi
number
uint
Tak
Numer
Opis odpowiedzi
Nazwa
Typ
Opis
Number
int
Numer SMSa
Value
float64
Kwota netto
ValueGross
float64
Kwota brutto
Adult
bool
Czy jest 18+
Pobieranie wszystkich dostępnych numerów
numbers, err := sms. GetNumbers ( 1 , 20 )
Przykładowa odpowiedź
{
PaginatedResponse: { Response: { Success: true Errors: map [ ] }
Pagination: { Total: 26 Count: 15 PerPage: 15 CurrentPage: 1 TotalPages: 2 Links: { NextPage: https: / / api. simpay. pl/ sms/ numbers?page= 2 PrevPage: } } }
NumberList: [ { Number: 7055 Value: 0.5 ValueGross: 0.62 Adult: false }
{ Number: 7255 Value: 2 ValueGross: 2.46 Adult: false }
{ Number: 7136 Value: 1 ValueGross: 1.23 Adult: false }
{ Number: 7355 Value: 3 ValueGross: 3.69 Adult: false }
{ Number: 7455 Value: 4 ValueGross: 4.92 Adult: false }
{ Number: 7555 Value: 5 ValueGross: 6.15 Adult: false }
{ Number: 7636 Value: 6 ValueGross: 7.38 Adult: false }
{ Number: 77464 Value: 7 ValueGross: 8.61 Adult: false }
{ Number: 78464 Value: 8 ValueGross: 9.84 Adult: false }
{ Number: 7936 Value: 9 ValueGross: 11.07 Adult: false }
{ Number: 91055 Value: 10 ValueGross: 12.3 Adult: false }
{ Number: 91155 Value: 11 ValueGross: 13.53 Adult: false }
{ Number: 91455 Value: 14 ValueGross: 17.22 Adult: false }
{ Number: 91664 Value: 16 ValueGross: 19.68 Adult: false }
{ Number: 91955 Value: 19 ValueGross: 23.37 Adult: false } ]
}
)
GetNumbers(page, limit uint) → (NumberListResponse, error)
Opis parametrów
Nazwa
Typ
Wymagany?
Opis
page
uint
Tak
Strona
limit
uint
Tak
Limit obiektów na strone
Opis odpowiedzi
Nazwa
Typ
Opis
Number
int
Numer SMSa
Value
float
Kwota netto
ValueGross
float
Kwota brutto
Adult
bool
Czy jest 18+
Pobieranie pojedyńczego numeru sms
sms.GetNumberDetails(number int64) → (NumberDetailsResponse, error)
Opis parametrów
Nazwa
Typ
Wymagany?
Opis
number
int
Tak
Numer
Opis odpowiedzi
Nazwa
Typ
Opis
Number
int
Numer SMSa
Value
float64
Kwota netto
ValueGross
float64
Kwota brutto
Adult
bool
Czy jest 18+
Weryfikacja poprawności kodu
sms. VerifyCode ( 1636 , "AF4CXF" , 7055 )
Przykładowa odpowiedź w przypadku nowego kodu
{
Success: true
CodeVerification: { Used: false Code: 63 D9C7 Test: true From: 123123123 Number: 7055 Value: 0.5 UsedAt: 0001 - 01 - 01 00 : 00 : 00 + 0000 UTC}
}
Przykładowa odpowiedź w przypadku użytego kodu
{
Success: true
CodeVerification: { Used: true Code: 63 D9C7 Test: true From: 123123123 Number: 7055 Value: 0.5 UsedAt: 2021 - 11 - 08 00 : 56 : 00 + 0000 UTC}
}
sms.VerifyCode(serviceId uint, code string, number int64) -> (CodeVerificationResponse, error)
Opis parametrów
Nazwa
Typ
Wymagany
Opis
serviceId
int
Tak
Id usługi
code
string
Tak
Kod zwrotny z SMSa
number
int64
Tak
Numer na jaki miał zostać wysłany SMS
Opis odpowiedzi
Nazwa
Typ
Opis
Used
bool
Czy SMS został wykorzystany
Code
string
Kod zwrotny z SMSa
Test
bool
Czy testowy SMS
From
string
Numer z jakiego wysłano SMSa
Number
int
Numer na jaki wysłano SMSa
Value
int
Kwota netto kosztu SMSa
UsedAt
Time
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
smsXml := simpay. NewSmsXml ( "testKey" )
NewSmsXml(hashingKey string) → SmsXml
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
hashKey
string
Tak
Klucz do tworzenia sygnatury znajdujący się w panelu klienta w usłudze
isValid := smsXml. CheckParameters ( m map [ string ] interface { } )
value := smsXml. GetNumberValue ( "7455" )
code := smsXml. GenerateCode ( )
xml := smsXml. GenerateXml ( code)
DirectBilling
directBilling := simpay. NewDirectBilling ( "0b4dca15" , "3eea38f407073ff0abff956b57d71783" )
Opis parametrów
Nazwa
Typ
Wymagany?
Opis
apiKey
string
Tak
Klucz API z panelu klienta
apiPassword
string
Tak
Hasło API z panelu Klienta
Dostepne metody w obiekcie sms
Pobieranie listy usług
directBilling. GetServiceList ( 1 , 20 )
Przykładowa odpowiedź
{
PaginatedResponse: { Response: { Success: true Errors: map [ ] }
Pagination: { Total: 3 Count: 3 PerPage: 15 CurrentPage: 1 TotalPages: 1 Links: { NextPage: PrevPage: } } }
ServiceList: [ { Id: 1 Name: Testowa usługa Suffix: TEST1 Status: service_db_rejected CreatedAt: 2021 - 10 - 01 12 : 57 : 18 + 0000 UTC}
{ Id: 2 Name: Testowa usługa Suffix: TEST2 Status: service_active CreatedAt: 2021 - 10 - 01 13 : 57 : 18 + 0000 UTC}
{ Id: 3 Name: Testowa usługa Suffix: TEST3 Status: service_active CreatedAt: 2021 - 10 - 01 14 : 57 : 18 + 0000 UTC} ]
}
GetServiceList(page, limit uint) → (DirectBillingServiceListResponse, error)
Opis parametrów
Nazwa
Typ
Wymagany?
Opis
page
uint
Tak
Numer strony
limit
uint
Tak
Limit obiektów na strone
Opis odpowiedzi
Nazwa
Typ
Opis
Id
int
Id usługi
Name
string
Nazwa usługi
Suffix
string
Suffix usługi
Status
string
Status usługi, po więcej informacji sprawdź Modele
CreatedAt
Time
Data utworzenia usługi w formacie: ISO 8601
directBilling. GetServiceDetails ( 139 )
Przykładowa odpowiedź
{
Response: { Success: false Errors: map [ ] }
ServiceDetails: { Id: 0 Name: Suffix: Status: Api: { Complete: Failure: }
Providers: { TMobile: false Orange: false Play: false Plus: false }
Commissions: { TMobile: { Commission0: Commission9: Commission25: }
Orange: { Commission0: Commission9: Commission25: }
Play: { Commission0: Commission9: Commission25: }
Plus: { Commission0: Commission9: Commission25: } }
MaxValues: { TMobile: Orange: Play: Plus: }
CreatedAt: 0001 - 01 - 01 00 : 00 : 00 + 0000 UTC}
}
GetServiceDetails(serviceId uint) → (DirectBillingServiceDetailsResponse, error)
Opis parametrów
Nazwa
Typ
Wymagany?
Opis
serviceId
uint
Tak
Id usługi
Opis odpowiedzi
Nazwa
Typ
Opis
Id
int
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.TMobile
bool
Dostępność operatora T-Mobile
Providers.Orange
bool
Dostępność operatora Orange
Providers.Play
bool
Dostępność operatora Play
Providers.Plus
bool
Dostępność operatora Plus
Commissions.TMobile.Commission0
string
Prowizja dla partnera w % operatora T-Mobile od kwota 0.01 zł do 8.99 zł
Commissions.TMobile.Commission9
string
Prowizja dla partnera w % operatora T-Mobile od kwota 9.00 zł do 24,99 zł
Commissions.TMobile.Commission25
string
Prowizja dla partnera w % operatora T-Mobile od kwota 25.00 zł do maksymalnej kwoty
Commissions.Orange.Commission9
string
Prowizja dla partnera w % operatora Orange od kwota 0.01 zł do 8.99 zł
Commissions.Orange.Commission25
string
Prowizja dla partnera w % operatora Orange od kwota 9.00 zł do 24,99 zł
Commissions.Orange.Commission0
string
Prowizja dla partnera w % operatora Orange od kwota 25.00 zł do maksymalnej kwoty
Commissions.Play.Commission0
string
Prowizja dla partnera w % operatora Play od kwota 0.01 zł do 8.99 zł
Commissions.Play.Commission9
string
Prowizja dla partnera w % operatora Play od kwota 9.00 zł do 24,99 zł
Commissions.Play.Commission25
string
Prowizja dla partnera w % operatora Play od kwota 25.00 zł do maksymalnej kwoty
Commissions.Plus.Commission0
string
Prowizja dla partnera w % operatora Plus od kwota 0.01 zł do 8.99 zł
Commissions.Plus.Commission9
string
Prowizja dla partnera w % operatora Plus od kwota 9.00 zł do 24,99 zł
Commissions.Plus.Commission25
string
Prowizja dla partnera w % operatora Plus od kwota 25.00 zł do maksymalnej kwoty
MaxValues.TMobile
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
CreatedAt
Time
Data utworzenia usługi w formacie: ISO 8601
Kalkulacja prowizji
directBilling.CalculateCommission(139, 4.4)
Opis paramterów
Nazwa
Typ
Wymagany
Opis
serviceId
uint
Tak
Id usługi
amount
float32
Tak
Kwota jaką chcemy otrzymać “na czysto”
Przykładowa odpowiedź
{
Response: { Success: true Errors: map [ ] }
CalculateCommission: { Orange: { Net: 285.72 Gross: 351.44 }
Play: { Net: 285.72 Gross: 351.44 }
TMobile: { Net: 333.34 Gross: 410.01 }
Plus: { Net: 333.34 Gross: 410.01 } }
}
Opis odpowiedzi
Nazwa
Typ
Opis
Orange.Net
float64
Kwota netto
Orange.Gross
float64
Kwota brutto
Play.Net
float64
Kwota netto
Play.Gross
float64
Kwota brutto
TMobile.Net
float64
Kwota netto
TMobile.Gross
float64
Kwota brutto
Plus.Net
float64
Kwota netto
Plus.Gross
float64
Kwota brutto
CalculateCommission(serviceId uint, amount float32) → (CalculateCommissionResponse, error)
Pobieranie listy transakcji
directBilling. GetTransactionList ( 139 , 1 , 20 )
Przykładowa odpowiedź
{
PaginatedResponse: { Response: { Success: true Errors: map [ ] }
Pagination: { Total: 9 Count: 9 PerPage: 30 CurrentPage: 1 TotalPages: 1 Links: { NextPage: PrevPage: } } }
TransactionList: [ { Id: 552098 Status: transaction_db_generate_error Value: 0.34 ValueNetto: 0.24 Operator: orange CreatedAt: 2021 - 10 - 20 00 : 34 : 47 + 0000 UTC UpdatedAt: 2021 - 10 - 19 22 : 34 : 47 + 0000 UTC}
{ Id: 552097 Status: transaction_db_new Value: 0.34 ValueNetto: 0.24 Operator: orange CreatedAt: 2021 - 10 - 20 00 : 34 : 14 + 0000 UTC UpdatedAt: 2021 - 10 - 19 22 : 34 : 14 + 0000 UTC}
{ Id: 552096 Status: transaction_db_new Value: 0.34 ValueNetto: 0.24 Operator: orange CreatedAt: 2021 - 10 - 20 00 : 33 : 53 + 0000 UTC UpdatedAt: 2021 - 10 - 19 22 : 33 : 53 + 0000 UTC}
{ Id: 548852 Status: transaction_db_confirmed Value: 34.46 ValueNetto: 24.12 Operator: orange CreatedAt: 2021 - 10 - 05 20 : 50 : 25 + 0000 UTC UpdatedAt: 2021 - 10 - 05 18 : 50 : 25 + 0000 UTC}
{ Id: 548851 Status: transaction_db_confirmed Value: 34.46 ValueNetto: 24.12 Operator: orange CreatedAt: 2021 - 10 - 05 20 : 48 : 26 + 0000 UTC UpdatedAt: 2021 - 10 - 05 18 : 48 : 26 + 0000 UTC}
{ Id: 544659 Status: transaction_db_confirmed Value: 13.41 ValueNetto: 6.7 Operator: plus CreatedAt: 2021 - 09 - 17 20 : 55 : 52 + 0000 UTC UpdatedAt: 2021 - 09 - 17 18 : 55 : 53 + 0000 UTC}
{ Id: 544508 Status: transaction_db_confirmed Value: 13.41 ValueNetto: 8.04 Operator: t- mobile CreatedAt: 2021 - 09 - 17 10 : 31 : 17 + 0000 UTC UpdatedAt: 2021 - 09 - 17 08 : 31 : 17 + 0000 UTC}
{ Id: 448984 Status: transaction_db_rejected Value: 13.41 ValueNetto: 6.7 Operator: plus CreatedAt: 2021 - 01 - 19 21 : 08 : 56 + 0000 UTC UpdatedAt: 2021 - 01 - 22 20 : 48 : 11 + 0000 UTC}
{ Id: 448931 Status: transaction_db_rejected Value: 13.41 ValueNetto: 8.98 Operator: orange CreatedAt: 2021 - 01 - 19 19 : 14 : 35 + 0000 UTC UpdatedAt: 2021 - 01 - 22 18 : 48 : 11 + 0000 UTC} ]
}
GetTransactionList(int $serviceId, int $page, int $limit) → array
Opis odpowiedzi
Nazwa
Typ
Opis
Id
int
Id transakcji
Status
string
Status transakcji, więcej informacji zobacz w Modelach
Value
float64
Kwota transakcji
ValueNetto
float64
Kwota transakcji netto
Operator
string
Operator, listę operatorów zobacz w Modelach
CreatedAt
Time
Data utworzenia transakcji w formacie: ISO 8601
UpdatedAt
Time
Data aktualizacji transakcji w formacie: ISO 8601
directBilling. GetTransactionDetails ( 139 , 552097 )
Przykładowa odpowiedź
{
Response: { Success: true Errors: map [ ] }
TransactionDetails: { Id: 1 Status: transaction_db_confirmed PhoneNumber: < nil > Control: 1111 Value: 16.67 ValueNetto: 10 Operator: t- mobile Notify: { IsSend: false LastSendAt: 1970 - 01 - 01 00 : 00 : 00 + 0000 UTC Count: 0 }
CreatedAt: 2021 - 09 - 17 12 : 01 : 50 + 0000 UTC UpdatedAt: 2021 - 09 - 17 10 : 01 : 50 + 0000 UTC}
}
GetTransactionDetails(int $serviceId, int $transactionId) → object
Opis odpowiedzi
Nazwa
Typ
Opis
Id
int
Id transakcji
Status
string
Status transakcji, więcej informacji zobacz w Modelach
PhoneNumber
string/nil
Numer telefonu, który został wymuszony przy generowaniu transakcji
Control
string
Status transakcji, więcej informacji zobacz w Modelach
Value
float64
Kwota transakcji
ValueNetto
float64
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.IsSend
bool
Informacja czy powiadomienie zostało wysłane
Notify.LastSendAt
Time
Data wysłania ostatniego powiadomienia w formacie: ISO 8601
Notify.Count
int
Ilość wysłanych powiadomień
CreatedAt
Time
Data utworzenia transakcji w formacie: ISO 8601
UpdatedAt
Time
Data aktualizacji transakcji w formacie: ISO 8601
Generowanie transakcji
simpay. GenerateTransactionRequest{
Amount: 11.14 ,
AmountType: "net" ,
Description: "" ,
Control: "" ,
Returns: struct {
Success string `json:"success"`
Failure string `json:"failure"`
} { } ,
PhoneNumber: "" ,
Signature: "" ,
}
Przykładowa odpowiedź
{
Response: { Success: true Errors: map [ ] }
Data: { TransactionId: 1 d87a1b3- 18 f8- 4146 - bcb1- c0c9f293b04f RedirectUrl: https: / / db. simpay. pl/ 1 d87a1b3- 18 f8- 4146 - bcb1- c0c9f293b04f}
}
GenerateTransaction(serviceId uint, request GenerateTransactionRequest) → (DirectBillingGenerateTransactionResponse, error)
Opis parametrów
Nazwa
Typ
Wymagany?
Opis
serviceId
int
Tak
Id usługi
apiKey
string
Tak
Api key z panelu klienta, dostępny w usłudze
Opis metod dostępnych w obiekcie
Nazwa
Opis
Sign(key string)
Metoda podpisująca żądanie na podstawie wszystkich parametrów
SignWithAmountAndControl(key string)
Metoda podpisująca żądanie na podstawie wartości Amount oraz Control
Typy kwoty
Nazwa
Opis
“net”
Typ kwoty transakcji netto
“gross”
Typ kwoty transakcji brutto
“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
Po wygenerowaniu transakcji użytkownika należy przekierować na url podany w odpowiedzi, można go pobrać z obiektu pod
kluczem redirectUrl
lub funkcją
transaction.Data.RedirectUrl
. Dostępna jest jeszcze funkcja TransactionId
do pobrania Id wygenerowanej transakcji.
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"
}
Opis przesłanego zapytania
Nazwa
Typ
Opis
id
int
Id transakcji
service_id
int
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
int
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