網站接入銀連網上支付(B2B)__網站接入銀連網上支付B2B

來源:互聯網
上載者:User

1、公開金鑰還有銀行卡號和密碼等銀聯會提供,私密金鑰按照銀聯提供的文檔申請就可以了,需要說明的是申請的時候要用ie,並且在internet 選項-->安全-->自訂層級中,

     將Active X 控制項和外掛程式 下的所有禁用都改為啟用,如圖:


2、在銀聯提供的測試網址登陸,如圖:

3、輸入登陸資訊,第一次登陸需要修改密碼,然後重新登陸,選擇機構管理,產生商戶密鑰,如圖:


4、選擇產生的私密金鑰路徑,儲存後,記得要點提交按鈕,私密金鑰第二天生效。

5、在src下建立config.properties檔案,裡面存放商戶號、支付網關申請、公開金鑰和私密金鑰的存放路徑,如:

merid = xxxxxxxxxxxxxxxx
merkeyfilepath = E\:\\key\\XXX
pubkeyfilepath = E\:\\key\\XXX
url = http://XXXXXXXXX

6、申請的servlet:



    private static final String MERID = "merid";
    private static final String PaymentUrl = "url";
    private static final String MERKEYFILEPATH = "merkeyfilepath";

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        String MerKeyPath = null;
        String merId = null;

         String msg="";
        try{
            Properties config = Config.getInstance().getProperties();
            MerKeyPath = config.getProperty(MERKEYFILEPATH);
            merId = config.getProperty(MERID);
           
        }catch (Exception e){
            msg="私密金鑰初始化失敗。";
        }
        if (msg!="") {
            request.setAttribute("errors", msg);
            request.getRequestDispatcher(XXXXX).forward(request, response);
            return;
        }
        String ordId="0000000000000001";//訂單號只能提交一次
        String transAmt="000000000001";//金額
        String curyId="156";//幣種
        String transDate="20150601";//日期
        String transType="0001";//類型
        String version="20070129";//版本
        String bgRetUrl="http://XXXXXXXXX";//後台action
        String pageRetUrl="http://xxxxx.jsp";//前台jsp
        String gateId="";
        String priv1 = "";
        String chkValue = null;
        boolean flage= false;
        PrivateKey key = new PrivateKey();
        try{
            flage= key.buildKey(merId, 0, MerKeyPath);
        }catch (Exception e){
            System.out.print("建立失敗");
        }
        //簽名
        String data=merId+ordId+transAmt+curyId+transDate+transType+priv1;
        SecureLink sl = new SecureLink(key);
        chkValue = sl.Sign(data);

//將要提交的資料顯示到頁面
        Bean cbb=new Bean();
        cbb.setMerId(merId);
        cbb.setOrdId(ordId);
        cbb.setTransAmt(transAmt);
        cbb.setCuryId(curyId);
        cbb.setTransDate(transDate);
        cbb.setTransType(transType);
        cbb.setPriv1(priv1);
        cbb.setVersion(version);
        cbb.setBgRetUrl(bgRetUrl);
        cbb.setPageRetUrl(pageRetUrl);
        cbb.setGateId(gateId);
        cbb.setChkValue(chkValue);
        request.setAttribute("cbbInput", cbb);
        request.getRequestDispatcher(xxxxxxxx).forward(request, response);
        return;
    }
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doPost(request,response);
    }

7、上面的servlet跳轉到下面的頁面:

<%@ page language="java" import="model.bean.*" pageEncoding="UTF-8"%>

<%@ page import="java.util.*"%>
<jsp:useBean id="cbbInput" scope="request" class="model.Bean" />

<form name="corpor" action="測試提交路徑" method="post">
  <input type="hidden" name="MerId" value=“xxxxx”/>
  <input type="hidden" name="OrdId" value="xxxx"/>
  <input type="hidden" name="TransAmt" value="xxx"/>
  <input type="hidden" name="CuryId" value="xxx"/>
  <input type="hidden" name="TransDate" value="xxx"/>
  <input type="hidden" name="TransType" value="xxx"/>
  <input type="hidden" name="Version" value="xxx"/>
  <input type="hidden" name="BgRetUrl" value="xxx"/>
  <input type="hidden" name="PageRetUrl" value="xxx"/>
  <input type="hidden" name="GateId" value="xxxx"/>
  <input type="hidden" name="Priv1" value=""/>
  <input type="hidden" name="ChkValue" value="xxxx"/>
  <input type="submit" name="submit Button" value="提交" class="cmd"/>
</form>

8、點擊提交,就會到企業網銀登陸頁面,如圖:


9、輸入卡號和密碼登陸,會提示交易結果,如圖:


10、PageRetUrl為上面的頁面跳回網站的頁面,BgRetUrl 為後台action,用來驗證和儲存資料,servlet如下:
    private static final String url = "url";    private static final String MERKEYFILEPATH = "merkeyfilepath";    private static final String PUBKEYFILEPATH = "pubkeyfilepath";    public void doPost(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        request.setCharacterEncoding("UTF-8");        /*        擷取伺服器返回資料         */        String status=request.getParameter("status");        String merId=request.getParameter("merid");        String ordno=request.getParameter("orderno");        String transdate=request.getParameter("transdate");        String amount=request.getParameter("amount");        String currencycode=request.getParameter("currencycode");        String transtype=request.getParameter("transtype");        String checkvalue=request.getParameter("checkvalue");        String gateId=request.getParameter("GateId");        String priv1=request.getParameter("Priv1");      //  String s=readReqStr(request);        //此處將上面資料存入資料庫        //驗簽        String PubKeyPath = null;        try {            Properties config = Config.getInstance().getProperties();            PubKeyPath = config.getProperty(PUBKEYFILEPATH);        } catch (Exception e) {        }        chinapay.PrivateKey key=new chinapay.PrivateKey();        chinapay.SecureLink t;        boolean flage=false;        boolean flage1=false;        int int = 0;        try{            flage=key.buildKey("999999999999999",int,PubKeyPath);        }catch (Exception e){        }        if(!flage){            return;        }        t=new chinapay.SecureLink(key);        flage1=t.verifyTransResponse(merId,ordno,amount,currencycode,transdate,transtype,status,checkvalue);        if(!flage1){           System.out.print("驗簽失敗");         //   return;        }else{            if(status.equals("1001")){                System.out.print("支付成功");            }else {                System.out.print("支付失敗");            }        }
 
          //告訴銀聯你接收到訊息了,否則銀聯會不停的發送資訊
          resp.getWriter().write(JSON.toJSONString(cpCyberBankRes));          resp.getWriter().flush();
    }    public void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        doPost(request,response);    }
 支付測試程式碼完成。。。。 


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.