我正在尝试从avangate验证ipn,为此我需要验证HASH。文档在这里: https://developer.avangate.com/Webhooks/Instant_Payment_Notification_(IPN)#Calculate_the_HASH_signature
从POST上的avangate,我收到一个包含HASH参数的QueryDict,我尝试创建一个新的md5,它需要与QueryDict中的md5相同。
我的代码:
signature = data['HASH']
result = ''.encode('UTF-8')
for key, value in data.items():
if key == 'HASH':
continue
else:
if not str(value).strip():
result += "0".encode('UTF-8')
else:
result += str(len(value)).encode('UTF-8') + value.encode('UTF-8')
result_hash = hmac.HMAC(secret_key.encode('UTF-8'), result).hexdigest()
print(signature == result_hash)
我尝试了很多东西,但我无法让它发挥作用。在Avangate上,我选择了标签Notification details