Здравствуйте.
Нужна помощь с privatbank api.
делал всё по документации -
https://api.privatbank.ua/#p24/balance
from requests import post
from hashlib import sha1,md5
from re import sub,search
url = "https://api.privatbank.ua/p24api/balance"
xml_string = open('test.xml','r').read()
sign = str(search('\w{32}',xml_string).group())
sha1_md5_sign = sha1(md5(sign).hexdigest()).hexdigest()
data = str(sub(sign, sha1_md5_sign, xml_string))
res = post(url, data=data, headers={'Content-Type':'application/xml; charset=UTF-8'})
print data
print res.text
то что отправляю ( data ):
<?xml version="1.0" encoding="UTF-8"?>
<request version="1.0">
<merchant>
<id>133777</id>
<signature>ec57cf1953d1027e0aae08e1d09f05fbcf3e6c20</signature>
</merchant>
<data>
<oper>cmt</oper>
<wait>0</wait>
<test>0</test>
<payment id="">
<prop name="cardnum" value="1337133713371337" />
<prop name="country" value="UA" />
</payment>
</data>
</request>
test.xml:
<?xml version="1.0" encoding="UTF-8"?>
<request version="1.0">
<merchant>
<id>133777</id>
<signature>p99CtLx7FR2rZ7ux78C41xmlGGjHfsec</signature>
</merchant>
<data>
<oper>cmt</oper>
<wait>0</wait>
<test>0</test>
<payment id="">
<prop name="cardnum" value="1337133713371337" />
<prop name="country" value="UA" />
</payment>
</data>
</request>
Пароль нормально шифруется в sha1md5, 40 символов, по идее всё должно быть нормально.
Но, в результате получаю ответ:
<?xml version="1.0" encoding="UTF-8"?><response version="1.0"><data><error message ="invalid signature" /></data></response>
Убирал табы, пробелы, писал в одну строку, всегда один ответ "invalid signature"