Регистрация Войти
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
Уведомление о поступление платежей из Бланк - банка
Готовое решение для уведомления о поступившем платеже от Бланк-банка по API. Удобно автоматом разносить поступающие по СБП платежи в режиме реального времени. Для получения уведомления нужно получить в чате банка:define("ClientId","external.xxxxxxxxxxxxxxxxxxxxxxxxx.m2m"); define("ClientSecret","xxxxxxxxxx-xxxxxx-xxxxxx-xxxxx-xxxxxxxxxxx"); define("ObjectId","xxxxxxxxxxx-xxxxxxxxx-xxxxxx-xxxxxxx-xxxxxxxxxx");
Далее используйте данный код на php для получения уведомления об операциях. Полезно при приеме платежей по СБП сразу проставлять признак оплаты в вашей учетной системе.
Не забудьте пробить чек, т.к. все что вы получаете по СБП от физ.лиц - должно пробиваться по кассе!
Файл /blanc/webhook.php:
define("ClientId","external.xxxxxxxxxxxxxxxxxxxxxxxxx.m2m");
define("ClientSecret","xxxxxxxxxx-xxxxxx-xxxxxx-xxxxx-xxxxxxxxxxx");
define("Scopes",'partners:webhooks');
define("ObjectId","xxxxxxxxxxx-xxxxxxxxx-xxxxxx-xxxxxxx-xxxxxxxxxx");
$input=file_get_contents("php://input");
syslog(LOG_INFO, 'input:'.$input."\nServer:".json_encode($_SERVER));
try{
@$update=json_decode($input,true);
}catch(Exception $e){
syslog(LOG_INFO, "json_decode Error\n".$input);
exit;
}
if(empty($update)) { // если данных нет, установлю webhook
syslog(LOG_INFO, "устанавливаю webhook");
echo "<br>получаю токен ";
$ret = api('api/sso/connect/token', [
'client_id' => ClientId,
'client_secret' => ClientSecret,
'scope' => Scopes,
'grant_type' => 'client_credentials'
]);
var_dump($ret);
if (!isset($ret['error'])&&!empty($ret['access_token'])) {
$token = $ret['access_token'];
echo "<br>подписываюсь на операции ";
$ret = api('api/gateway-webhook-service/v1/subscriptions', [
"Topic" => "CompanyTransactionCompleted",
"ObjectId" => ObjectId,
"Url" => 'https://' . Get::SERVER_NAME() . '/blanc/webhook.php',
"Secret" => ClientSecret
]);
var_dump($ret);
echo "<br>получение списка всех подписок ";
$ret = api('api/gateway-webhook-service/v1/subscriptions');
var_dump($ret);
if(!empty($ret['value'])&&count($ret['value'])>1) {// если больше одной, удаляю лишние
echo "<br>удаление одной подписки ";
$ret = api('api/gateway-webhook-service/v1/subscriptions/'.$ret['value'][0]['id'], [],"DELETE");
var_dump($ret);
}
echo "<br>получение списка всех подписок ";
$ret = api('api/gateway-webhook-service/v1/subscriptions');
var_dump($ret);
}
}else{ // пришли деньги
if(!empty($update['Purpose']) && !strpos($update['Purpose'], 'Зачисление средств по платежу СБП')!==false){
// это поступление по СБП
}
die('Ok');
}
/**
* @param string $cmd - команда
* @param array $post - данные
* @param string $method - '' | DELETE | PUT
* @return mixed|null
*/
function api($cmd, $post=[], $method=''){
//$ch = curl_init("https://api-gate.vestabankdev.ru/release/" . $cmd); // это тестовый сервер
$ch = curl_init('https://m.blanc.ru/' . $cmd);
if($post) curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
global $token;
if(empty($token)) {
$headers = ['Content-type: application/x-www-form-urlencoded'];
if($post) curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));
}else{
$headers = ['Content-Type: application/json', 'Authorization: Bearer '.$token];
if($post) curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post,JSON_UNESCAPED_UNICODE));
}
if(!empty($method))curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$body = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
$body=json_decode($body);
syslog(LOG_INFO, $cmd."\n".json_encode($post,JSON_UNESCAPED_UNICODE)."\nres: ".json_encode($body,JSON_UNESCAPED_UNICODE));
return $body;
}
Нужна помощь, - обращайтесь.
.
Прокомментировать/Отблагодарить