我一直在尝试将支付网关集成到django的网站中。 我无法从支付网关获取响应数据。
支付网关有php的示例文档,如下所示:
$ErrorTx = isset($_POST['Error']) ? $_POST['Error'] : ''; //Error Number
$ErrorResult = isset($_POST['ErrorText']) ? $_POST['ErrorText'] : ''; //Error message
$payID = isset($_POST['paymentid']) ? $_POST['paymentid'] : ''; //Payment Id
在输入卡详细信息等后,支付网关重定向到的URL的视图中,我正在检查它是否为GET if request.method == "GET"
,然后将请求传递给函数。当我调试请求时,我可以看到一个空的查询字典。如果我尝试像res = request.GET ['paymentid']这样的错误,我会收到一条错误,上面写着没有名为paymentid的密钥。
我错过了一些明显的东西吗?我还是django的新手,所以我确定我做错了。
答案 0 :(得分:32)
res = request.GET['paymentid']
不在GET数据中,则 KeyError
会引发paymentid
。
您的示例php代码会检查POST数据中是否有paymentid
,否则会将$payID
设置为'
$payID = isset($_POST['paymentid']) ? $_POST['paymentid'] : ''
python中的等价物是使用get()
方法和默认参数:
payment_id = request.POST.get('payment_id', '')
在调试时,这是我在
中看到的内容response.GET: <QueryDict: {}>
,request.POST: <QueryDict: {}>
看起来好像问题没有访问POST数据,但没有POST数据。你是怎么调试的?您使用的是浏览器,还是访问您网页的支付网关?如果您分享您的观点会很有帮助。
一旦你设法将一些帖子数据提交到你的页面,将示例php转换为python应该不会太棘手。
答案 1 :(得分:1)
您应该可以访问请求对象上的POST字典。