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
赞赞赞!
00 -
Geely
2018-05-01
哇塞!!太赞了亲爱的 同学!!!!!!
已收藏!
00 -
星辰Iron
2018-04-30
赞一个!!
00
相似问题