Java腾讯云支付对接

微信云支付文档:https://cloud.tencent.com/document/product/569/9806
一下内容包括数据库表设置,微信和支付宝扫码接口源码,支付成功回调处理源码
下载文档地址:Java腾讯云支付对接_第1张图片
下载的文件有对应的demo

完成对应的要求注册:
Java腾讯云支付对接_第2张图片
配置云支付回调地址
Java腾讯云支付对接_第3张图片
完成以上可以开发了

// 调用扫码接口,主要目的把二维码返回到前端
	/* appId 记录ID
    * 支付类型 1-微信支付  2-支付宝   3-会员卡 payType
    * */
    public void codeUrl(Integer appId,Integer payType){
       //查询订单
        //查询支付配置 ---一下主要是早数据库查询对应的门店信息   payConfig

        //查询门店配置  payShopConfig

        // 云支付订单前缀  out_trade_no_prefix
        //sdk初始化
        init(payConfig,payShopConfig);
        if () {
/*			// 由客户端生成的订单号
			String scanCodePayOutTradeNo = serialService.generatorBillNo(out_trade_no_prefix, -1)+"-yyzx";
			sysAppopen.setOrderNo(scanCodePayOutTradeNo);
			sysAppopenService.update(sysAppopen);*/
            //创建扫码支付对象
            ScanCodePayRequest scanCodePayRequest = new ScanCodePayRequest();
            // 1.微信支付 2.支付宝
            scanCodePayRequest.setPay_platform(payType);
            // 订单总金额,单位:分
            Long total_fee = (new BigDecimal(100)).longValue();
            scanCodePayRequest.setTotal_fee(total_fee);
            scanCodePayRequest.setOut_trade_no("单号");
            //订单简介
            scanCodePayRequest.setBody("应用商店商品购买");
            // 商品 id (没有商品ID 只有订单编号) 去掉 云支付订单前缀 就是订单编号
            scanCodePayRequest.setProduct_id("订单号");
            scanCodePayRequest.setTime_expire(CommonUtils.timeExpire(60 * 1440));
            String codeUrl = CloudPay.getInstance().scanCodePay(scanCodePayRequest);
            System.out.println(codeUrl);
        }else {
            System.out.println("购买失败! 请稍后重试.");
        }
    }
/*
        * payConfig 自己定义的实体类  支付配置
        * payShopConfig   自己定义实体类  门店配
        * */
        public void init(PayConfig payConfig, PayShopConfig payShopConfig) {
            // 此处填写商户的authen_key
            String authenKey = payConfig.getAuthenKey() ;
            Account account = new Account(); // 实体类
            // 服务商ID
            account.setOut_mch_id(payConfig.getOutMchId());
            // 商户ID
            account.setOut_sub_mch_id(payConfig.getOutSubMchId());
            // 门店ID
            account.setOut_shop_id(payShopConfig.getOutShopId());
            // 设备id
            account.setDevice_id(payShopConfig.getDeviceId());
            // 店员id
            account.setStaff_id(payShopConfig.getStaffId());
            Terminal terminal = new Terminal();
            // 终端类型,
            terminal.setTerminal_type(TerminalType.WINDOWS.getCode());
            // 子终端端类型 默认900
            terminal.setSub_terminal_type(900);
            // 刷卡支付特有,每个收银终端的唯⼀码(刷卡支付必填) 还没有刷卡支付默认  01-01-01-01-01-01
            terminal.setMachine_no("01-01-01-01-01-01");
            terminal.setSpbill_create_ip(payConfig.getSpbillCreateIp());
            CloudPay.init(account, authenKey, terminal);
        }
// 回调方法
        public String saveOrderYunZhiFu(HttpServletRequest request) {
            byte buffer[] = getRequestPostBytes(request);
            String charEncoding = request.getCharacterEncoding();
            if (charEncoding == null) {
                charEncoding = "UTF-8";
            }
            String jsonString = new String(buffer, charEncoding);
            System.out.println("-----------------------------进来了--------------------------------------");
            System.out.println("-----------------------------"+jsonString+"--------------------------------------");
            try {
                request.setCharacterEncoding("utf-8");
                String respString = "fail";
                //获取支付回调的内容
                String request_content = JSONObject.parseObject(jsonString).getString("request_content");
                JSONObject requestContent = JSONObject.parseObject(request_content);
                System.out.println("-----------------------------"+requestContent.toString()+"--------------------------------------");
                //获取认证信息
                /*JSONObject authenInfo = json.getJSONObject("authen_info");*/
                /*logger.debug(authenInfo.toString());*/
                /**
                 * 校验状态 以及 订单参数状态
                 */
                if(requestContent!=null) {
                    System.out.println("订单数据支付校验成功");
                    //支付商户信息
                    JSONObject payMchKey  = requestContent.getJSONObject("pay_mch_key");
                    //订单信息
                    JSONObject orderContent  = requestContent.getJSONObject("order_content");
                    //支付类型(1 微信支付 2.支付宝  3.会员卡)
                    payMchKey.getInteger("pay_platform");
                    //服务商账号
                    payMchKey.getString("out_mch_id");
                    //子商户账号
                    payMchKey.getString("out_sub_mch_id");
                    //唯一标识门店的账号
                    payMchKey.getString("out_shop_id");
                    //子商户订单号
                    orderContent.getString("out_trade_no");
                    //第三方支付平台的订单号
                    orderContent.getString("transaction_id");
                    //交易类型
                    orderContent.getInteger("trade_type");
                    //订单创建时间
                   new Date(orderContent.getLong("create_time"));
                    //订单总金额
                    BigDecimal totalFee = orderContent.getBigDecimal("total_fee").divide(new BigDecimal(100));

                    //商品或订单简要描述
                    orderContent.getString("body");
                    //货币类型
                   orderContent.getString("fee_type");
                    // 一下逻辑根据自己项目情况更新其状态
                    System.out.println("----------------------------订单状态   或者  明细表 修改失败----------------------------------");
                    respString = "success";
                    return respString;
                }
                System.out.println("出问题了");
                return respString;
            } catch (Exception e) {
                e.printStackTrace();
                return "fail";
            }
        }
public static byte[] getRequestPostBytes(HttpServletRequest request)
                 {
            int contentLength = request.getContentLength();
            if(contentLength<0){
                return null;
            }
            byte buffer[] = new byte[contentLength];
            for (int i = 0; i < contentLength;)
            {
                int readlen = request.getInputStream().read(buffer, i,
                        contentLength - i);
                if (readlen == -1) {
                    break;
                }
                i += readlen;
            }
            return buffer;
        }

你可能感兴趣的:(云支付,微信支付,支付宝支付)