1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          jersey處理支付寶異步回調通知的問題

          來源:互聯網轉載 時間:2024-01-29 07:59:44

          tcpflow以流為單位分析請求內容,非常適合服務器端接口類服務查問題

          這次遇到的問題跟支付寶支付后的回調post結果有關

          淘寶的代碼例子:

              public void doPost(HttpServletRequest request, HttpServletResponse response)throws UnsupportedEncodingException {        //??μ?′y????êy?Yoí?????μ        String sign = URLDecoder.decode(request.getParameter("sign"),"utf-8");        String content = URLDecoder.decode(request.getParameter("content"),"utf-8");        

          服務器用jersey,直接使用 @FormParam 類型參數,收到post請求,但無法處理內容,log顯示錯誤:

          java.lang.IllegalArgumentException: Error parsing media type 'application/x-www-form-urlencoded; text/html; charset=UTF-8'

          使用curl測試application/x-www-form-urlencoded 是可以解析的

          curl -d 'sign=1&notify_data=yest' "https://passport.ishuangshuang.com/credits/order/notify"

          我以為是我代碼寫法不支持,按照例子更改服務器端代碼為:

          code2:  public String verify(@Context HttpServletRequest request) {        Map map = request.getParameterMap();        log.info("[alipay] callback,map="+map);        String sign = (String) ((Object[]) map.get("sign"))[0];        String verifyData =  (String) ((Object[]) map.get("notify_data"))[0];

          仍是同樣錯誤

          使用tshark抓包,結果發現在命令行不能使用follow stream ?直接查看流內容,于是安裝tcpflow,yum ?install ?-y ?tcpflow

          使用命令?tcpflow -p dst port 8280,生成8280收到的請求流日志:

          X-Host: xxx.comX-Forwarded-Proto: httpsContent-Type: application/x-www-form-urlencoded; text/html; charset=UTF-8User-Agent: Mozilla/4.0Host: xxx.comContent-Length: 1135LOGID: 5762503519760285696CLIENTIP: 110.75.141.3X-FORWARDED-FOR: 110.75.141.3sign=mYJtdB2XmD57ReoLQkhMhUpIxmMLQltfs0opq%2Bl3prGzkA9xckxpqKMBy7vAHfCZe3ryJq1VoJxBpAv6KsaAarCn2tfcLt2EClfrZDoL967xPzLcz%2BmddlEe7ST4CHvOYg4jNaJBpxEYoDnDTmK3Rk7x%2FbfmJZwulA8OOjqGHac%3D&sign_type=RSA&notify_data=%3Cnotify%3E%3Cpartner%3E2088901361787590%3C%2Fpartner%3E%3Cdiscount%3E0.00%3C%2Fdiscount%3E%3Cpayment_type%3E1%3C%2Fpayment_type%3E%3Csubject%3E%E7%A7%AF%E5%88%86%E8%B4%AD%E4%B9%B0%3C%2Fsubject%3E%3Ctrade_no%3E2013071530259116%3C%2Ftrade_no%3E%3Cbuyer_email%3E13811437730%3C%2Fbuyer_email%3E%3Cgmt_create%3E2013-07-15+19%3A30%3A59%3C%2Fgmt_create%3E%3Cquantity%3E1%3C%2Fquantity%3E%3Cout_trade_no%3E100027%3C%2Fout_trade_no%3E%3Cseller_id%3E2088901361787590%3C%2Fseller_id%3E%3Ctrade_status%3ETRADE_FINISHED%3C%2Ftrade_status%3E%3Cis_total_fee_adjust%3EN%3C%2Fis_total_fee_adjust%3E%3Ctotal_fee%3E0.01%3C%2Ftotal_fee%3E%3Cgmt_payment%3E2013-07-15+19%3A31%3A01%3C%2Fgmt_payment%3E%3Cseller_email%3Ezhifubao%40fanxer.com%3C%2Fseller_email%3E%3Cgmt_close%3E2013-07-15+19%3A31%3A01%3C%2Fgmt_close%3E%3Cprice%3E0.01%3C%2Fprice%3E%3Cbuyer_id%3E2088502632932163%3C%2Fbuyer_id%3E%3Cuse_coupon%3EN%3C%2Fuse_coupon%3E%3C%2Fnotify%3E

          兩個問題:

          1 Content-Type 確實有問題,這么寫會導致jersey無法識別,無法解析。"Content-Type: application/x-www-form-urlencoded; text/html; charset=UTF-8" ?jersey解析type為application,然后讀到分隔符"/",x-www-form-urlencoded為 subtype,往后的數值為parameterMap ?"text/html"因為分隔符不是"=" 無法識別,HttpHeaderReader.nextSeparator報錯。不能讓我為了alipay去修改jersey源碼吧?

          2 對于單獨的jersey post注解方法,無法按照淘寶的java例子處理參數,只能以get方式添加在url后,才能以 code2 方式處理。

          搜索支付寶 notify ?,google不出有效信息,

          搜索?支付寶 ws_secure_pay,是客戶端外包同事給的包名,才找到教程,原來還得上支付寶論壇 :http://club.alipay.com/thread-htm-fid-703.html

          發現jersey 方法里不寫consume也還是不行,默認是*/* 還是識別不了多重類型,servlet不會處理content-type,到最后還是按淘寶例子用servlet實現了這個支付流程。

          標簽:www.zhifubao.com-

          網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...

          在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...

          在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...

          安卓11obb訪問限制怎么解除?Android 11obb訪問權限可以在權限管理中解除。華為怎么建立obb文件夾?為華為手機創建文件夾的具體步驟如下:我們需要準備的材料有:華為手機。1.首先我們隨機選擇一個應用,長按該應用,拖動到另一個應用,重疊后放開形成文件夾1。。2.然后我們點擊打開生成的文件夾。3.然后我們可以點擊 "文件夾1修改文件夾中的著名城市。刺激戰場國際服obb放哪里?刺激戰場的國際...

          騰達無線路由器w308rv2怎么設置?設置騰達無線路由器;第一步;打開電腦的瀏覽器,在地址欄輸入192.168.1.1,進入路由器的管理界面。第二步;選擇PPPO騰達路由器怎么橋接小米路由器?布魯特與那臺設備無關。只需打開騰達路由器的無線橋接功能,搜索小米主路由器,輸入密碼,連接即可橋接成功。308是什么意思?308是戀愛分手的意思,分手的數字意思。的數字代表著豐富的含義,比如520,我愛你,52...

          1萬盧比可以買多少東西? ;日常開銷沒問題。首先,要看是哪個國家 盧比是。盧比是許多國家的貨幣,如印度、巴基斯坦、斯里蘭卡等。不同國家的盧比匯率不一樣。如果是印度盧比,那么100萬印度盧比大約可以兌換9.7萬。盧布是俄羅斯貨幣,可以在銀行直接兌換。1百萬億等于多少盧比?10000000印度盧比=10239300.2187。1=9.7663印度盧比。100萬盧比在巴基斯坦算有錢人嗎?和巴基斯坦其實...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>