Подпись PayFast (Python): сгенерированная подпись не соответствует поданной подписи.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Подпись PayFast (Python): сгенерированная подпись не соответствует поданной подписи.

Сообщение Anonymous »

Я пытаюсь отправить платеж с платежом, используя инструменты API, в Python, а не PHP (рекомендуемый документ). < /p>
Я генерирую подпись, как SO: < /p>
import hashlib
import urllib.parse

def generate_signature(data: dict, passphrase: str) -> str:
"""
Generates an MD5 signature for PayFast API request.

- Assumes data is already in the correct order.
- URL encodes values with uppercase encoding.
- Uses '+' for spaces.
- Encodes passphrase before appending.
"""
encoded_params = []

for key, value in data.items():
if value: # Ignore empty values
encoded_value = urllib.parse.quote_plus(str(value)).upper() # URL encode & uppercase
encoded_params.append(f"{key.upper()}={encoded_value}")

# URL-encode the passphrase as well
encoded_passphrase = urllib.parse.quote_plus(passphrase).upper()

# Concatenate parameters
param_string = "&".join(encoded_params)

# Append encoded passphrase
param_string += f"&PASSPHRASE={encoded_passphrase}"

print(f"String before hashing: {param_string}")

# Generate MD5 hash
signature = hashlib.md5(param_string.encode("utf-8")).hexdigest()

print(f"Generated Signature: {signature}")
return signature

< /code>
Следуя документам для генерации подписи, похоже, что клавиши и значения параметров предназначены для верхнего чехла, и, как указано в дополнительных полях.400 signature: Generated signature does not match submitted signature.
< /code>
Вот как выглядит моя сгенерированная подпись: < /p>
string перед хэшированием: < /p>
< /p>


Подробнее здесь: https://stackoverflow.com/questions/795 ... ed-signatu
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»