Примеры выполнения запросов
Приведённые ниже примеры проверены на работоспособность в тестовой среде.
Примеры
curl --key crt/bspb_test.key --cert crt/bspb_test.pem \
-H "Content-Type: application/json" \
-H "Authorization:Basic %base64Credentials%" \
-d "{
\"order\": {
\"typeRid\": \"Purchase\",
\"amount\": \"100.00\",
\"currency\": \"RUB\",
\"title\": \"TXPG API cURL Название заказа\",
\"description\": \"TXPG API cURL Описание заказа\",
\"hppRedirectUrl\":\"https://pgtest.bspb.ru/status\"
}
}" https://pgtest.bspb.ru:5443/order
%base64Credentials% - username:password в Base64-URL
curl --key crt/bspb_test.key --cert crt/bspb_test.pem -H "Content-Type: application/json" -H "Authorization:Basic %base64Credentials%" -d "{"order": {"typeRid": "Purchase", "amount": "100.00", "currency": "RUB", "title": "TXPG API cURL title", "description": "TXPG API cURL desc", "hppRedirectUrl":"https://pgtest.bspb.ru/status"}}" https://pgtest.bspb.ru:5443/order
%base64Credentials% - username:password в Base64-URL
// URL, на который нужно отправить запрос
$pay_url = "https://pgtest.bspb.ru:5443/order";
// Данные для авторизации
$username = '';
$password = '';
$credentials = $username . ':' . $password;
$base64Credentials = base64_encode($credentials);
// Путь к ключу и сертификату
$certificate_path = './crt/bspb_test.pem';
$private_key_path = './crt/bspb_test.key';
// Данные для отправки в формате JSON
$body_request = [
'order' => [
'typeRid' => 'Purchase',
'amount' => 100.00,
'currency' => 'RUB',
'title' => 'TXPG API PHP Название заказа',
'description' => 'TXPG API PHP Описание заказа',
'hppRedirectUrl' => 'https://pgtest.bspb.ru/status'
]
];
// Инициализация cURL-сессии
$ch = curl_init($pay_url);
// Настройки POST-запроса
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($body_request));
// Установка заголовков для отправки JSON и базовой авторизации
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Authorization: Basic ' . $base64Credentials
]);
// Настройка для использования сертификата и ключа при выполнении запроса
curl_setopt($ch, CURLOPT_SSLCERT, $certificate_path);
curl_setopt($ch, CURLOPT_SSLKEY, $private_key_path);
// Настройка для получения ответа от сервера
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// Выполнение запроса и получение результата
$response = curl_exec($ch);
// Проверка на наличие ошибок
if(curl_errno($ch)) {
echo 'Ошибка cURL: ' . curl_error($ch);
} else {
// Обработка полученного ответа
$responseData = json_decode($response, true);
if ($responseData) {
// Проверка наличия объекта order в ответе
if (isset($responseData['order'])) {
$order = $responseData['order'];
// Проверка наличия необходимых полей в объекте order
if (isset($order['hppUrl'], $order['id'], $order['password'])) {
// Формирование итоговой ссылки
$hppUrl = $responseData['order']['hppUrl'];
$order_id = $responseData['order']['id'];
$order_password = $responseData['order']['password'];
$finalUrl = "$hppUrl?id=$order_id&password=$order_password";
// Использование итоговой ссылки
echo "Итоговая ссылка: $finalUrl<br>";
} else {
echo 'Объект order не содержит необходимых данных.';
}
} else {
echo 'Ответ не содержит объекта order.';
}
} else {
echo 'Ошибка разбора JSON-ответа.';
}
}
// Закрытие cURL-сессии
curl_close($ch);
import requests
from requests.auth import HTTPBasicAuth
# URL, на который нужно отправить запрос
pay_url = 'https://pgtest.bspb.ru:5443'
# Заголовки запроса
headers = {'Content-Type': 'application/json'}
# Данные для авторизации: username, password
auth = HTTPBasicAuth('', '')
# Путь к ключу и сертификату
certificate_path = 'crt/bspb_test.pem'
private_key_path = 'crt/bspb_test.key'
# Тело запроса
create_order = {
'order': {
'typeRid': 'Purchase',
'amount': 100.00,
'currency': 'RUB',
'title': 'TXPG API Python Название заказа',
'description': 'TXPG API Python Описание заказа',
'hppRedirectUrl': 'https://pgtest.bspb.ru/status'
}
}
# Выполнение запроса и получение результата
response = requests.post(f'{pay_url}/order', headers=headers, auth=auth, cert=(certificate_path, private_key_path),
json=create_order)
# Проверка кода ответа
if response.status_code == 200:
responseData = response.json()
# Проверка наличия объекта order в ответе
if 'order' in responseData:
order = responseData['order']
# Проверка наличия необходимых полей в объекте order
if 'hppUrl' in order and 'id' in order and 'password' in order:
hppUrl = order['hppUrl']
order_id = order['id']
order_password = order['password']
# Формирование итоговой ссылки
final_url = f'{hppUrl}?id={order_id}&password={order_password}'
# Использование итоговой ссылки
print(f'Итоговая ссылка: {final_url}')
else:
print('Объект order не содержит необходимых данных.')
else:
print('Ответ не содержит объекта order.')
else:
print(f'Ошибка {response.status_code} при запросе: {response.text}')
const https = require('https');
const fs = require('fs');
// URL, на который отправляется запрос
const url = 'https://pgtest.bspb.ru:5443/order';
// Данные для отправки в формате JSON
const data = {
order: {
typeRid: 'Purchase',
amount: 100,
currency: 'RUB',
title: 'TXPG API Node.js Название заказа',
description: 'TXPG API Node.js Описание заказа'
}
};
const options = {
method: 'POST',
// Путь к ключу и сертификату
key: fs.readFileSync('./crt/bspb_test.key'),
cert: fs.readFileSync('./crt/bspb_test.pem'),
// Установка заголовков для отправки JSON и базовой авторизации
headers: {
'Content-Type': 'application/json',
'Authorization': 'Basic ' + Buffer.from('' + ':' + '').toString('base64')
}
};
// Отправка запроса и обработка ответа
const req = https.request(url, options, (res) => {
let responseData = '';
res.on('data', (chunk) => {
responseData += chunk;
});
res.on('end', () => {
// Проверка кода ответа
if (res.statusCode === 200) {
try {
const parsedData = JSON.parse(responseData);
// Проверка наличия объекта order в ответе
if (parsedData.order) {
const order = parsedData.order;
// Проверка наличия необходимых полей в объекте order
if (order.hppUrl && order.id && order.password) {
// Формирование итоговой ссылки
const finalUrl = `${order.hppUrl}?orderid=${order.id}&password=${order.password}`;
// Использование итоговой ссылки
console.log(`Итоговая ссылка: ${finalUrl}`);
} else {
console.log('Объект order не содержит необходимых данных.');
}
} else {
console.log('Ответ не содержит объекта order.');
}
} catch (error) {
console.error('Ошибка:', error);
}
} else {
console.error(`Ошибка ${res.statusCode} при запросе: ${responseData}`);
}
});
});
req.on('error', (error) => {
console.error('Ошибка запроса:', error);
});
req.write(JSON.stringify(data));
req.end();
package main
import (
"bytes"
"crypto/tls"
"encoding/base64"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
"strconv"
)
func main() {
// URL, на который отправляется запрос
url := "https://pgtest.bspb.ru:5443/order"
// Данные для отправки в формате JSON
data := map[string]interface{}{
"order": map[string]interface{}{
"typeRid": "Purchase",
"amount": 100,
"currency": "RUB",
"title": "TXPG API Go Название заказа",
"description": "TXPG API Go Описание заказа",
},
}
jsonData, err := json.Marshal(data)
if err != nil {
fmt.Println("Ошибка при кодировании в JSON:", err)
return
}
req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
if err != nil {
fmt.Println("Ошибка при создании запроса:", err)
return
}
// Данные для авторизации: username:password
auth := "" + ":" + ""
basicAuth := "Basic " + base64.StdEncoding.EncodeToString([]byte(auth))
// Заголовки запроса
req.Header.Set("Authorization", basicAuth)
req.Header.Set("Content-Type", "application/json")
// Путь к ключу и сертификату
cert, err := tls.LoadX509KeyPair("./crt/bspb_test.pem", "./crt/bspb_test.key")
if err != nil {
fmt.Println("Ошибка при загрузке ключа и сертификата:", err)
return
}
tlsConfig := &tls.Config{
Certificates: []tls.Certificate{cert},
}
transport := &http.Transport{
TLSClientConfig: tlsConfig,
}
client := &http.Client{
Transport: transport,
}
resp, err := client.Do(req)
if err != nil {
fmt.Println("Ошибка при отправке запроса:", err)
return
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("Ошибка при чтении ответа:", err)
return
}
// Проверка кода ответа
if resp.StatusCode == http.StatusOK {
var responseData map[string]interface{}
if err := json.Unmarshal(body, &responseData); err != nil {
fmt.Println("Ошибка при разборе JSON:", err)
return
}
// Проверка наличия объекта order в ответе
order, ok := responseData["order"].(map[string]interface{})
if !ok {
fmt.Println("Ответ не содержит объекта order")
return
}
// Проверка наличия hppUrl, password в объекте order
hppUrl, hppUrlExists := order["hppUrl"].(string)
password, passwordExists := order["password"].(string)
// Проверка наличия id в объекте order
rawID, idIsNumber := order["id"]
var id string
// Проверка типа (float, string) id в объекте order
if idIsNumber {
idFloat, ok := rawID.(float64)
if !ok {
fmt.Println("ID не является числом")
return
}
id = strconv.FormatFloat(idFloat, 'f', -1, 64)
} else {
idString, ok := rawID.(string)
if !ok {
fmt.Println("ID не является строкой")
return
}
id = idString
}
if hppUrlExists && passwordExists {
// Формирование итоговой ссылки
finalURL := fmt.Sprintf("%s?orderid=%s&password=%s", hppUrl, id, password)
// Использование итоговой ссылки
fmt.Println("Итоговая ссылка:", finalURL)
} else {
fmt.Println("Объект order не содержит необходимых данных")
}
} else {
fmt.Printf("Ошибка %d при запросе: %s\n", resp.StatusCode, string(body))
}
}
Версии
cURL 8.1.2, libcurl/8.1.2, LibreSSL/3.3.6, zlib/1.2.11, nghttp2/1.45.1
PHP 8.2.12 (cli), Zend Engine v4.2.12
Python 3.12.1, requests-2.31.0
Node.JS 20.10.0
Go 1.21.5 darwin
Postman
Last modified: 09 апреля 2024