java实名宝app支付

1.sdk下载

https://docs.open.alipay.com/54/103419/

2.快速上手

https://docs.open.alipay.com/204/105297/

3.请求参数说明

https://docs.open.alipay.com/204/105465/

4.实例


        //自定义的返回实体类
        R r = new R();

        //实例化客户端
        AlipayClient alipayClient = new DefaultAlipayClient(
                AlipayConfig.URL,
                AlipayConfig.APPID,
                AlipayConfig.RSA_PRIVATE_KEY,
                AlipayConfig.FORMAT,
                AlipayConfig.CHARSET,
                AlipayConfig.ALIPAY_PUBLIC_KEY,
                AlipayConfig.SIGNTYPE);
        if (alipayClient == null) {
            logger.info("支付宝支付 :"+BaseSettings.Validate.生成支付宝支付订单失败.getMsg()+", idcard:"+idcard+", money:"+money+", amount:"+amount);
            return r.setStatus(R.STATUS_SUCCESS)
                    .setStatusMsg(BaseSettings.Validate.生成支付宝支付订单失败.getMsg())
                    .setStatusCode(BaseSettings.Validate.生成支付宝支付订单失败.getCode());
        }



        //生成本地的购币订单
        String orderNumber = BaseSettings.getOrderNumber();
        PersonOrderEntity personOrderEntity = new PersonOrderEntity();
        personOrderEntity.setOrdernumber(orderNumber);
        personOrderEntity.setPersonidcard(idcard);
        personOrderEntity.setMoney(new BigDecimal(money));
        personOrderEntity.setAmount(Integer.valueOf(amount));
        personOrderEntity.setLastamount(Integer.valueOf(amount));
        personOrderEntity.setOrderstatus(0);
        personOrderEntity.setPaytype(1);
        personOrderEntity.setCreatetime(new Date());

        int result = baseEntityMapper.insertSelective(personOrderEntity);
        if (result == 0) {
            logger.info("支付宝支付(生成订单失败) :"+BaseSettings.Validate.生成支付宝支付订单失败.getMsg()+", idcard:"+idcard+", money:"+money+", amount:"+amount);
            return r.setStatus(R.STATUS_SUCCESS)
                    .setStatusMsg(BaseSettings.Validate.生成支付宝支付订单失败.getMsg())
                    .setStatusCode(BaseSettings.Validate.生成支付宝支付订单失败.getCode())
                    .setExceptMsg("生成购币订单失败");
        }

        //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
        AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
        //SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。
        AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
        model.setBody(AlipayConfig.ali_body);
        model.setSubject(AlipayConfig.ali_subject.replace("*", amount));
        model.setOutTradeNo(orderNumber);
        model.setTimeoutExpress(AlipayConfig.ali_timeout);
        model.setTotalAmount(money);
        model.setProductCode(AlipayConfig.ali_product_code);
        request.setBizModel(model);
        request.setNotifyUrl(AlipayConfig.notify_url);
        
        //这里和普通的接口调用不同,使用的是sdkExecute
        AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);

        logger.info("支付宝支付 :"+BaseSettings.Validate.生成支付宝支付订单成功.getMsg()+", idcard:"+idcard+", money:"+money+", amount:"+amount);
        return r.setStatus(R.STATUS_SUCCESS).setData(response.getBody())
                .setStatusMsg(BaseSettings.Validate.生成支付宝支付订单成功.getMsg())
                .setStatusCode(BaseSettings.Validate.生成支付宝支付订单成功.getCode());

5.通知

两种通知方式,同步通知和异步通知

https://docs.open.alipay.com/204/105301/

实例:

        //获取支付宝POST过来反馈信息
        Map<String, String> params = new HashMap<String, String>();
        for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext(); ) {
            String name = (String) iter.next();
            String[] values = (String[]) requestParams.get(name);
            String valueStr = "";
            for (int i = 0; i < values.length; i++) {
                valueStr = (i == values.length - 1) ? valueStr + values[i]
                        : valueStr + values[i] + ",";
            }
            //乱码解决,这段代码在出现乱码时使用。
            //valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");
            params.put(name, valueStr);
        }
        //切记alipaypublickey是支付宝的公钥,请去open.alipay.com对应应用下查看。
        boolean flag = AlipaySignature.rsaCheckV1(params, AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.CHARSET, AlipayConfig.SIGNTYPE);
        if (flag) {
            //支付成功
            String orderNumber = params.get("out_trade_no");

            //查询订单号的真实性 
            Map<String, Object> condition = new HashMap();
            condition.put("orderNumber", orderNumber);
            PersonOrderEntity personOrders = baseEntityMapper.selectOrderIdByMessage(condition);
            if (personOrders == null || personOrders.getOrderstatus() == 1) {
                return "FALSE";
            }

            //更新之前生成的订单状态
            PersonOrderEntity personOrderEntity = new PersonOrderEntity();
            personOrderEntity.setOrdernumber(orderNumber);
            personOrderEntity.setOrderstatus(1);
            personOrderEntity.setCompletetime(new Date());


            int update = baseEntityMapper.updateByOrdernumber(personOrderEntity);
            if (update == 0) {
                return "FALSE";
            }

        }

        return "success";

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是饭七分饱

生活在阴沟,也得仰望星空

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值