Как правильно составить подпись в api Cryptomus?

Рейтинг: 0Ответов: 1Опубликовано: 26.06.2023
def create_invoice(self, amount, currency):
    json_data = {
        'currency': currency,
        'amount': amount,
        'merchant': self.merchant_id,
        'order_id': ''.join(random.choice(string.ascii_uppercase) for _ in range(10))
    }
    data = json.dumps(json_data)
    data_base64 = base64.b64encode(data.encode('utf-8')).decode('utf-8')
    sign = hashlib.md5((data_base64 + self.token).encode('utf-8')).hexdigest()
    json_data['sign'] = sign
    resp = self.session.post(f'{self.api_url}/v1/payment', headers=self.session.headers, json=json_data)
    print(resp.json())

документация: https://doc.cryptomus.com/getting-started/request-format

Возвращает такой ответ:

{'message': 'Invalid Sign.'}

Ответы

▲ 0

Вот пример кода на python:

import json
import hashlib
import base64
import requests

data = {
    'amount': '15',
    'currency': 'USD',
    'order_id': '1',
    'url_callback': 'https://example.com'
}

APIKEY = 'your_api_key'
MERCHANTUUID = 'your_merchant_uuid'

data = json.dumps(data, separators=(',', ':'))
sign = hashlib.md5((base64.b64encode(data.encode('utf-8')).decode('utf-8') + APIKEY).encode('utf-8')).hexdigest()

url = 'https://api.cryptomus.com/v1/payment/services'
headers = {
    'merchant': MERCHANTUUID,
    'sign': sign,
    'Content-Type': 'application/json'
}

response = requests.post(url, headers=headers, data=data)

result = response.content.decode('utf-8')
print(result)