Tarlanpayments
Рус
Рус
  • Платежный шлюз
    • Общая информация
      • Процесс одностадийного платежа
      • Процесс двухстадийного платежа
      • Виды операций
      • 3D-Secure
      • PCI DSS
    • Типы транзакций
    • Структура ответов системы
    • Коды ошибок
    • Статусы транзакций
    • Формирование подписи
    • Дополнительные параметры
    • Взаимодействие с формой оплаты
      • Инициация приёма денежных средств
      • Инициация вывода денежных средств
      • Привязка карты
      • Инициация приёма денежных средств посредством Apple Pay
      • Инициация приёма денежных средств посредство Google Pay
      • Iframe
    • Платежи без формы оплаты
      • Платеж по сохраненной карте (one click)
      • Вывод денежных средств (pay-out)
      • Шифрование платежной карты
    • Вспомогательные методы
      • Удаление привязанной карты
      • Проверка статуса транзакции
      • Получение списка карт
      • Возврат платежа
      • Расчет верхней комиссии
      • Подтверждение списания средств
      • Отмена списания средств
    • Webhook платежной системы
      • Статус оплаты
      • Готовность проведения оплаты
    • Smart Pay
      • Google pay
    • CMS
      • WordPress
      • Bitrix
      • Tilda
    • Сводка изменений
  • AGWS
    • Коды состояния аккаунта
    • Статусы транзакции
    • Коды ошибок
    • Причина отклонения операции
    • Время жизни транзакции
    • Формирование подписи
    • Проверка состояния аккаунта
    • Проведение платежа
    • Проверка статуса пополнения
    • Проверка остатка баланса на счету
    • Подтверждение списания средств
    • Создание ссылки на оплату
    • Информация по услугам
    • Получение информации о юзере
    • Callback платежной системы
  • Получение фискального чека
  • Расчет верхней комиссии
Powered by GitBook
On this page
  1. AGWS

Формирование подписи

Запросы для взаимодействия с сервисом подписываются с использованием алгоритма SHA256.

Подпись формируется отдельно для каждого запроса.

Для формирования подписи, выполните следующие шаги:

  1. Тело запроса сортируется по алфавиту и кодируется в BASE64.

  2. Конкатенируем кодированное тело запроса и secret_key(предоставляется отдельно)

  3. Используя хэш функцию SHA256 хэшируем полученный результат конкатенации

  4. Добавляем подпись в заголовках запроса X-Signature

В формировании подписи не учавствуют ключи имеющие вложенную структуру:

  • info

Поля запроса заполненные как "" не участвуют в формировании подписи./

import json
import base64
import hashlib
#Тело запроса меняется в зависимости от запроса

request_data = {
  "agent": "tarlan",
  "project": "mobile",
  "service_code": "101",
}
#Для примера взяли secret 12345
secret = "12345"

sorted_data = json.dumps(
      request_data,
      sort_keys=True,
      ensure_ascii=False,
      separators=(',', ':'),
  )


base64_encoded_data = base64.b64encode(sorted_data.encode()).decode()

data_to_sign = base64_encoded_data + secret

sha256_hash = hashlib.sha256(data_to_sign.encode()).hexdigest()

print("Sign:",sha256_hash)
package main

import (
  "crypto/sha256"
  "encoding/base64"
  "encoding/json"
  "fmt"
) 
//Тело запроса меняется в зависимости от запроса

type Request struct {
  Agent       string `json:"agent"`
  Project     string `json:"project"`
  ServiceCode string `json:"service_code"`
}
//Для примера secret 12345
const secret = "12345"

func main() {
  request := Request{
      Agent:       "tarlan",
      Project:     "mobile",
      ServiceCode: "101",
  }

  notSortedJson, err := json.Marshal(&request)
  if err != nil {
      panic(err)
  }

  var notSortedMap map[string]interface{}

  if err = json.Unmarshal(notSortedJson, &notSortedMap); err != nil {
      panic(err)
  }

  sortedJson, err := json.Marshal(&notSortedMap)
  if err != nil {
      panic(err)
  }

  signData := base64.StdEncoding.EncodeToString(sortedJson)

  sign := sha256.Sum256([]byte(signData + secret))
fmt.Printf("Sign: %x", sign)
}

Last updated 3 days ago