AlipaySDK3.0面对面扫码

来源:11-10 支付模块所有功能自测

慕圣7294918

2018-04-30

现在maven中央仓库已经能下到支付宝的SDK了,先添加依赖,ZxingUtils需要复制过来

<dependency>
    <groupId>com.alipay.sdk</groupId>
    <artifactId>alipay-sdk-java</artifactId>
    <version>3.0.0</version>
</dependency>
public ServerResponse pay(Long orderNo, Integer userId, String path) throws AlipayApiException {
    Map<String, String> resultMap = Maps.newHashMap();
    Order order = orderMapper.selectByUserIdAndOrderNo(userId, orderNo);
    if (order == null) {
        return ServerResponse.createByErrorMessage("用户没有该订单");
    }
    resultMap.put("orderNo", String.valueOf(order.getOrderNo()));
    String outTradeNo = String.valueOf(order.getOrderNo());
    String subject = new StringBuilder("mmall扫码支付,订单号:").append(orderMapper).toString();
    String totalAmount = order.getPayment().toString();
    String storeId = "test_store_id";
    String providerId = "2088100200300400500";
    ExtendParams extendParams = new ExtendParams();
    extendParams.setSysServiceProviderId(providerId);
    String timeoutExpress = "5m";
    List<GoodsDetail> goodsDetailList = new ArrayList<>();
    List<OrderItem> orderItemList = orderItemMapper.getByOrderNoUserId(orderNo, userId);
    for (OrderItem orderItem : orderItemList) {
        GoodsDetail goods = new GoodsDetail();
        goods.setGoodsId(orderItem.getProductId().toString());
        goods.setGoodsName(orderItem.getProductName());
        goods.setPrice(BigDecimalUtil.mul(orderItem.getCurrentUnitPrice().doubleValue(),
                new Double(100).doubleValue()).toString());
        goods.setQuantity(Long.valueOf(orderItem.getQuantity().toString()));
        goodsDetailList.add(goods);
    }
    AlipayTradePayModel alipayTradePayModel = new AlipayTradePayModel();
    alipayTradePayModel.setOutTradeNo(outTradeNo);
    alipayTradePayModel.setTotalAmount(totalAmount);
    alipayTradePayModel.setSubject(subject);
    alipayTradePayModel.setStoreId(storeId);
    alipayTradePayModel.setTimeoutExpress(timeoutExpress);
    //PropertiesUtil静态代码块还需要加载zfbinfo.properties
    //props.load(new InputStreamReader(PropertiesUtil.class.getClassLoader().getResourceAsStream("zfbinfo.properties"), "UTF-8"));
    AlipayClient alipayClient = new DefaultAlipayClient(PropertiesUtil.getProperty("open_api_domain"),
            PropertiesUtil.getProperty("appid"),
            PropertiesUtil.getProperty("private_key"),
            AlipayConstants.FORMAT_JSON,
            AlipayConstants.CHARSET_UTF8,
            PropertiesUtil.getProperty("alipay_public_key"),
            AlipayConstants.SIGN_TYPE_RSA2);
    AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();
    request.setBizModel(alipayTradePayModel);
    request.setNotifyUrl(PropertiesUtil.getProperty("alipay.callback.url"));
    // 获取当面付应答
    AlipayTradePrecreateResponse response = alipayClient.execute(request);
    String code = response.getCode();
    if (!"10000".equals(code)) {
        logger.info("支付宝预下单失败!!!");
        return ServerResponse.createByErrorMessage("支付宝预下单失败!!!");
    }
    logger.info("支付宝预下单成功:)");
    String body = response.getBody();
    logger.info("支付宝收到响应=======>" + body);
    File folder = new File(path);
    if (!folder.exists()) {
        folder.setWritable(true);
        folder.mkdirs();
    }
    String qrPath = String.format(path+"/qr-%s.png", response.getOutTradeNo());
    String qrFileName = String.format("qr-%s.png",response.getOutTradeNo());
    ZxingUtils.getQRCodeImge(response.getQrCode(), 256, qrPath);
    File targetFile = new File(path, qrFileName);
    try {
        FTPUtil.uploadFile(Lists.newArrayList(targetFile));
    } catch (IOException e) {
        logger.error("上传二维码异常", e);
    }
    logger.info("qrPath: " + qrPath);
    String qrUrl = PropertiesUtil.getProperty("ftp.server.http.prefix") + targetFile.getName();
    resultMap.put("qrUrl", qrUrl);
    return ServerResponse.createBySuccess(resultMap);
}


写回答

3回答

慕沐0564158

2018-06-03

赞赞赞!

0
0

Geely

2018-05-01

哇塞!!太赞了亲爱的 同学!!!!!!

已收藏!

//img.mukewang.com/szimg/5ae81bca00019d7114760376.jpg

0
0

星辰Iron

2018-04-30

赞一个!!

0
0

从0开始 独立完成企业级Java电商网站服务端开发

前后端分离,数据库接口设计,架构设计,功能开发,上线运维

9430 学习 · 8787 问题

查看课程