成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

記錄django-rest-framework處理微信支付notify_url遇到的問(wèn)題

kk_miles / 2504人閱讀

摘要:微信支付統(tǒng)一下單接口,有一個(gè)叫的參數(shù),作用我就照搬官方文檔異步接收微信支付結(jié)果通知的回調(diào)地址,通知必須為外網(wǎng)可訪問(wèn)的,不能攜帶參數(shù)。

最近在做一個(gè)小程序,小程序有涉及到微信支付,說(shuō)來(lái)慚愧,還是第一次自己動(dòng)手去做微信支付這一塊的實(shí)現(xiàn),所以過(guò)程中遇到了很多人都會(huì)踩的坑(例如mmp的微信支付各種key各種id要在哪里找,很難找),這次使用django來(lái)開發(fā),接口部分用django-rest-framework(下面簡(jiǎn)稱drf)。

入入入入入正題吧。

微信支付統(tǒng)一下單接口,有一個(gè)叫notify_url的參數(shù),作用我就照搬官方文檔:

異步接收微信支付結(jié)果通知的回調(diào)地址,通知url必須為外網(wǎng)可訪問(wèn)的url,不能攜帶參數(shù)。

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

好了,我前面的支付功能都寫好了,就等微信爸爸來(lái)調(diào)我的notify_url了,測(cè)試支付完之后,屁顛屁顛跑去IDE的控制臺(tái)看debug輸出,結(jié)果有Traceback,找找里面的關(guān)鍵信息:Unsupported media type "text/xml" in request.,哭唧唧。

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

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

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

滿心歡喜重新測(cè)試一次,結(jié)果還是不對(duì),追查了下,發(fā)現(xiàn)了關(guān)鍵所在,微信調(diào)用notify_url的時(shí)候,Content-Typetext/xml而不是application/xml,真是mmp,看了下XMLParser的源碼,改起來(lái)很簡(jiǎn)單:

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

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

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

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/41817.html

相關(guān)文章

  • 記錄django-rest-framework處理微信支付notify_url遇到問(wèn)題

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

    NicolasHe 評(píng)論0 收藏0
  • 記錄django-rest-framework處理微信支付notify_url遇到問(wèn)題

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

    Lorry_Lu 評(píng)論0 收藏0
  • 淺析微信支付:申請(qǐng)退款、退款回調(diào)接口、查詢退款

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

    silenceboy 評(píng)論0 收藏0
  • nodejs微信支付之掃碼支付

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

    Olivia 評(píng)論0 收藏0
  • 淺析微信支付支付結(jié)果通知

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

    Dean 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<