Как правильно составить подпись в api Cryptomus?
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.'}
Ответы (1 шт):
Автор решения: Timur8956
→ Ссылка
Вот пример кода на 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)