Callback
При изменении статуса заказа платежный шлюз автоматически инициирует процесс отправки уведомления. Это уведомление направляется на адрес, указанный в настройках ТСП на стороне платежного шлюза.
Пример получаемых данных:
ORDER_ID: 2000000005753
ORDER_RID: null
ORDER_STATUS: Preparing
Примеры
if ($_SERVER['REQUEST_METHOD'] === 'POST' && parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH) === '/bspb/callback') {
$order_id = $_POST['ORDER_ID'] ?? null;
$order_rid = $_POST['ORDER_RID'] ?? null;
$order_status = $_POST['ORDER_STATUS'] ?? null;
if ($order_id !== null && $order_rid !== null && $order_status !== null) {
echo "ORDER_ID: $order_id\n";
echo "ORDER_RID: $order_rid\n";
echo "ORDER_STATUS: $order_status\n";
http_response_code(200);
echo "POST запрос успешно получен\n";
} else {
http_response_code(400);
echo "Ошибка: не все необходимые поля предоставлены\n";
}
} else {
http_response_code(404);
echo "Ресурс не найден\n";
}
from flask import Flask, request
app = Flask(__name__)
@app.route('/bspb/callback', methods=['POST'])
def bspb_callback():
if request.method == 'POST':
data = request.form
order_id = data.get('ORDER_ID')
order_rid = data.get('ORDER_RID')
order_status = data.get('ORDER_STATUS')
print('ORDER_ID:', order_id)
print('ORDER_RID:', order_rid)
print('ORDER_STATUS:', order_status)
return 'POST запрос успешно получен\n'
else:
return 'Ресурс не найден\n', 404
if __name__ == '__main__':
app.run(host='0.0.0.0', port=443, ssl_context=('server.pem', 'server.key'))
const https = require('https');
const fs = require('fs');
const querystring = require('querystring');
const options = {
key: fs.readFileSync('server.key'),
cert: fs.readFileSync('server.pem')
};
const server = https.createServer(options, (req, res) => {
if (req.method === 'POST' && req.url === '/bspb/callback') {
let body = '';
req.on('data', (chunk) => {
body += chunk.toString();
});
req.on('end', () => {
const parsedBody = querystring.parse(body);
console.log('ORDER_ID:', parsedBody.ORDER_ID);
console.log('ORDER_RID:', parsedBody.ORDER_RID);
console.log('ORDER_STATUS:', parsedBody.ORDER_STATUS);
res.end('POST запрос успешно получен\n');
});
} else {
res.writeHead(404, {'Content-Type': 'text/plain'});
res.end('Ресурс не найден\n');
}
});
const port = 443;
server.listen(port, () => {
console.log(`Сервер запущен на порту ${port}`);
});
package main
import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/bspb/callback", func(w http.ResponseWriter, r *http.Request) {
if r.Method == "POST" {
err := r.ParseForm()
if err != nil {
http.Error(w, "Ошибка при парсинге данных", http.StatusBadRequest)
return
}
orderID := r.FormValue("ORDER_ID")
orderRID := r.FormValue("ORDER_RID")
orderStatus := r.FormValue("ORDER_STATUS")
fmt.Println("ORDER_ID:", orderID)
fmt.Println("ORDER_RID:", orderRID)
fmt.Println("ORDER_STATUS:", orderStatus)
w.WriteHeader(http.StatusOK)
w.Write([]byte("POST запрос успешно получен\n"))
} else {
http.NotFound(w, r)
}
})
err := http.ListenAndServeTLS(":443", "server.pem", "server.key", nil)
if err != nil {
fmt.Println("Ошибка запуска сервера:", err)
}
}
Last modified: 15 марта 2024