com.alipay.api.response.AlipayTradePrecreateResponse Java Examples

The following examples show how to use com.alipay.api.response.AlipayTradePrecreateResponse. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: AliPayService.java    From java-pay with Apache License 2.0 5 votes vote down vote up
/**
 * 支付宝扫码支付生成二维码响应到浏览器
 *
 * @param orderId
 * @param response
 * @return
 */
public Result aliQrCodePay(Long orderId, HttpServletResponse response) throws Exception {
    // 校验订单信息
    Order order = orderService.findOne(orderId);
    if (order.getStatus() != OrderStatus.CREATE.getStatus()) {
        log.error(ExceptionMessage.ORDER_STATUS_INCORRECTNESS + " orderId: {}", orderId);
        throw new ValidateException(ExceptionMessage.ORDER_STATUS_INCORRECTNESS);
    }

    AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();
    Map<String, String> params = new TreeMap<>();
    params.put("out_trade_no", order.getOutTradeNo());
    params.put("total_amount", order.getTotalFee().toString());
    params.put("subject", "备注");
    params.put("body", "详情");
    params.put("store_id", "NJ_2031");
    params.put("timeout_express", "90m");
    request.setBizContent(objectMapper.writeValueAsString(params));
    request.setNotifyUrl(appProperties.getAli().getNotify_url());

    AlipayTradePrecreateResponse responseData = alipayClient.execute(request);
    log.info("response:{}", responseData.getBody());
    String qrCode = responseData.getQrCode();
    if (!ObjectUtils.isEmpty(qrCode)) {
        PaymentUtils.createQRCode(qrCode, response);
        return Result.success(ExceptionMessage.SUCCESS);
    }
    return Result.error(ExceptionMessage.ALI_PAY_CREATE_QR_CODE_SUCCESS);
}
 
Example #2
Source File: DefaultAlipayServiceImpl.java    From MeetingFilm with Apache License 2.0 4 votes vote down vote up
public String trade_precreate(String orderId) {
        String filePath = "";
        // 获取订单信息
        OrderVO orderVO = orderServiceAPI.getOrderInfoById(orderId);

        // (必填) 商户网站订单系统中唯一订单号,64个字符以内,只能包含字母、数字、下划线,
        // 需保证商户系统端不能重复,建议通过数据库sequence生成,
        String outTradeNo = orderId;

        // (必填) 订单标题,粗略描述用户的支付目的。如“xxx品牌xxx门店当面付扫码消费”
        String subject = "Meeting院线购票业务";

        // (必填) 订单总金额,单位为元,不能超过1亿元
        // 如果同时传入了【打折金额】,【不可打折金额】,【订单总金额】三者,则必须满足如下条件:【订单总金额】=【打折金额】+【不可打折金额】
        String totalAmount = orderVO.getOrderPrice();

        // (可选) 订单不可打折金额,可以配合商家平台配置折扣活动,如果酒水不参与打折,则将对应金额填写至此字段
        // 如果该值未传入,但传入了【订单总金额】,【打折金额】,则该值默认为【订单总金额】-【打折金额】
        String undiscountableAmount = "0";

        // 卖家支付宝账号ID,用于支持一个签约账号下支持打款到不同的收款账号,(打款到sellerId对应的支付宝账号)
        // 如果该字段为空,则默认为与支付宝签约的商户的PID,也就是appid对应的PID
        String sellerId = "";

        // 订单描述,可以对交易或商品进行一个详细地描述,比如填写"购买商品2件共15.00元"
        String body = "购买电影票共花费" + orderVO.getOrderPrice();

        // 商户操作员编号,添加此参数可以为商户操作员做销售统计
        String operatorId = "jiangzh";

        // (必填) 商户门店编号,通过门店号和商家后台可以配置精准到门店的折扣信息,详询支付宝技术支持
        String storeId = "wangfei";

        // 业务扩展参数,目前可添加由支付宝分配的系统商编号(通过setSysServiceProviderId方法),详情请咨询支付宝技术支持
        ExtendParams extendParams = new ExtendParams();
        extendParams.setSysServiceProviderId("2088100200300400500");

        // 支付超时,定义为120分钟
        String timeoutExpress = "120m";

        // 商品明细列表,需填写购买商品详细信息,
        List<GoodsDetail> goodsDetailList = new ArrayList<GoodsDetail>();
//        // 创建一个商品信息,参数含义分别为商品id(使用国标)、名称、单价(单位为分)、数量,如果需要添加商品类别,详见GoodsDetail
//        GoodsDetail goods1 = GoodsDetail.newInstance("goods_id001", "xxx小面包", 1000, 1);
//        // 创建好一个商品后添加至商品明细列表
//        goodsDetailList.add(goods1);
//
//        // 继续创建并添加第一条商品信息,用户购买的产品为“黑人牙刷”,单价为5.00元,购买了两件
//        GoodsDetail goods2 = GoodsDetail.newInstance("goods_id002", "xxx牙刷", 500, 2);
//        goodsDetailList.add(goods2);

        // 创建扫码支付请求builder,设置请求参数
        AlipayTradePrecreateRequestBuilder builder = new AlipayTradePrecreateRequestBuilder()
                .setSubject(subject).setTotalAmount(totalAmount).setOutTradeNo(outTradeNo)
                .setUndiscountableAmount(undiscountableAmount).setSellerId(sellerId).setBody(body)
                .setOperatorId(operatorId).setStoreId(storeId).setExtendParams(extendParams)
                .setTimeoutExpress(timeoutExpress)
                //                .setNotifyUrl("http://www.test-notify-url.com")//支付宝服务器主动通知商户服务器里指定的页面http路径,根据需要设置
                .setGoodsDetailList(goodsDetailList);

        AlipayF2FPrecreateResult result = tradeService.tradePrecreate(builder);
        switch (result.getTradeStatus()) {
            case SUCCESS:
                log.info("支付宝预下单成功: )");

                AlipayTradePrecreateResponse response = result.getResponse();

                // 需要修改为运行机器上的路径
                filePath = String.format("C:/Users/29212/Desktop/temp/qr-%s.png",
                        response.getOutTradeNo());
                String fileName = String.format("qr-%s.png", response.getOutTradeNo());
                log.info("filePath:" + filePath);
                File qrCodeImge = ZxingUtils.getQRCodeImge(response.getQrCode(), 256, filePath);

                boolean isSuccess = ftpUtil.uploadFile(fileName, qrCodeImge);
                if (!isSuccess) {
                    filePath = "";
                    log.error("二维码上传失败");
                }

                break;

            case FAILED:
                log.error("支付宝预下单失败!!!");
                break;

            case UNKNOWN:
                log.error("系统异常,预下单状态未知!!!");
                break;

            default:
                log.error("不支持的交易状态,交易返回异常!!!");
                break;
        }
        return filePath;
    }
 
Example #3
Source File: AlipayF2FPrecreateResult.java    From MeetingFilm with Apache License 2.0 4 votes vote down vote up
public AlipayF2FPrecreateResult(AlipayTradePrecreateResponse response) {
    this.response = response;
}
 
Example #4
Source File: AlipayF2FPrecreateResult.java    From MeetingFilm with Apache License 2.0 4 votes vote down vote up
public void setResponse(AlipayTradePrecreateResponse response) {
    this.response = response;
}
 
Example #5
Source File: AlipayF2FPrecreateResult.java    From MeetingFilm with Apache License 2.0 4 votes vote down vote up
public AlipayTradePrecreateResponse getResponse() {
    return response;
}
 
Example #6
Source File: AlipayTradePrecreateRequest.java    From alipay-sdk-java-all with Apache License 2.0 4 votes vote down vote up
public Class<AlipayTradePrecreateResponse> getResponseClass() {
	return AlipayTradePrecreateResponse.class;
}
 
Example #7
Source File: Main.java    From mmall20180107 with Apache License 2.0 4 votes vote down vote up
public void test_trade_precreate() {
    // (必填) 商户网站订单系统中唯一订单号,64个字符以内,只能包含字母、数字、下划线,
    // 需保证商户系统端不能重复,建议通过数据库sequence生成,
    String outTradeNo = "tradeprecreate" + System.currentTimeMillis()
            + (long) (Math.random() * 10000000L);

    // (必填) 订单标题,粗略描述用户的支付目的。如“xxx品牌xxx门店当面付扫码消费”
    String subject = "xxx品牌xxx门店当面付扫码消费";

    // (必填) 订单总金额,单位为元,不能超过1亿元
    // 如果同时传入了【打折金额】,【不可打折金额】,【订单总金额】三者,则必须满足如下条件:【订单总金额】=【打折金额】+【不可打折金额】
    String totalAmount = "0.01";

    // (可选) 订单不可打折金额,可以配合商家平台配置折扣活动,如果酒水不参与打折,则将对应金额填写至此字段
    // 如果该值未传入,但传入了【订单总金额】,【打折金额】,则该值默认为【订单总金额】-【打折金额】
    String undiscountableAmount = "0";

    // 卖家支付宝账号ID,用于支持一个签约账号下支持打款到不同的收款账号,(打款到sellerId对应的支付宝账号)
    // 如果该字段为空,则默认为与支付宝签约的商户的PID,也就是appid对应的PID
    String sellerId = "";

    // 订单描述,可以对交易或商品进行一个详细地描述,比如填写"购买商品2件共15.00元"
    String body = "购买商品3件共20.00元";

    // 商户操作员编号,添加此参数可以为商户操作员做销售统计
    String operatorId = "test_operator_id";

    // (必填) 商户门店编号,通过门店号和商家后台可以配置精准到门店的折扣信息,详询支付宝技术支持
    String storeId = "test_store_id";

    // 业务扩展参数,目前可添加由支付宝分配的系统商编号(通过setSysServiceProviderId方法),详情请咨询支付宝技术支持
    ExtendParams extendParams = new ExtendParams();
    extendParams.setSysServiceProviderId("2088100200300400500");

    // 支付超时,定义为120分钟
    String timeoutExpress = "120m";

    // 商品明细列表,需填写购买商品详细信息,
    List<GoodsDetail> goodsDetailList = new ArrayList<GoodsDetail>();
    // 创建一个商品信息,参数含义分别为商品id(使用国标)、名称、单价(单位为分)、数量,如果需要添加商品类别,详见GoodsDetail
    GoodsDetail goods1 = GoodsDetail.newInstance("goods_id001", "xxx小面包", 1000, 1);
    // 创建好一个商品后添加至商品明细列表
    goodsDetailList.add(goods1);

    // 继续创建并添加第一条商品信息,用户购买的产品为“黑人牙刷”,单价为5.00元,购买了两件
    GoodsDetail goods2 = GoodsDetail.newInstance("goods_id002", "xxx牙刷", 500, 2);
    goodsDetailList.add(goods2);

    // 创建扫码支付请求builder,设置请求参数
    AlipayTradePrecreateRequestBuilder builder = new AlipayTradePrecreateRequestBuilder()
            .setSubject(subject).setTotalAmount(totalAmount).setOutTradeNo(outTradeNo)
            .setUndiscountableAmount(undiscountableAmount).setSellerId(sellerId).setBody(body)
            .setOperatorId(operatorId).setStoreId(storeId).setExtendParams(extendParams)
            .setTimeoutExpress(timeoutExpress)
            //                .setNotifyUrl("http://www.test-notify-url.com")//支付宝服务器主动通知商户服务器里指定的页面http路径,根据需要设置
            .setGoodsDetailList(goodsDetailList);

    AlipayF2FPrecreateResult result = tradeService.tradePrecreate(builder);
    switch (result.getTradeStatus()) {
        case SUCCESS:
            log.info("支付宝预下单成功: )");

            AlipayTradePrecreateResponse response = result.getResponse();
            dumpResponse(response);

            // 需要修改为运行机器上的路径
            String filePath = String.format("/Users/sudo/Desktop/qr-%s.png",
                    response.getOutTradeNo());
            log.info("filePath:" + filePath);
            //                ZxingUtils.getQRCodeImge(response.getQrCode(), 256, filePath);
            break;

        case FAILED:
            log.error("支付宝预下单失败!!!");
            break;

        case UNKNOWN:
            log.error("系统异常,预下单状态未知!!!");
            break;

        default:
            log.error("不支持的交易状态,交易返回异常!!!");
            break;
    }
}
 
Example #8
Source File: Main.java    From mmall-kay-Java with Apache License 2.0 4 votes vote down vote up
public void test_trade_precreate() {
    // (必填) 商户网站订单系统中唯一订单号,64个字符以内,只能包含字母、数字、下划线,
    // 需保证商户系统端不能重复,建议通过数据库sequence生成,
    String outTradeNo = "tradeprecreate" + System.currentTimeMillis()
                        + (long) (Math.random() * 10000000L);

    // (必填) 订单标题,粗略描述用户的支付目的。如“xxx品牌xxx门店当面付扫码消费”
    String subject = "xxx品牌xxx门店当面付扫码消费";

    // (必填) 订单总金额,单位为元,不能超过1亿元
    // 如果同时传入了【打折金额】,【不可打折金额】,【订单总金额】三者,则必须满足如下条件:【订单总金额】=【打折金额】+【不可打折金额】
    String totalAmount = "0.01";

    // (可选) 订单不可打折金额,可以配合商家平台配置折扣活动,如果酒水不参与打折,则将对应金额填写至此字段
    // 如果该值未传入,但传入了【订单总金额】,【打折金额】,则该值默认为【订单总金额】-【打折金额】
    String undiscountableAmount = "0";

    // 卖家支付宝账号ID,用于支持一个签约账号下支持打款到不同的收款账号,(打款到sellerId对应的支付宝账号)
    // 如果该字段为空,则默认为与支付宝签约的商户的PID,也就是appid对应的PID
    String sellerId = "";

    // 订单描述,可以对交易或商品进行一个详细地描述,比如填写"购买商品2件共15.00元"
    String body = "购买商品3件共20.00元";

    // 商户操作员编号,添加此参数可以为商户操作员做销售统计
    String operatorId = "test_operator_id";

    // (必填) 商户门店编号,通过门店号和商家后台可以配置精准到门店的折扣信息,详询支付宝技术支持
    String storeId = "test_store_id";

    // 业务扩展参数,目前可添加由支付宝分配的系统商编号(通过setSysServiceProviderId方法),详情请咨询支付宝技术支持
    ExtendParams extendParams = new ExtendParams();
    extendParams.setSysServiceProviderId("2088100200300400500");

    // 支付超时,定义为120分钟
    String timeoutExpress = "120m";

    // 商品明细列表,需填写购买商品详细信息,
    List<GoodsDetail> goodsDetailList = new ArrayList<GoodsDetail>();
    // 创建一个商品信息,参数含义分别为商品id(使用国标)、名称、单价(单位为分)、数量,如果需要添加商品类别,详见GoodsDetail
    GoodsDetail goods1 = GoodsDetail.newInstance("goods_id001", "xxx小面包", 1000, 1);
    // 创建好一个商品后添加至商品明细列表
    goodsDetailList.add(goods1);

    // 继续创建并添加第一条商品信息,用户购买的产品为“黑人牙刷”,单价为5.00元,购买了两件
    GoodsDetail goods2 = GoodsDetail.newInstance("goods_id002", "xxx牙刷", 500, 2);
    goodsDetailList.add(goods2);

    // 创建扫码支付请求builder,设置请求参数
    AlipayTradePrecreateRequestBuilder builder = new AlipayTradePrecreateRequestBuilder()
        .setSubject(subject).setTotalAmount(totalAmount).setOutTradeNo(outTradeNo)
        .setUndiscountableAmount(undiscountableAmount).setSellerId(sellerId).setBody(body)
        .setOperatorId(operatorId).setStoreId(storeId).setExtendParams(extendParams)
        .setTimeoutExpress(timeoutExpress)
        //                .setNotifyUrl("http://www.test-notify-url.com")//支付宝服务器主动通知商户服务器里指定的页面http路径,根据需要设置
        .setGoodsDetailList(goodsDetailList);

    AlipayF2FPrecreateResult result = tradeService.tradePrecreate(builder);
    switch (result.getTradeStatus()) {
        case SUCCESS:
            log.info("支付宝预下单成功: )");

            AlipayTradePrecreateResponse response = result.getResponse();
            dumpResponse(response);

            // 需要修改为运行机器上的路径
            String filePath = String.format("/Users/sudo/Desktop/qr-%s.png",
                response.getOutTradeNo());
            log.info("filePath:" + filePath);
            //                ZxingUtils.getQRCodeImge(response.getQrCode(), 256, filePath);
            break;

        case FAILED:
            log.error("支付宝预下单失败!!!");
            break;

        case UNKNOWN:
            log.error("系统异常,预下单状态未知!!!");
            break;

        default:
            log.error("不支持的交易状态,交易返回异常!!!");
            break;
    }
}
 
Example #9
Source File: Main.java    From MMall_JAVA with GNU General Public License v3.0 4 votes vote down vote up
public void test_trade_precreate() {
    // (必填) 商户网站订单系统中唯一订单号,64个字符以内,只能包含字母、数字、下划线,
    // 需保证商户系统端不能重复,建议通过数据库sequence生成,
    String outTradeNo = "tradeprecreate" + System.currentTimeMillis()
                        + (long) (Math.random() * 10000000L);

    // (必填) 订单标题,粗略描述用户的支付目的。如“xxx品牌xxx门店当面付扫码消费”
    String subject = "xxx品牌xxx门店当面付扫码消费";

    // (必填) 订单总金额,单位为元,不能超过1亿元
    // 如果同时传入了【打折金额】,【不可打折金额】,【订单总金额】三者,则必须满足如下条件:【订单总金额】=【打折金额】+【不可打折金额】
    String totalAmount = "0.01";

    // (可选) 订单不可打折金额,可以配合商家平台配置折扣活动,如果酒水不参与打折,则将对应金额填写至此字段
    // 如果该值未传入,但传入了【订单总金额】,【打折金额】,则该值默认为【订单总金额】-【打折金额】
    String undiscountableAmount = "0";

    // 卖家支付宝账号ID,用于支持一个签约账号下支持打款到不同的收款账号,(打款到sellerId对应的支付宝账号)
    // 如果该字段为空,则默认为与支付宝签约的商户的PID,也就是appid对应的PID
    String sellerId = "";

    // 订单描述,可以对交易或商品进行一个详细地描述,比如填写"购买商品2件共15.00元"
    String body = "购买商品3件共20.00元";

    // 商户操作员编号,添加此参数可以为商户操作员做销售统计
    String operatorId = "test_operator_id";

    // (必填) 商户门店编号,通过门店号和商家后台可以配置精准到门店的折扣信息,详询支付宝技术支持
    String storeId = "test_store_id";

    // 业务扩展参数,目前可添加由支付宝分配的系统商编号(通过setSysServiceProviderId方法),详情请咨询支付宝技术支持
    ExtendParams extendParams = new ExtendParams();
    extendParams.setSysServiceProviderId("2088100200300400500");

    // 支付超时,定义为120分钟
    String timeoutExpress = "120m";

    // 商品明细列表,需填写购买商品详细信息,
    List<GoodsDetail> goodsDetailList = new ArrayList<GoodsDetail>();
    // 创建一个商品信息,参数含义分别为商品id(使用国标)、名称、单价(单位为分)、数量,如果需要添加商品类别,详见GoodsDetail
    GoodsDetail goods1 = GoodsDetail.newInstance("goods_id001", "xxx小面包", 1000, 1);
    // 创建好一个商品后添加至商品明细列表
    goodsDetailList.add(goods1);

    // 继续创建并添加第一条商品信息,用户购买的产品为“黑人牙刷”,单价为5.00元,购买了两件
    GoodsDetail goods2 = GoodsDetail.newInstance("goods_id002", "xxx牙刷", 500, 2);
    goodsDetailList.add(goods2);

    // 创建扫码支付请求builder,设置请求参数
    AlipayTradePrecreateRequestBuilder builder = new AlipayTradePrecreateRequestBuilder()
        .setSubject(subject).setTotalAmount(totalAmount).setOutTradeNo(outTradeNo)
        .setUndiscountableAmount(undiscountableAmount).setSellerId(sellerId).setBody(body)
        .setOperatorId(operatorId).setStoreId(storeId).setExtendParams(extendParams)
        .setTimeoutExpress(timeoutExpress)
        //                .setNotifyUrl("http://www.test-notify-url.com")//支付宝服务器主动通知商户服务器里指定的页面http路径,根据需要设置
        .setGoodsDetailList(goodsDetailList);

    AlipayF2FPrecreateResult result = tradeService.tradePrecreate(builder);
    switch (result.getTradeStatus()) {
        case SUCCESS:
            log.info("支付宝预下单成功: )");

            AlipayTradePrecreateResponse response = result.getResponse();
            dumpResponse(response);

            // 需要修改为运行机器上的路径
            String filePath = String.format("/Users/sudo/Desktop/qr-%s.png",
                response.getOutTradeNo());
            log.info("filePath:" + filePath);
            //                ZxingUtils.getQRCodeImge(response.getQrCode(), 256, filePath);
            break;

        case FAILED:
            log.error("支付宝预下单失败!!!");
            break;

        case UNKNOWN:
            log.error("系统异常,预下单状态未知!!!");
            break;

        default:
            log.error("不支持的交易状态,交易返回异常!!!");
            break;
    }
}
 
Example #10
Source File: AlipayTradePrecreateRequest.java    From alipay-sdk with Apache License 2.0 4 votes vote down vote up
public Class<AlipayTradePrecreateResponse> getResponseClass() {
	return AlipayTradePrecreateResponse.class;
}
 
Example #11
Source File: AlipayTradePrecreateRequest.java    From pay with Apache License 2.0 4 votes vote down vote up
public Class<AlipayTradePrecreateResponse> getResponseClass() {
	return AlipayTradePrecreateResponse.class;
}