天天看點

一張二維碼同時內建微信、支付寶支付

此項目已開源歡迎Start、PR、發起Issues一起讨論交流共同進步

https://github.com/Javen205/IJPay

http://git.oschina.net/javen205/IJPay

解決方案是通過User-Agent 來判斷掃描的來源

Http Header之User-Agent

User Agent中文名為使用者代理,是Http協定中的一部分,屬于頭域的組成部分,User Agent也簡稱UA。它是一個特殊字元串頭,是一種向通路網站提供你所使用的浏覽器類型及版本、作業系統及版本、浏覽器核心、等資訊的辨別。通過這個标 識,使用者所通路的網站可以顯示不同的排版進而為使用者提供更好的體驗或者進行資訊統計。

幾個例子

QQ

Mozilla/5.0 (iPhone; CPU iPhone OS 8_4 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12H143 Safari/600.1.4
           

微信

Mozilla/5.0 (iPhone; CPU iPhone OS 10_2 like Mac OS X) AppleWebKit/602.3.12 (KHTML, like Gecko) Mobile/14C92 MicroMessenger/6.5.3 NetType/WIFI Language/zh_CN
           

支付寶

Mozilla/5.0 (iPhone; CPU iPhone OS 10_2 like Mac OS X) AppleWebKit/602.3.12 (KHTML, like Gecko) Mobile/14C92 ChannelId(3) Nebula PSDType(1) AlipayDefined(nt:WIFI,ws:375|647|2.0) AliApp(AP/10.0.1.123008) AlipayClient/10.0.1.123008 Alipay Language/zh-Hans
           

具體實作

public class AllPayController extends Controller {
    protected final Log log = Log.getLog(getClass());
    
    public void index(){
        String userAgent = getRequest().getHeader("User-Agent");
        log.info(userAgent);
        int payWay = 0;
        String agent = userAgent.toLowerCase();
        if (agent.indexOf("micromessenger")>0) {
            //使用者使用微信通路頁面
            payWay = 1;
            System.out.println("微信...");
            
        }else if(agent.indexOf("alipayclient")>0){
            //使用者使用支付寶通路頁面
            payWay = 2;
            System.out.println("支付寶...");
        }
        
        renderText(payWay+" userAgent:"+userAgent);
    }
}
           

推薦閱讀

Android版-微信APP支付

極速開發微信公衆号之微信買單

極速開發微信公衆号之公衆号支付

極速開發微信公衆号之掃碼支付

極速開發微信公衆号之刷卡支付

極速開發微信公衆号之現金紅包

Android版-支付寶APP支付支付寶Wap支付

記錄學習的點滴,以此勉勵不斷奮鬥的自己✌️✌️✌️ 如果對你有幫助記得點喜歡

源碼下載下傳位址

繼續閱讀