YandexMoneyHttpNotification
ΠΠΎΠ³Π΄Π° ΡΠ°ΠΉΡΠΎΠ² ΠΌΠ½ΠΎΠ³ΠΎ, Π° ΠΊΠΎΡΠ΅Π»ΡΠΊ ΠΎΠ΄ΠΈΠ½. PHP-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ HTTP-ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ ΠΎΡ Π―Π½Π΄Π΅ΠΊΡ.ΠΠ΅Π½Π΅Π³ ΠΈ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΡ
Π½Π° Π½ΡΠΆΠ½ΡΠΉ ΡΠ°ΠΉΡ., (*1)
ΠΠ΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ YandexMoneyHttpNotification Π―Π½Π΄Π΅ΠΊΡ.ΠΠ΅Π½ΡΠ³ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΏΠ»Π°ΡΠ΅ΠΆΠΈ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΡΠ° Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΡΠ΅Π»ΡΠΊΠ°.
, (*2)
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ YandexMoneyHttpNotification Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΏΠ»Π°ΡΠ΅ΠΆΠΈ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΡΠ΅Π»ΡΠΊ, Π½ΠΎ Ρ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΡΠ°ΠΉΡΠΎΠ².
, (*3)
Π’ΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠ΅ΡΠ΅Π· Composer
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Composer.
- ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅ ΠΏΠ°ΠΊΠ΅Ρ Π² Π²Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ
php composer.phar require dimns/yandexmoneyhttpnotification
ΠΈΠ»ΠΈ composer require dimns/yandexmoneyhttpnotification
(Π΅ΡΠ»ΠΈ composer ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎ).
- ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΡ Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ (Π΅ΡΠ»ΠΈ Π΅ΡΠ΅ Π½Π΅ ΡΠ΄Π΅Π»Π°Π»ΠΈ ΡΡΠΎΠ³ΠΎ):
require 'vendor/autoload.php';
.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅
// ΠΠ»ΠΈΠ΅Π½ΡΡΠΊΠ°Ρ ΡΠ°ΡΡΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²Π°ΡΠ΅ΠΌ ΡΠ°ΠΉΡΠ΅, Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΎΠΏΠ»Π°ΡΡ
$yamnotif = new \DimNS\YandexMoneyHttpNotification\Client('ΠΠΎΠΌΠ΅Ρ ΠΊΠΎΡΠ΅Π»ΡΠΊΠ°', 'Π‘Π΅ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ');
echo $yamnotif->generateButton('mysite#123', 'ΠΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π»ΠΈΡΠ½ΠΎΠ³ΠΎ ΡΡΡΡΠ°', 500, 'http://mysite.tld/payments/success', 's');
// Π‘Π΅ΡΠ²Π΅ΡΠ½Π°Ρ ΡΠ°ΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π·Π°ΠΏΡΠΎΡΡ ΠΎΡ Π²ΡΠ΅Ρ
ΡΠ°ΠΉΡΠΎΠ²
// Π£ΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π·Π΄Π΅ΡΡ: https://money.yandex.ru/myservices/online.xml
// ΠΡΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ
Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ
$yamnotif = new \DimNS\YandexMoneyHttpNotification\Server('Π‘Π΅ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ');
// ΠΠ»Π°ΡΡΠΆ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΏΡΠΎΠ²Π΅Π΄ΡΠ½, ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΎ
if ($yamnotif->check($_POST) == '200 OK') {
// ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΌΠ΅ΡΠΊΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΊΠ°Π·Π°Π½ ΡΠ°ΠΉΡ ΠΈ Π½ΠΎΠΌΠ΅Ρ Π·Π°ΠΊΠ°Π·Π° (ΠΈΠ»ΠΈ Π»ΡΠ±Π°Ρ Π΄ΡΡΠ³Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ)
$data = explode('#', $_POST['label']);
switch ($data[0]) {
// Π£Π²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠ°ΠΉΡΠ°
case 'mysite':
// ΠΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΠΌΡ ΡΠ°ΠΉΡΡ
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => 'http://mysite.tld/payments/paid',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => [
'secretkey' => 'Π‘Π΅ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ ΡΠ°ΠΉΡΠ°',
'datetime' => $_POST['datetime'],
'operation_id' => $_POST['operation_id'],
'user_id' => $data[1], // ΠΠ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
'amount' => $_POST['withdraw_amount'], // Π‘ΡΠΌΠΌΠ°, ΡΠΏΠΈΡΠ°Π½Π½Π°Ρ Ρ ΠΏΠ»Π°ΡΠ΅Π»ΡΡΠΈΠΊΠ°
],
]);
$return = json_decode(curl_exec($ch), true);
curl_close($ch);
break;
}
}