我的 dict 和 OrderedDict 在 django 上遇到了这个错误(我使用哪个无关紧要)。 我正在尝试提交一个 CHECKSUM do paygate,我使用数据字典用我的 md5 哈希生成它。我从 paygate 得到的响应是 PAY_REQUEST_ID 和在我的 post_payment 方法中用 dict_ 重新生成的 CHECKSUM。我得到了正确的响应,因为我可以看到我的 PAY_REQUEST_ID 和新的 CHECKSUM 但由于某种原因,'collections.OrderedDict' 对象没有属性 'headers' 错误弹出,我没有在我的代码中的任何地方使用 'headers'。>
有人可以帮助确定我做错了什么。
提前致谢
#just for reference i am putting 2 items in dict
response_data = OrderedDict()
data = {
'PAYGATE_ID' : '10011072130',
'REFERENCE' : 'pgtest_123456789',
}
CHECKSUM = calculate_md5(data)
url = 'https://secure.paygate.co.za/payweb3/initiate.trans'
data['CHECKSUM'] = CHECKSUM
data['url'] = url
hash_valid, response_data = post_payment(data)
if not hash_valid:
return HttpResponseForbidden('FAILED')
response_data.pop('PAYGATE_ID')
response_data.pop('REFERENCE')
return response_data
def post_payment(data):
url = data.pop('url')
response = requests.post(url,data=data)
dict_ = OrderedDict()
new = response.text.split('&')
print(new)
for item in new:
list_ = item.split('=')
key = list_[0]
value = list_[1]
dict_[key] = value
is_equal, dict_['CHECKSUM'] = validate_checksum(dict_)
return is_equal, dict_
def validate_checksum(data):
hash_ = data.pop('CHECKSUM')
new_hash = calculate_md5(data)
return hash_ == new_hash, new_hash
完整追溯
response = get_response(request)
AttributeError("'collections.OrderedDict' 对象没有属性 'headers'")
获取响应
response = self.process_response(request, response)
请求
OrderedDict([('PAY_REQUEST_ID', '9D29D540-FED8-9693-FEA1-2D6B64A5868E'),
('校验和', '097e4a83deb5f5c3840ea3e2b69e422e')])
自己
答案 0 :(得分:0)
删除了“return resonse_data”并解决了该错误。
CHECKSUM = calculate_md5(data)
url = 'https://secure.paygate.co.za/payweb3/initiate.trans'
data['CHECKSUM'] = CHECKSUM
data['url'] = url
hash_valid, response_data = post_payment(data)
if not hash_valid:
return HttpResponseForbidden('FAILED')
response_data.pop('PAYGATE_ID')
response_data.pop('REFERENCE')