API платёжного шлюза интернет-эквайринга Help

Примеры выполнения запросов

Приведённые ниже примеры проверены на работоспособность в тестовой среде.

Примеры

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