Start 2 Pay
PHP SDK Π΄Π»Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Ρ ΡΠ΅ΡΠ²ΠΈΡΠΎΠΌ https://start2pay.com
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ API Start 2 Pay https://wiki.start2pay.com, (*1)
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°
ΠΠ»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Composer, (*2)
composer require lapaygroup/start2pay
Π€Π°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ
ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ SDK Π½ΡΠΆΠ½ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ yaml ΡΠ°ΠΉΠ».
ΠΡΠΈΠΌΠ΅Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΡΡ., (*3)
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²:
- auth
- host - Π°Π΄ΡΠ΅Ρ API
- username - Π»ΠΎΠ³ΠΈΠ½
- password - ΠΏΠ°ΡΠΎΠ»Ρ
- salt - ΡΠΎΠ»Ρ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°
- callback_salt - ΡΠΎΠ»Ρ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ callbacks
- display_options
- language - ΡΠ·ΡΠΊ ΠΏΠ»Π°ΡΠ΅ΠΆΠ½ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ
- iframe - ΡΠ»Π°Π³ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ iframe Π²ΠΌΠ΅ΡΡΠΎ ΠΏΠ΅ΡΠ΅Π°Π΄ΡΠ΅ΡΠ°ΡΠΈΠΈ Π½Π° ΠΏΠ»Π°ΡΠ΅ΠΆΠ½ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ Start 2 Pay
- close_additional_tabs: - ΡΠ»Π°Π³ Π·Π°ΠΊΡΡΡΠΈΡ Π²ΡΠ΅Ρ
Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
Π²ΠΊΠ»Π°Π΄ΠΎΠΊ
- device - ΡΠΈΠΏ ΡΡΡΡΠΎΠΉΡΡΠ²Π° (desktop, mobile)
- theme - ΡΠ²Π΅ΡΠΎΠ²Π°Ρ ΡΡ
Π΅ΠΌΠ° ΠΏΠ»Π°ΡΠ΅ΠΆΠ½ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ (layout2_white, layout2_black, layout2_dark, layout2_violet)
- message - Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Π·Π°ΠΊΠ°Π·ΡΠΈΠΊΠ°. Such rules, limits, etc
- description - ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΠΎΠ΅ Π½Π° ΠΏΠ»Π°ΡΠ΅ΠΆΠ½ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅.
- disable_payment_currency - ΠΠ°Π½Π½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ΠΎΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ true ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ Π½Π° ΡΠΎΡΠΌΠ΅ ΠΎΠΏΠ»Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΡ Π²Π°Π»ΡΡΡ (currency) ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π°ΡΡ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΏΠ»Π°ΡΠ΅ΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°
- available_payment_systems - ΠΌΠ°ΡΡΠΈΠ²Ρ Ρ Π°Π»ΠΈΠ°ΡΠ°ΠΌΠΈ ΠΏΠ»Π°ΡΠ΅ΠΆΠ½ΡΡ
Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΉ Π²Π²ΠΎΠ΄Π° ΠΈ Π²ΡΠ²ΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° Π½Π° ΠΏΠ»Π°ΡΠ΅ΠΆΠ½ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅., (*4)
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ SDK
ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠ»Π°ΡΠ΅ΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° (ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΏΠ»Π°ΡΠ΅ΠΆΠ½ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ ΠΈΠ»ΠΈ iframe) Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²ΡΠ°Ρ ΠΌΠ΅ΡΠΎΠ΄ getContext., (*5)
ΠΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΡΡΠ»ΠΊΠΈ, (*6)
$payInfo['currency'] = 'RUB';
$payInfo['amount'] = '150.00';
$payInfo['invoice'] = '100';
$payInfo['user_id'] = '123456';
$payInfo['selected_payment_system'] = 'bank_cards';
try {
$API = new \LapayGroup\Start2Pay\API('path/to/config.yml');
$context = $API->getContext($payInfo);
if (! empty($context['payment_url']) {
header('Location: '.$context['payment_url']);
} else {
// ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠ»Π°ΡΠ΅ΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°
}
}
catch(\Exception $e) {
// ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΡΠΈΠ±ΠΊΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° Ρ Start 2 Pay
}
ΠΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ callback Π·Π°ΠΏΡΠΎΡΠΎΠ² Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΠΈ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ»Π°ΡΡ ΠΎΡ Start 2 Pay ΡΠ°ΠΊΠΆΠ΅ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΠΏΠΎΠ΄ΠΏΠΈΡΡ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ signature Π² JSON ΠΌΠ°ΡΡΠΈΠ²Π΅ Π΄Π°Π½Π½ΡΡ
. ΠΠ»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ validCallbackSignature. ΠΠ° Π²Ρ
ΠΎΠ΄ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ JSON ΡΠ΅ΠΊΡΡ ΠΈΠ· Π·Π°ΠΏΡΠΎΡΠ°., (*7)
ΠΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ, (*8)
try {
$API = new \LapayGroup\Start2Pay\API('path/to/config.yml');
$valid = $API->validCallbackSignature($json);
if ($valid) {
// ΠΠΎΠ΄ΠΏΠΈΡΡ Π²Π΅ΡΠ½Π° - ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌ callback
} else {
// ΠΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌ ΠΎΡΠΈΠ±ΠΊΡ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ
}
}
catch(\Exception $e) {
// ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΡΠΈΠ±ΠΊΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° Ρ Start 2 Pay
}