У меня не получается переписать код с php на python?
`
<?php
$apiKey = "";
$secret = "";
$ch = curl_init("https://pikassa.io/merchant-api/api/v2/invoices");
$payload = json_encode(array(
"externalId" => uniqid(),
"amount" => 105.05,
"currency" => "RUB",
"description" => "Оплата заказа",
"customerPhone" => "+74994550185",
"customerEmail" => "[email protected]",
"customData" => array("key1" => "value1", "key2" => 5),
"successUrl" => "https://mysite.com/successUrl",
"failUrl" => "https://mysite.com/failUrl",
"deliveryMethod" => "URL",
"expirationDate" => "2021-03-14 11:08:24.090915+03:00",
"ofdData" => null,
"preAuth" => false
), JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
var_dump($payload);
$sign = base64_encode(md5($payload . $secret, true));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"Content-Type:application/json",
"X-Api-Key:" . $apiKey,
"X-Sign:" . $sign
));
$res = curl_exec($ch);
var_dump($res);
if (curl_errno($ch)) {
var_dump(curl_error($ch));
}
curl_close($ch);
?>
url = "https://pikassa.io/merchant-api/api/v2/invoices"
secret = "26737e7a9f0c435a80f68cd0431ae216"
apiKey = "aeb13fd8-3803-4e93-8e33-3ded29d144a6"
params = {
"externalId": "3c5301df-d806-4fb0-9f96-f44d5d2d3827",
"amount": 105.05,
"currency": "RUB",
"description": "Оплата заказа",
"deliveryMethod": "EMAIL",
}
params2 = json.dumps(params) + secret
sign = hashlib.md5(params2.encode("utf-8")).hexdigest()
sign2 = base64.b64encode(sign.encode())
headers = {
"Content-Type": "application/json; charset=utf-8",
"X-Api-Key": apiKey,
"X-Sign": sign2.decode('utf-8')
}
data = json.dumps(params)
key = json.dumps(headers)
test = json.loads(key)
res = requests.post(url, headers=test, data=data)
print(res.text)
` Пытаюсь отправлять запросы но возникает ошибка неправильный X-Sign, не понимаю что я не так делаю. Документация к api https://pikassa.io/docs/#6bad239f3a
Получаю в ответ
{
"success": false,
"error": {
"code": "-1",
"message": "Forbidden",
"correlationId": "1a4acf90-ffa4-4224-93c1-78ccb6db09fc" }
}
Ответы (1 шт):
Автор решения: Nonen_Hook
→ Ссылка
Попробуйте этот код:
import json
import hashlib
import base64
import requests
api_key = ""
secret = ""
url = "https://pikassa.io/merchant-api/api/v2/invoices"
payload = json.dumps({
"externalId": uniqid(),
"amount": 105.05,
"currency": "RUB",
"description": "Оплата заказа",
"customerPhone": "+74994550185",
"customerEmail": "[email protected]",
"customData": {"key1": "value1", "key2": 5},
"successUrl": "https://mysite.com/successUrl",
"failUrl": "https://mysite.com/failUrl",
"deliveryMethod": "URL",
"expirationDate": "2021-03-14 11:08:24.090915+03:00",
"ofdData": None,
"preAuth": False,
}, ensure_ascii=False)
sign = base64.b64encode(hashlib.md5(payload.encode() + secret.encode()).digest()).decode()
headers = {
"Content-Type": "application/json",
"X-Api-Key": api_key,
"X-Sign": sign,
}
res = requests.post(url, data=payload, headers=headers)
print(res.text)