爱贝微支付

公司需要用到第三方支付(爱贝微支付):

首先支付流程

html示例:


<script src="http://web.iapppay.com/h5/v1.0.1/js/aibei_v1.1.0.js" type="text/javascript" charset="utf-8"></script>  //导入爱贝包

<script>
  //生成对象
  var
aibeiPay = new AiBeiPay();
//进入方法
function aiPay1(waresid, money) { try{ javascript:contact.pay(waresid,money); }catch(err){ var transId = selectPost(waresid, money); //向服务器下单获取下单编号,此函数需自己编写 if (transId == undefined){ return } var data = {}; data.transId = transId; //下单编号 data.retFunc = "callbackData";//当用户点击“返回游戏”按钮时调用该函数。回调函数的参数为支付结果数据,与购买结果通知e.data数据一 data.baseZIndex = 88; data.closeTxt = "返回游戏" //自定义返回游戏按钮 data.redirecturl = "http://123.59.3; //当支付页面跳出收银台后,查询结果页回跳地址(必填) data.cpurl = "http://123.59.3;//返回商户地址,可以不填写 data.sign = getEncStr(transId + data.redirecturl + data.cpurl);//用RSA(transId+redirecturl+cpurl)签名数据 data.signtype = "RSA"; // data.retFunc = "callbackData"; aibeiPay.clickAibei(data); //调起收银台的JS函数 } } //向服务器请求下单 function selectPost(waresid, money) { var id = ""; $.ajax({ url : "/BigMillionaire/MyUser/sendPay.do", type : 'POST', dataType : "text", async : false, data : { gameid : waresid, pay : money }, success : function(data) { // alert(data); id = data; }, error : function(e) { console.log(e); } }); return id; } //获得sign function getEncStr(dat) { var url = "" // alert(dat) $.ajax({ url : "/BigMillionaire/MyUser/sendPay2.do", type : 'POST', dataType : "text", data : { id : dat }, async : false, success : function(data) { // alert(data); url = data; }, error : function(e) { console.log(e); } }); return url; } //购买结果通知 function callbackData(data) { var dd = data.OrderStatus; switch(dd) { case 0: alert("支付成功"); window.location.href="http://1); break; case 1: alert("支付失败"); break; case 2: alert("待支付"); break; case 3: alert("正在处理"); break; case 4: alert("系统异常"); break; default: alert("充值异常"); } }

</script>

服务器示例:
/**
     * 盒子用户充值生成订单
     * @param req
     * @param resp
     * @param gameid
     * @param pay
     * @throws ServletException
     * @throws IOException
     */
    @RequestMapping("/sendPay")
    public void sendPay(HttpServletRequest req, HttpServletResponse resp,int gameid,String pay)
            throws ServletException, IOException {
        double x = Math.random();
        OrderReq orderReq = new OrderReq();
            orderReq.setAppId("3002421322");
            orderReq.setWaresId(1);
            orderReq.setWarasName("9k9k盒子充值");
            orderReq.setAppUserId(gameid+"");//用户在商户应用的唯一标识
            orderReq.setCpOrderId("9k9k"+x); //商户生成的订单号,需要保证系统唯一
            orderReq.setCpPrivateInfo("验证9k");
            orderReq.setCurrency("RMB");//货币类型以及单位:
//            orderReq.setNotifyUrl("http。。BigMillionaire/MyUser/succe.do ");//商户服务端接收支付结果通知的地址
            orderReq.setNotifyUrl("http://123。。/MyUser/succe.do ");//商户服务端接收支付结果通知的地址
            orderReq.setPrice(Float.parseFloat(pay));
            OrderRes orderRes = orderReq.send(); //发送请求
        
//        // 检查返回值,有ErrorCode时表示请求错误
        if( orderRes.getErrorCode() != null && orderRes.getErrorCode().trim().length() > 0 ){
//            System.out.println( orderRes.getErrorCode() );
            System.out.println( orderRes.getErrMsg() );
        }else{
            // 结果
            System.out.println( orderRes.getTransid() );
        }    
//        onResp(orderRes,resp);
        resp.getWriter().print(orderRes.getTransid()); //返回订单号
    }

/**
     * 生成sign签名
     * @param req
     * @param resp
     * @param id
     * @throws ServletException
     * @throws IOException
     */
    @RequestMapping("/sendPay2")
    public void sendPay2(HttpServletRequest req, HttpServletResponse resp,
            String id)
            throws ServletException, IOException {
//        System.out.println("传入参数"+id);
        String str="";
        try {
//            sign = SignHelper.sign(transdataStr, ConstValue.PRIVATE_KEY);
            str = SignHelper.sign(id, ConstValue.PRIVATE_KEY);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        resp.setCharacterEncoding("utf-8");
        try {
            resp.getWriter().print(str);
            return;
        } catch (Exception e) {
            resp.getWriter().print(JSON.toJSONString(str));
            return;
        }        
    }
    
    private void onResp(OrderRes orderRes,HttpServletResponse resp) throws IOException {
        JSONObject respObject = new JSONObject();
        // 检查返回值,有ErrorCode时表示请求错误
        if( orderRes.getErrorCode() != null && orderRes.getErrorCode().trim().length() > 0 ){
            respObject.put("code", orderRes.getErrorCode());
            respObject.put("ErrMsg", orderRes.getErrMsg() );
        }else{
            respObject.put("transid", orderRes.getTransid());
        }

        BufferedWriter bw = new BufferedWriter(resp.getWriter());
        bw.write(URLEncoder.encode(respObject.toString()));
        bw.flush();
    }

    
    /**
     * 盒子充值成功通知
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
    @RequestMapping("/succe")
    public void succe(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {        
        BufferedReader br = req.getReader();
        StringBuffer orderResStr = new StringBuffer();
        String line = "";
        while ((line = br.readLine()) != null) {
            orderResStr.append(line);
//            System.out.println(line);
        }
        br.close();    
        if ("".equals(orderResStr.toString())) {
            return;
        }    
        String param = orderResStr.toString();
        String paras = URLDecoder.decode(param,"UTF-8");    //成功后的数据
        System.out.println(paras);
        int ss = succeSql(paras);
        if(ss==1){
            resp.getWriter().print("success");    
        }    
        return;
    }

/**
     * 盒子充值成功存入数据
     * @param param
     * @return
     * @throws UnsupportedEncodingException
     */
    public int succeSql(String param) throws UnsupportedEncodingException{    
        int startIndex= param.lastIndexOf("{");
        int lastIndex= param.lastIndexOf("}");
        param = param.substring(startIndex,lastIndex+1);
//        System.out.println(param);
        JSONObject params = JSONObject.fromObject(param);        
        String billno = params.getString("cporderid"); //自己订单号
        String memono = params.getString("transid"); //爱贝订单
        String gameids = params.getString("appuserid");//玩家ID
//        String gameids = "3";
        String amounts = params.getString("money"); //
        String status = params.getString("result");//充值状态
        String tm = params.getString("transtime");//充值时间
        
        int gameid = 0;
        if(gameids.length()>0&&gameids!=null){
            gameid = Integer.parseInt(gameids);        
        }
        
        int amount = 0;
        if(amounts.length()>0&&amounts!=null){
            amount = (int) (Float.parseFloat(amounts)*100);        
        }
        
        int statu =0;
        if(status.length()>0&&status!=null){
            statu = Integer.parseInt(status);        
        }
        //操作充值日志。
        myUserService.upLog(billno,memono,gameid,amount,statu,tm);
        //给用户添加金币
        myUserService.addGold(gameid,amount);
        return 1;
    }    


 
 
原文地址:https://www.cnblogs.com/sanhuan/p/4566206.html