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! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          支付寶和微信二維碼合二為一(Java如何將微信和支付寶支付的二維碼合二為一)

          來源:互聯網轉載 時間:2024-05-04 02:17:58

          1.首先生成二維碼:

          folderName:存儲二維碼圖片的文件夾名

          imageName:二維碼圖片名稱

          content:是在二維碼中寫入的內容,這里我傳入的是URL:指定我判斷軟件類型的控制器

          publicstaticStringgenQRImage(StringfolderName,StringimageName,Stringcontent){//StringfilePath=System.getProperty("twtwebapp.root");StringfileName=imageName+".png";try{//檢查是否存在imageQR目錄,不存在則先創建Filefile=newFile(folderName);if(!file.exists()&&!file.isDirectory()){file.mkdir();}folderName=file.getAbsolutePath();intwidth=200;//圖像寬度intheight=200;//圖像高度Stringformat="png";//圖像類型Map<EncodeHintType,Object>hints=newHashMap<EncodeHintType,Object>();hints.put(EncodeHintType.CHARACTER_SET,"UTF-8");hints.put(EncodeHintType.MARGIN,1);BitMatrixbitMatrix=newMultiFormatWriter().encode(content,BarcodeFormat.QR_CODE,width,height,hints);//生成矩陣Pathpath=FileSystems.getDefault().getPath(folderName,fileName);MatrixToImageWriter.writeToPath(bitMatrix,format,path);//輸出圖像log.info("二維碼已經生成,"+path);fileName=path.toString();}catch(Exceptione){log.error(e.getMessage(),e);fileName=null;}returnfileName;}

          2.定義類型控制器:

          大家一定都想問是如何判斷打開軟件的類型,把Request Header Cookie 都看看就明白了,掃碼二維碼時不會傳入任何參數,

          但會有一個請求頭,就是這個請求頭告知了我打開軟件的類型。

          使用request獲取名為User-Agent的請求頭,

          支付寶的請求頭:ucbrowser/1.0.0.100 u3/0.8.0 mobile safari/534.30 alipaydefined(nt:wifi,ws:360|604|3.0) aliapp(ap/9.9.7.112401) alipayclient/9.9.7.112401 language/zh-hans usestatusbar/true

          微信的請求頭: mqqbrowser/6.8 tbs/036887 safari/537.36 micromessenger/6.3.31.940 nettype/wifi language/zh_cn

          就是根據這兩個請求頭去判斷對應的軟件類型,根據不同的軟件類型去喚醒不同的支付。

          @RequestMapping("qrcallback")publicvoidqrcallback(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException,AlipayApiException{Stringagent=request.getHeader("User-Agent").toLowerCase();System.out.println("響應頭的類型:"+agent);if(agent.indexOf("micromessenger")>0){System.out.println("微信支付");}elseif(agent.indexOf("alipayclient")>0){System.out.println("阿里支付");Stringform=testService.aliPay();response.setContentType("text/html;charset=UTF-8");response.getWriter().write(form);//直接將完整的表單html輸出到頁面response.getWriter().flush();//response.sendRedirect("/ali.html");}}

          3.先說簡單的,喚醒支付寶支付,其實使用的是 支付寶手機網站支付:這個需要簽約噢~

          https://b.alipay.com/signing/productDetail.htm?productId=I1011000290000001001

          這個喚起支付可以看看官網是怎么寫的:https://doc.open.alipay.com/docs/doc.htm?treeId=203&articleId=105285&docType=1

          有兩種方式:一種是頁面喚醒,自己構建請求form參數然后請求支付寶喚醒支付操作,另一種是服務端調用支付寶的SDK去生

          成form參數然后去請求支付寶,我使用的是第二種。

          步驟:

          1.首先引入pom.xml依賴

          <!--alipay-sdk--><dependency><groupId>com.twt.charge</groupId><artifactId>alipay-sdk-java</artifactId><version>20160519120058</version></dependency>

          2.生成form參數:

          里面的參數自己填寫從支付寶獲取的那些參數,copy我的肯定出錯哈

          publicStringaliPay()throwsAlipayApiException{AlipayClientalipayClient=newDefaultAlipayClient(openapi,SecurityUtil.decodeBase64(appid),SecurityUtil.decodeBase64(rsa_private_key),"json","utf-8",SecurityUtil.decodeBase64(alipay_pub_key));AlipayTradeWapPayRequestalipayRequest=newAlipayTradeWapPayRequest();//創建API對應的requestalipayRequest.setReturnUrl("http://192.168.1.219:22222/ali.html");alipayRequest.setNotifyUrl("http://192.168.1.219:22222/callback");//在公共參數中設置回跳和通知地址alipayRequest.setBizContent("{"+"\"out_trade_no\":\"20160320020192222\","+"\"total_amount\":66.66,"+"\"subject\":\"主題\","+"\"seller_id\":\"213215dsa\","+//"\"product_code\":\"QUICK_WAP_PAY\""+"}");//填充業務參數Stringform=alipayClient.pageExecute(alipayRequest).getBody();//調用SDK生成表單returnform;}

          將這個form以流的形式輸出即可。

          如:

          response.setContentType("text/html;charset=UTF-8");response.getWriter().write(form);//直接將完整的表單html輸出到頁面response.getWriter().flush();

          喚起支付寶支付就這么簡單,但要注意參數中的賬單號要是商戶系統中唯一的賬單號。

          4.喚起微信支付:喚起的其實是微信公眾號支付,做過公眾號支付的同學都知道,調用微信公眾號的統一下單API時

          需要傳入openID,即用戶在該公眾號的下的唯一標識,這個過程需要用于授權登錄該公眾號,這個過程是一個缺點,

          用戶僅僅只是微信的掃碼支付,但你中間不是黑箱子的形式展示,而是在支付中多出了一個授權登錄的頁面,并且

          也比較繁瑣,在喚醒微信支付的過程中請求次數較多,所以微信支付會比正在的掃碼支付會慢很多。

          喚起微信公眾號支付:

          步驟:

          1.首先拼裝好你的授權登錄url。在類型控制中判斷如果是微信支付則重定向到微信授權登錄頁面,微信會重定向到
          你在授權登錄url中設置重定向url參數的頁面,

          2.跳轉到這個頁面后,先獲取到用戶code然后利用ajax訪問服務端,

          3.服務端使用code去獲取用戶的openID,

          4.根據openID去調用微信公眾號的統一下單API生成參數,然后返回給頁面喚醒支付,這就是整個微信的流程,

          中間訪問了3次微信獲取數據,整個流程共6次請求,需要將微信跳轉的頁面放到官網的微信目錄下。

          在寫這篇博文的時候因為支付寶我還沒有簽約,所以沒有調通,而微信也只成功了一次,但第二次什么都沒改的情況
          下就不行了,寫這篇博文順便捋捋思路,怎么更簡單。

          注:訪問微信授權頁面中的redirect_url參數可以添加請求參數。

          c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...

          2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...

          :喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...

          (資料圖片)2022年10月10日24時國內汽柴油價格將迎來新一輪調整?,F在已經進入到2022年第19次油價調整的統計之中,新一輪油價統計數據以下跌開局,而且來到今天第二個工作日的統計,油價預期跌幅已經超過下跌標準紅線,預計下調油價60元/噸,折約升價下跌0.04元~0.05元的幅度。就目前統計數據來看,油價下跌對比上漲更容易一些。但目前距離下一次調整仍有半個多月時間,仍需關注后續國際油價走勢,最...

          一、建行基金定投手續費是多少?基金定投是一種比較受歡迎的理財方式,他的收益比儲蓄高,但是風險又沒有股票這類的大,因此許多人會在銀行辦理基金定投。那么建行基金定投手續費是多少呢?怎么辦理呢?大家保保險網將在下文為您詳細介紹。建行基金定投手續費是多少:1. 辦理手續費:一般基金定投手續費按申購金額的1,5%收取,建行打八折,也就是1.2%,如果是網銀辦理的話,打6折。如果通過基金公司辦理更便宜,一般是...

          團購房是什么意思?團購房是指一定數量的置業者自發組團或者在團購組織的安排下,由選出的代表并協同法律工作者與開發商協商,以低于散戶市場成交價格簽訂有諸多附加條款的《合同》的消費過程。目前團購大致有兩種形式:一種是置業者自發組團;另一種是單位組織職工組織,不過由于有些團購房屬于非正規的開發商融資手段,因此參加團購也會有一定風險。單位團購房靠譜嗎?單位團購的房子整體來說還是比較可靠的,但我們還是要看這個...

          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>