zoukankan      html  css  js  c++  java
  • 爱贝微支付

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

    首先支付流程

    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;
        }    
    
    
    
     
     
  • 相关阅读:
    Percona 工具包 pt-online-schema-change 简介
    MySQL 中NULL和空值的区别
    MySQL二进制日志文件过期天数设置说明
    MySQL大小写敏感说明
    SpringBoot 配置Druid:不显示SQL监控 —(*) property for user to setup
    IDEA 启用/禁用 Run Dashboard
    java.lang.IllegalAccessException: Class XX can not access a member of class XXX with modifiers "private static"
    Swagger2常用注解说明
    更改IDEA默认使用JDK1.5编译项目
    Spring Boot : Swagger 2
  • 原文地址:https://www.cnblogs.com/sanhuan/p/4566206.html
Copyright © 2011-2022 走看看