JAVA 支付宝当面付开发(获取二维码,查询订单状态、手动关闭订单)

一、配置文件(支付宝商户配置

public class AlipayConfig {
    
    // 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号
    public static String app_id = "";
    
    // 商户私钥,您的PKCS8格式RSA2私钥
    public static String merchant_private_key = "";
    
    // 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
    public static String alipay_public_key = "";

    // 服务器异步通知页面路径  需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
    public static String notify_url = "";

    // 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
    public static String return_url = "";
    // 返回格式
    public static String json_type  = "json";
    // 签名方式
    public static String sign_type = "RSA2";
    
    // 字符编码格式
    public static String charset = "utf-8";
    
    // 支付宝网关
    public static String gatewayUrl = "https://openapi.alipay.com/gateway.do";
    
    // 支付宝网关
    public static String log_path = "C:\\";

    // 商品名称
    public static String subject = "";

二、pom文件

三、调取支付宝生成二维码

public static void setLOG() throws AlipayApiException, IOException {
        String out_trade_no = "zfb" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + (int) (Math.random() * 90000 + 10000);

        //获得初始化的AlipayClient
        AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key,
                AlipayConfig.json_type, AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type);
        AlipayTradePrecreateRequest alipayRequest = new AlipayTradePrecreateRequest();
        alipayRequest.setReturnUrl(AlipayConfig.return_url);
        alipayRequest.setNotifyUrl(AlipayConfig.notify_url);
        JSONObject bizContent = new JSONObject();
        bizContent.put("out_trade_no", out_trade_no);
        System.out.println("三方订单号:" + out_trade_no);
        bizContent.put("total_amount", 0.01);
        bizContent.put("subject", AlipayConfig.subject);
        //5分钟关闭订单(业务所需) 默认2小时关闭
        bizContent.put("time_expire", TimeUtils.datToStr(TimeUtils.getChangeTime(new Date(), 5)));
        //支付控制台只显示只有花呗、花呗分期支付渠道
//            bizContent.put("enable_pay_channels","pcreditpayInstallment,pcredit");
//            LOG.info("支付宝支付请求参数:bizContent:" + bizContent.toString());
        alipayRequest.setBizContent(bizContent.toString());
        AlipayTradePrecreateResponse response = alipayClient.execute(alipayRequest);
        if (response.isSuccess()) {
            System.out.println(response.getQrCode());
            // 生成指定url对应的二维码到文件,宽和高都是300像素
            File file = QrCodeUtil.generate(response.getQrCode(), 300, 300, FileUtil.file("d:/qrcode.jpg"));
            FileInputStream inputFile = new FileInputStream(file);
            byte[] buffer = new byte[(int) file.length()];
            inputFile.read(buffer);
            inputFile.close();
            System.out.println(new BASE64Encoder().encode(buffer));
        } else {
            System.out.println(response.getMsg() + "," + response.getSubCode());
        }

    }

四、查询支付宝支付订单状态

/**
*out_trade_no 三方订单号
*/
public static void getOrder(String out_trade_no) throws AlipayApiException {
        //获得初始化的AlipayClient
        AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key, AlipayConfig.json_type, AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type);
        //设置请求参数
        AlipayTradeQueryRequest alipayRequest = new AlipayTradeQueryRequest();
        JSONObject bizContent = new JSONObject();
        bizContent.put("out_trade_no", out_trade_no);
        bizContent.put("trade_no", "");
        alipayRequest.setBizContent(bizContent.toString());
        AlipayTradeQueryResponse alipayTradeQueryResponse = alipayClient.execute(alipayRequest);
        if (alipayTradeQueryResponse.isSuccess()) {
            if (alipayTradeQueryResponse.getTradeStatus().equals("TRADE_SUCCESS")) {
                System.out.println("支付状态:" + alipayTradeQueryResponse.getTradeStatus());
            } else {
                System.out.println(alipayTradeQueryResponse.getMsg());
                System.out.println(alipayTradeQueryResponse.getTradeStatus());
            }
        } else {
            System.out.println(alipayTradeQueryResponse.getMsg());
        }
    }

五、关闭支付宝订单

public static Boolean close(String out_trade_no) {
        Boolean b = false;
        try {
            //获得初始化的AlipayClient
            AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key,
                    AlipayConfig.json_type, AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type);
            AlipayTradeCloseRequest request = new AlipayTradeCloseRequest();
            JSONObject bizContent = new JSONObject();
            bizContent.put("out_trade_no", out_trade_no);
            request.setBizContent(bizContent.toString());
            AlipayTradeCloseResponse response = alipayClient.execute(request);
            if (response.isSuccess()) {
                b = true;
                System.out.println("支付宝订单关闭成功,三方订单号" + out_trade_no);
            } else {
                System.out.println("支付宝订单关闭失败,三方订单号" + out_trade_no+"错误码"+response.getSubCode());
            }

        } catch (AlipayApiException e) {
            System.out.println("支付宝订单关闭失败,三方订单号" + out_trade_no);

        }
        return b;
    }

如有疑问请留言评论!!!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值