@Dango45

Не получается адаптировать php скрипт в python скрипт?

Добрый день. Работаю с апи Pikassa. не получаеться создать счет для оплаты через апи на Python. У них есть пример скрипта для создания счета для оплаты. Не получаеться этот скрипт адаптировать на Python. Ссылка на докуменацию: https://pikassa.io/docs/#d8b27845eb . Возможно у меня не получаеться создать цифровую подпись. Сервер возвращает ошибку -1 Forbidden.
Скрипт для создания счета для оплаты на php

<?php

$secret = "тут секретный ключ";
$apiKey = "апи ключ";


$ch = curl_init("https://pikassa.io/merchant-api/api/v2/invoices");

$payload = json_encode(array(
    "externalId" => uniqid(),
    "amount" => 105.05,
    "currency" => "RUB",
    "description" => "Оплата заказа"
), 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);

if (curl_errno($ch)) {
    var_dump(curl_error($ch));
}

curl_close($ch);
?>


Мой скрипт для оплаты на Python

import requests
import hashlib
import base64
import json

url = "https://pikassa.io/merchant-api/api/v2/invoices"

amount = 105.05
shop = 0001
uuid = "cvbbxcvxvxvc"
currency = "RUB"
desc = "Оплата заказа"
secret = "секретный ключ"
apiKey = "апи ключ"

params = {
	"externalId": uuid,
	"amount": amount,
	"description": desc
}
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
}



res = requests.post(url, headers=headers, data=params)
print(res.text)


На php все работает прекрасно. Подскажите что я делаю не так
  • Вопрос задан
  • 131 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы