10 06 2025

1:pom.xml 引入

<dependency>
    <groupId>com.alipay.sdk</groupId>
    <artifactId>alipay-sdk-java</artifactId>
    <version>3.0.0</version>
</dependency>


2:PC端扫码支付 代码示例


                //商户订单号,商户网站订单系统中唯一订单号,必填
                String out_trade_no =orCode;
                //付款金额,必填
                int total_amount =payOrderModels.get(0).getPaynum();
                //订单名称,必填
                String subject = "支付";
                //商品描述,可空
                String body = "支付";
                //获得初始化的AlipayClient
                AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.GATEWAY_URL,
                        AlipayConfig.APP_ID, AlipayConfig.MERCHANT_PRIVATE_KEY,
                        "json", AlipayConfig.CHARSET, AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.SIGN_TYPE);
                //设置请求参数
                AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
                //alipayRequest.setReturnUrl("http://xxx/mobile/czcgts.html");  //设置同步回调通知
                alipayRequest.setNotifyUrl("https://xxx:8008/api/alipay/pay_notify");  //设置异步回调通知
                //设置支付参数
                JSONObject bizContent = new JSONObject();
                bizContent.put("out_trade_no",out_trade_no);
//                bizContent.put("total_amount",total_amount);
                bizContent.put("total_amount",0.01);
                bizContent.put("subject",subject);
                bizContent.put("product_code","FAST_INSTANT_TRADE_PAY");
                bizContent.put("qr_pay_mode","4");
                bizContent.put("qrcode_width",190);
                alipayRequest.setBizContent(bizContent.toJSONString());
                //请求
                String result = null;
                try {
                    result = alipayClient.pageExecute(alipayRequest).getBody();
                    System.out.println("alipay pcPay result--"+result);
                    response.setContentType("text/html;charset=" + AlipayConfig.CHARSET);
                    response.getWriter().write(result);//直接将完整的表单html输出到页面
                    response.getWriter().flush();
                    response.getWriter().close();

                } catch (AlipayApiException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }


回调地址方法:

/**
 * pc native支付
 * 异步回调函数 
 * @param request
 * @return
 * @throws IOException
 */
@PostMapping(value = "pay_notify")
public String pay_notify(HttpServletRequest request, HttpServletResponse response) throws Exception {
    System.out.println("alipay native 支付完成进入异步通知");
    Map<String, String> reqObject = convertRequestParamsToMap(request);
    String out_trade_no=reqObject.get("out_trade_no");
    System.out.println("alipay native out_trade_no--"+out_trade_no);
    Map<String,String> parMap=new HashMap<>();
    String trade_status= reqObject.get("trade_status");
    System.out.println("alipay native --"+trade_status);
    try {
        boolean signVerified = AlipaySignature.rsaCheckV1(reqObject, AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.CHARSET, AlipayConfig.SIGN_TYPE);
        //无论同步异步都要验证签名
        if(signVerified){
            if(trade_status.equals("TRADE_FINISHED") || trade_status.equals("TRADE_SUCCESS")){
                //处理自己系统的业务逻辑,如:将支付记录状态改为成功,需要返回一个字符串success告知支付宝服务器

            } else {
                //支付失败不处理业务逻辑
                return "failure";
            }
        }else {
            //签名验证失败不处理业务逻辑
            return "failure";
        }
    } catch (AlipayApiException e) {
        e.printStackTrace();
        return "failure";
    }
}


3:手机端h5支付代码示例:

               // 付款金额,必填
                String total_amount=String.valueOf(payOrderModels.get(0).getPaynum());
               // String total_amount="0.01";
                //自定义参数,可空
                String passback_params = orCode;
                // 商户订单号,商户网站订单系统中唯一订单号,必填
                String out_trade_no =orCode;
                // 商品描述,可空
                String body = "订单支付";
                // 订单名称,必填
                String subject = "订单支付";
                // 超时时间 可空
                String timeout_express="2m";
                // 销售产品码 必填
                String product_code="QUICK_WAP_WAY";
                // SDK 公共请求类,包含公共请求参数,以及封装了签名与验签,开发者无需关注签名与验签
                //调用RSA签名方式
                AlipayClient client = new DefaultAlipayClient(AlipayConfig.URL, AlipayConfig.APP_ID, AlipayConfig.MERCHANT_PRIVATE_KEY, AlipayConfig.FORMAT, AlipayConfig.CHARSET, AlipayConfig.ALIPAY_PUBLIC_KEY,AlipayConfig.SIGN_TYPE);
                AlipayTradeWapPayRequest alipay_request=new AlipayTradeWapPayRequest();
                // 封装请求支付信息
                AlipayTradeWapPayModel model = new AlipayTradeWapPayModel();
                model.setOutTradeNo(out_trade_no);
                model.setSubject(subject);
//                model.setTotalAmount(total_amount);
                model.setTotalAmount(String.valueOf(0.01));
                model.setBody(body);
                model.setTimeoutExpress(timeout_express);
                model.setProductCode(product_code);
                model.setPassbackParams(URLEncoder.encode(passback_params,"UTF-8"));
                alipay_request.setBizModel(model);
                // 设置异步通知地址
                alipay_request.setNotifyUrl("http://xxx:8008/api/alipay/hpay_notify");
                // 设置同步地址
                alipay_request.setReturnUrl("http://xxx/mobile/czcgts.html");
                // form表单生产
                String form = "";
                try {
                    // 调用SDK生成表单
                    form = client.pageExecute(alipay_request).getBody();
                    System.out.println(" hPay form--"+form);
                    response.setContentType("text/html;charset=" + AlipayConfig.CHARSET);
                    response.getWriter().write(form);//直接将完整的表单html输出到页面
                    response.getWriter().flush();
                    response.getWriter().close();
                } catch (AlipayApiException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }


回调地址方法:

/**
 * 支付宝h5支付
 * 异步回调 
 * @param request
 * @return
 * @throws IOException
 */
@PostMapping(value = "hpay_notify")
public String hpay_notify(HttpServletRequest request,HttpServletResponse response) throws Exception {
    System.out.println("alipay 支付完成进入异步通知");
    Map<String, String> reqObject = convertRequestParamsToMap(request);
    String out_trade_no=reqObject.get("out_trade_no");
    String trade_status= reqObject.get("trade_status");
    System.out.println("alipay out_trade_no--"+out_trade_no);
    System.out.println("alipay trade_status--"+trade_status);
    try {
        boolean signVerified = AlipaySignature.rsaCheckV1(reqObject, AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.CHARSET, AlipayConfig.SIGN_TYPE);
        //无论同步异步都要验证签名
        if(signVerified){
            if(trade_status.equals("TRADE_FINISHED") || trade_status.equals("TRADE_SUCCESS")){
                //处理自己系统的业务逻辑,如:将支付记录状态改为成功,需要返回一个字符串success告知支付宝服务器



            } else {
                //支付失败不处理业务逻辑
                return "failure";
            }
        }else {
            //签名验证失败不处理业务逻辑
            return "failure";
        }
    } catch (AlipayApiException e) {
        e.printStackTrace();
        return "failure";
    }
}
作者微信 此文章为收费文章,请输入用户名和验证码查看内容
用户名: 验证码:
用户名和验证码获取方式:
1:点击此处 线上支付获取
2:添加作者微信号 "pdsffyd", 支付并获取