2016-12-20 51 views
0

我要在我的項目中實現paystation支付網關,這個網關的響應方式有兩種,一種是在返回url之後返回url,另一種是POST url,post url在後臺工作它適用於所有其他支付網關,它返回所有與POST URL有關的支付響應,並以XML格式返回結果。如何在django通過電子郵件發送功能錯誤報告

我想在我的電子郵件中發送此回覆,以便我可以檢查響應參數,因此我使用此代碼。

def payment_post(request): 
    responseData = xmltodict.parse(request.POST) 
    msg = EmailMultiAlternatives('Post Parameters', responseData, '[email protected]', ['[email protected]']) 
    msg.send() 

它不給我上我的電子郵件ID的任何細節,但是當我使用此代碼

msg = EmailMultiAlternatives('Post Parameters', 'Testing data', '[email protected]', ['[email protected]']) 
msg.send() 

它向我發送郵件以「測試數據」作爲郵件的內容和「POST參數」爲主題,所以這意味着有一些問題在解析XML或我沒有得到任何後期數據的迴應。

所以我想檢查錯誤,有沒有什麼辦法可以得到這個錯誤的詳細信息,我可以發送錯誤的詳細信息在我的電子郵件ID?

編輯: - 我得到這個XML響應

<?xml version="1.0" standalone="yes"?> 
<InitiationRequestResponse> 
<Username> 
605002 
</Username> 
<RequestIP> 
203.118.134.77 
</RequestIP> 
<RequestUserAgent/> 
<RequestHttpReferrer/> 
<PaymentRequestTime>2008-10-02 15:59:29</PaymentRequestTime> 
<DigitalOrder> 
https://payments.paystation.co.nz/hosted/?hk=KBzTIBy5oYEI 
</DigitalOrder> 
<DigitalOrderTime>2008-10-02 15:59:30</DigitalOrderTime> 
<DigitalReceiptTime/> 
<PaystationTransactionID>0000000466-01</PaystationTransactionID> 
</InitiationRequestResponse> 

感謝

+0

是responseData是一個字符串或者像一個字符串一樣嘎嘎的東西? – moopet

+0

響應是在XML中,我解析它在實際上,其實文檔是在PHP中,但我必須在Python中轉換它,所以很多我面臨的問題。 – Pankaj

回答

0

我希望你需要一個XML字符串需要xmltodictparse功能, 首先你需要從POSTXML串,需要更改代碼類似於下面的代碼,需要注意的是,需要注意的是,

  • POST ['data']表示您正在使用的表格的關鍵字
  • 如果您要從HTTP正文發送數據,則需要使用request.body.decode('utf-8')替換 request.POST ')
  • request.FILES ['filename']。read(),如果您正在上傳文件(xml文件),其中表單鍵爲'文件名'。

    import json 
    def payment_post(request): 
        responseData = xmltodict.parse(request.POST['data']) 
        responseString = json.dumps(responseData) # or you can use just str(responseData) if you have simple data values 
        msg = EmailMultiAlternatives('Post Parameters', responseString, '[email protected]', ['[email protected]']) 
        msg.send() 
    

如果事情是獲得POST形式鍵&值字典,request.POST是的QueryDict對象不是你需要什麼,該代碼就可以改變

def payment_post(request): 
    responseData = xmltodict.parse(request.POST.dict()) 
    msg = EmailMultiAlternatives('Post Parameters', responseData, '[email protected]', ['[email protected]']) 
    msg.send() 
+0

Plz檢入編輯,這個響應我得到的XML響應,我必須寫request.POST ['數據']中的「數據」? – Pankaj

+0

我認爲你在考慮request.POST是否爲發佈數據,但不是, 檢查我的更新後@Pankaj –

+0

我也使用過這個,但現在它給了我錯誤: - 必須是字符串或只讀緩衝區,而不是字典 – Pankaj

相關問題