我试图检索传递给函数的 URL 参数,按照它们实际传递的顺序。这很重要的原因是它的支付提供商集成,它通过连接传递的值(按照传递的顺序)计算哈希值。因此,基于此,我需要按照参数在实际 URL 中传递的顺序访问参数,将它们连接起来,然后添加一个对我的帐户保密的 MD5 密钥来验证请求。
例如: http ://example.com/order/callback?date=20200101¤cy=USD&txnid=1234567&hash=thegeneratedhas
如果我通过 request.GET 访问请求,我会得到有序的字典。
伪代码
def callback(request):
keys_concatenated = ""
for value in request.GET:
if value == "hash":
pass
else:
keys_concatenated = keys_concatenated + request.GET[value]
这会生成一个字符串,如:USD202001011234567 提供者生成的用于保留订单的哈希值,因此期望值为 20200101USD1234567
在 urls.py 中定义参数并不是我真正想要的,因为支付提供商公开表示他们可能会更改传递的参数,因此会破坏实现。我也不知道他们不时传递它的实际顺序。