關於建行龍支付的聚合支付微信,支付寶 對接PC和H5


首先 項目是部署在Linux服務器中 服務器環境對於支付來說沒有區別 現在就說下對接

首先是文檔,建行的文檔一言難盡,雖然最后還是看文檔接出來的

然后 遇到的各種問題在網站上也沒找到什么答案 自己摸索了幾天才弄得七七八八

廢話不多說 直接上代碼

  public final String MERCHANTID="";//商戶代碼
    public final String POSID="";//商戶櫃台代碼
    public final String BRANCHID="";//分行代碼
    public final String PUB32TR2="";//密鑰
    
    
    /**
     * 
     * @param id
     * @param type 0pc 1h5
     * @return
     */
    @RequestMapping("/juhepay")
    public ApiResult juhepay(String id,int type){
        OrderInfo order = orderService.getOrderInfo(id, null);
        UserInfo u = userService.getUserById(order.getUser_id());
        
        if(order.getOrder_status()>0){
            return ApiResultHelper.error("訂單已支付");
        }
        
        Object qurl = redisService.get(order.getOrder_no());
        if(!StrUtil.isEmptyIfStr(qurl)){
            return ApiResultHelper.success(qurl.toString());
        }
        String bankURL="https://ibsbjstar.ccb.com.cn/CCBIS/ccbMain";
        String ORDERID = order.getOrder_no();//訂單號
        //String PAYMENT= order.getPrice().toString();//訂單金額
        String PAYMENT= "0.01";//訂單金額
        String REMARK1 = "";
        String REMARK2 = "";
        String TXCODE="530550";//交易碼
        String CURCODE="01";//幣種
//狀態 0或空:返回二維碼頁面,只支持建行龍支付;1:返回JSON格式【二維碼信息串】,只支持建行龍支付 
//2:返回聚合掃碼二維碼頁面;3:返回聚合掃碼JSON格式【二維碼信息串】 聚合掃碼只能上送2或3
        String RETURNTYPE="3";
        String TIMEOUT = "";
        
        StringBuffer tmp = new StringBuffer(); //驗簽字段
        tmp.append("MERCHANTID=").append(MERCHANTID);
        tmp.append("&POSID=").append(POSID);
        tmp.append("&BRANCHID=").append(BRANCHID);
        tmp.append("&ORDERID=").append(ORDERID);
        tmp.append("&PAYMENT=").append(PAYMENT);
        tmp.append("&CURCODE=").append(CURCODE);
        tmp.append("&TXCODE=").append(TXCODE);
        tmp.append("&REMARK1=").append(REMARK1);
        tmp.append("&REMARK2=").append(REMARK2);
        tmp.append("&RETURNTYPE=").append(RETURNTYPE);
        tmp.append("&TIMEOUT=").append(TIMEOUT);
        tmp.append("&PUB=").append(PUB32TR2);
        
        Map<String,String> map = new HashMap<>();
        map.put("CCB_IBSVersion","V6");//必輸項
        map.put("MERCHANTID",MERCHANTID);
        map.put("BRANCHID",BRANCHID);
        map.put("POSID",POSID);
        map.put("ORDERID",ORDERID);
        map.put("PAYMENT",PAYMENT);
        map.put("CURCODE",CURCODE);
        map.put("TXCODE",TXCODE);
        map.put("REMARK1",REMARK1);
        map.put("REMARK2",REMARK2);
        map.put("RETURNTYPE",RETURNTYPE);
        map.put("TIMEOUT",TIMEOUT);
        map.put("MAC",Md5Util.md5Str(tmp.toString()));
       
        
        String ret = HttpClientUtil.httpPost(bankURL, map);     //請求二維碼生成鏈接串
        Gson gson = new Gson();
        QrURLDemo payUrl = (QrURLDemo) gson.fromJson(ret, QrURLDemo.class);
        if(type==1){//H5支付直接返回這個路徑就好可以瀏覽器會自動跳轉支付 
            return ApiResultHelper.success(payUrl.getPAYURL());
        }
        if(!StrUtil.isEmptyIfStr(payUrl) && "true".equals(payUrl.getSUCCESS())){
            ret = HttpClientUtil.httpGet(payUrl.getPAYURL(), "UTF-8"); //獲取二維碼串
            QrURLDemo qrurl = (QrURLDemo) gson.fromJson(ret, QrURLDemo.class);
            if("true".equals(qrurl.getSUCCESS())){
                String url = "";
                try {//pc的就需要返回下面這個
                    url = java.net.URLDecoder.decode(qrurl.getQRURL(), "UTF-8");
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }
                redisService.setByTime(order.getOrder_no(), url, 10*60);
                return ApiResultHelper.success(url);
            }else{
                return ApiResultHelper.error("二維碼生成失敗,請刷新后重試");
            }
        }else{
             return ApiResultHelper.error("二維碼獲取失敗,請刷新后重試");
        }
        
    }

//回調路徑需要在建行網站上設置

  @RequestMapping("/pay_back")
  public String pay_back(HttpServletRequest request,String POSID,String BRANCHID,String ORDERID,String PAYMENT,String CURCODE,
    String REMARK1,String REMARK2,String SUCCESS,String SIGN) {
      LogUtil.e("BRANCHID="+BRANCHID+",POSID="+POSID+",ORDERID="+ORDERID+",PAYMENT="+PAYMENT+",CURCODE="+CURCODE+",REMARK1="+REMARK1+",REMARK2="+REMARK2+",SUCCESS="+SUCCESS+",SIGN="+SIGN);
      return "SUCCESS";
  }

 
 
         

<div class="sq" id="qrcode"></div>


//這塊是pc生成二維碼的方式 用的是qrcode.js生成
$.ajax("/pay/juhepay", data, function(res) { var qrcodetwo = new QRCode("qrcode", { render: "table", //table方式 width: 186, height: 186, text: res.msg //返回的路徑 }); });

 

H5支付的目前不知道該如何跳轉到建行龍支付 不過對應的微信和支付寶跳轉是可以的

//微信
$.ajax("/pay/juhepay", data, function(res) {
            var ua = navigator.userAgent.toLowerCase();
            if (ua.match(/MicroMessenger/i) != "micromessenger") {
                window.location.href = 'weixin://'+res.msg;
            }else{
                $.qr.a(res.msg);//路徑
            }
            
        });
//支付寶
$.ajax("/pay/juhepay", data, function(res) {
            var ua = navigator.userAgent.toLowerCase();
            if(ua.match(/Alipay/i)=="alipay"){
                $.qr.a(res.msg);
            }else{
                window.location.href = 'alipays://platformapi/startapp?appId=20000067&url='+escape(res.msg);
            }

        });

退款的目前還在研究中 研究出來了繼續更新。。。

需要轉載請給我發消息


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM