国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

記錄django-rest-framework處理微信支付notify_url遇到的問題

Lorry_Lu / 1026人閱讀

摘要:微信支付統一下單接口,有一個叫的參數,作用我就照搬官方文檔異步接收微信支付結果通知的回調地址,通知必須為外網可訪問的,不能攜帶參數。

最近在做一個小程序,小程序有涉及到微信支付,說來慚愧,還是第一次自己動手去做微信支付這一塊的實現,所以過程中遇到了很多人都會踩的坑(例如mmp的微信支付各種key各種id要在哪里找,很難找),這次使用django來開發,接口部分用django-rest-framework(下面簡稱drf)。

入入入入入正題吧。

微信支付統一下單接口,有一個叫notify_url的參數,作用我就照搬官方文檔:

異步接收微信支付結果通知的回調地址,通知url必須為外網可訪問的url,不能攜帶參數。

吐槽:官方文檔竟然不告訴我到時候是通過Get還是Post(難道是其他HTTP method)請求我,我怕我到時候措不及防,事實證明,是通過Post來請求的。

好了,我前面的支付功能都寫好了,就等微信爸爸來調我的notify_url了,測試支付完之后,屁顛屁顛跑去IDE的控制臺看debug輸出,結果有Traceback,找找里面的關鍵信息:Unsupported media type "text/xml" in request.,哭唧唧。

唔,聰明如我,drf可以自定義parser類,官方文檔也有提到一個xml的parser,安裝了,然后為這個接口指定了parser_classes,代碼如下:

# ...省略
class WechatNotifyView(APIView):
    """
    微信回調接口
    """
    authentication_classes = []
    permission_classes = (AllowAny,)
    parser_classes = (XMLParser,)

    def post(self, request):
        print(request.data)
        return Response()

滿心歡喜重新測試一次,結果還是不對,追查了下,發現了關鍵所在,微信調用notify_url的時候,Content-Typetext/xml而不是application/xml,真是mmp,看了下XMLParser的源碼,改起來很簡單:

# ...省略
class WechatPaymentXMLParser(XMLParser):
    media_type = "text/xml"

class WechatNotifyView(APIView):
    # ...省略
    parser_classes = (WechatPaymentXMLParser,)
    # ...省略    
    

再測試了一次,搞定,request.data打印出來的就是那個xml內容的字典形式。
吐槽:微信的東西總是有吐不完的槽,但爸爸始終是爸爸。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/44738.html

相關文章

  • 記錄django-rest-framework處理微信支付notify_url遇到問題

    摘要:微信支付統一下單接口,有一個叫的參數,作用我就照搬官方文檔異步接收微信支付結果通知的回調地址,通知必須為外網可訪問的,不能攜帶參數。 最近在做一個小程序,小程序有涉及到微信支付,說來慚愧,還是第一次自己動手去做微信支付這一塊的實現,所以過程中遇到了很多人都會踩的坑(例如mmp的微信支付各種key各種id要在哪里找,很難找),這次使用django來開發,接口部分用django-rest-...

    NicolasHe 評論0 收藏0
  • 記錄django-rest-framework處理微信支付notify_url遇到問題

    摘要:微信支付統一下單接口,有一個叫的參數,作用我就照搬官方文檔異步接收微信支付結果通知的回調地址,通知必須為外網可訪問的,不能攜帶參數。 最近在做一個小程序,小程序有涉及到微信支付,說來慚愧,還是第一次自己動手去做微信支付這一塊的實現,所以過程中遇到了很多人都會踩的坑(例如mmp的微信支付各種key各種id要在哪里找,很難找),這次使用django來開發,接口部分用django-rest-...

    kk_miles 評論0 收藏0
  • 淺析微信支付:申請退款、退款回調接口、查詢退款

    摘要:注意交易時間超過一年的訂單無法提交退款微信支付退款支持單筆交易分多次退款,多次退款需要提交原支付訂單的商戶訂單號和設置不同的退款單號。 本文是【淺析微信支付】系列文章的第八篇,主要講解商戶如何處理微信申請退款、退款回調、查詢退款接口,其中有一些坑的地方,會著重強調。 淺析微信支付系列已經更新七篇了喲~,沒有看過的朋友們可以看一下哦。 淺析微信支付:查詢訂單和關閉訂單 淺析微信支付:支...

    silenceboy 評論0 收藏0
  • nodejs微信支付之掃碼支付

    前言 本篇文章主要是記錄本人在微信掃碼支付過程中所遇到的問題,給大家一個借鑒作用,希望對你們有幫助 開發環境 nodejs v8.1.0 egg v1.1.0 準備工作 微信公眾號-appid 微信商戶號-mch_id key值(簽名算法所需,其實就是一個32位的密碼,可以用md5生成一個)(key設置路徑:微信商戶平臺(pay.weixin.qq.com)-->賬戶設置-->API安全...

    Olivia 評論0 收藏0
  • 淺析微信支付支付結果通知

    摘要:本文是淺析微信支付系列文章的第六篇,主要講解支付成功后,微信回調商戶支付結果通知的處理。微信支付支付回調接口該鏈接是通過統一下單中提交的參數設置,如果鏈接無法訪問,商戶將無法接收到微信通知。 本文是【淺析微信支付】系列文章的第六篇,主要講解支付成功后,微信回調商戶支付結果通知的處理。 淺析微信支付系列已經更新五篇了喲~,沒有看過的朋友們可以看一下哦。 淺析微信支付:統一下單接口 淺析...

    Dean 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<