Я почитал и мне все понятно.
https://developer.qiwi.com/ru/bill-payments/?shell...
Напишите что конкретно не понятно в данной документации.
Вот накидал приблизительный пример по документации:
import hmac
import hashlib
from base64 import b64encode
@app.route("/qiwi-notify", methods=['POST'])
def QiwiNotify():
error = 1
req = request.json.get("bill")
qSignature = request.headers.get("X-Api-Signature-SHA256")#предположительно строка в base64
hSignature = b64encode(hmac.new(config["SECRET_QIWI_KEY"],msg="{}|{}|{}|{}|{}".format(\
req["amount"]["currency"],req["amount"]["value"],req["billId"],req["siteId"],req["status"]["value"]\
),digestmod=hashlib.sha256).digest())
#для отладки
print ([qSignature,hSignature])
print (req)
if qSignature == hSignature:
#заносим в базу данные о счете и меняем error если неудачно.
error = 0
return jsonify({"error":error})