java 对接支付宝支付

对接支付宝支付的前提:

1,商户开通支付能力

登录蚂蚁金服 开放平台: https://open.alipay.com/platform/home.htm

需要开通 的功能选项有:

创建应用,类型是:网页&移动应用

设置应用的RSA 等各项参数,界面如下:

支付宝推荐使用RSA2 加密方式,老版的加密方式只有RSA 和md5,没有RSA2.

本项目使用RSA2 加密方式

2,对接支付宝依赖的jar包

 <!-- https://mvnrepository.com/artifact/net.guerlab/sdk-alipay-core -->
        <dependency>
            <groupId>net.guerlab</groupId>
            <artifactId>sdk-alipay-core</artifactId>
            <version>1.0.3</version>
        </dependency>

 

我写了一个专门封装对接支付宝的Service 层

见代码: https://gitee.com/kunlunsoft/pay_service.git

项目结构:

发起支付 控制器(需根据实际情况修改):

下面的"/order/startPay"接口

package com.girltest.web.controller.pay;

import com.common.annotation.NoLogin;
import com.common.bean.BaseResponseDto;
import com.common.dict.Constant2;
import com.common.util.RedisHelper;
import com.common.util.SystemHWUtil;
import com.girltest.dao.AlipayNotifySuccessDao;
import com.girltest.dao.BusinessOrderDao;
import com.girltest.entity.BusinessOrder;
import com.house.ujiayigou.thirdpart.alipay.config.AlipayConfig;
import com.house.ujiayigou.thirdpart.alipay.info.PayFormInfo;
import com.string.widget.util.RandomUtils;
import com.string.widget.util.ValueWidget;
import com.time.util.TimeHWUtil;
import com.yunmasoft.service.pay.AlipayNotifySuccessService;
import com.yunmasoft.service.pay.alipay.AliPayService;
import com.yunmasoft.service.pay.alipay.PayOperation;
import com.yunmasoft.service.pay.alipay.PayService;
import oa.entity.AlipayNotifySuccess;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.math.BigDecimal;
import java.util.Date;

/**
 * Created by tonyjiang on 15/8/28.
 */

@Controller
public class PayOrderController {

    @Resource(name = "alipay")
    private AliPayService aliPayService;
    public static org.slf4j.Logger HttpClientRestLogger = LoggerFactory.getLogger("pay_log");
    //    @Resource
//    private OrderDetailViewModel orderDetailViewModel;
    @Resource
    private AlipayNotifySuccessDao alipayNotifySuccessDao;
    @Resource
    private AlipayNotifySuccessService alipayNotifySuccessService;
    @Resource
    private BusinessOrderDao businessOrderDao;

    /***
     * 抹掉小数点后面的零头
     *
     * @param orderPrice
     * @return
     */
    private static String removeDecimalPoint(BigDecimal orderPrice) {
        String formatPrice = ValueWidget.formatBigDecimal(orderPrice);

        return formatPrice;
    }

    private static void checkOrderStatus(int orderStatus) {
        if (orderStatus == Constant2.ORDERSTATUS_PAID_ALREADY) {
            //支付完成,调到支付成功页
//            LogicBusinessException.throwException("alreadyPaid");
        } else if (orderStatus == Constant2.ORDERSTATUS_CANCELLED) {
            //已经取消了订单
//            LogicBusinessException.throwException("alreadyCancel");
        }
    }


    /***
     * 通过redis 获取订单的支付结果:是否支付成功
     * @param request
     * @param response
     * @param httpSession
     * @param model
     * @param orderNo
     * @return
     */
    @RequestMapping("/order/payOrderResult")
    @ResponseBody
    public String getOrderPayResult(HttpServletRequest request, HttpServletResponse response, HttpSession httpSession, Model model,
                                    @RequestParam(value = "orderNo", required = true) String orderNo) {
        BaseResponseDto baseResponseDto = new BaseResponseDto(PayService.isPaySuccess(orderNo));
        return baseResponseDto.toJson();
    }


    /***
     * 下单页
     * @param model
     * @param request
     * @param response
     * @param release
     * @return
     */
    @RequestMapping(value = "/order/place", produces = SystemHWUtil.RESPONSE_CONTENTTYPE_JSON_UTF)
    public String json2(Model model, HttpServletRequest request, HttpServletResponse response
            , @RequestParam(required = false, defaultValue = "true") Boolean release) {
        String orderNo = "Xr20001" + RandomUtils.getNextInt();
        model.addAttribute("orderNo", orderNo);
        return "pay/wap/placeorder";
    }

    /***
     * 步骤:
     * 1,获取当前用户信息
     * 2,根据订单号查询订单详情
     * 3,校验订单状态和支付方式
     * 4,跳转到第三方支付
     * @param request
     * @param response
     * @param httpSession
     * @param model
     * @param orderNo
     * @param callback
     * @return
     * @throws Exception
     */
    @RequestMapping("/order/startPay")
    @NoLogin
    public String startPay(HttpServletRequest request, HttpServletResponse response, HttpSession httpSession, Model model,
                           @RequestParam(value = "orderNo", required = true) String orderNo,
                           @RequestParam(value = "callback", required = false) String callback
            , BigDecimal shouldPay) throws Exception {


        //p判断该订单号是否已经存在
        AlipayNotifySuccess alipayNotifySuccess = this.alipayNotifySuccessService.getAlipayNotifySuccess(orderNo);
        if (null != alipayNotifySuccess) {
            model.addAttribute("errorMessage", "该订单号已经存在,orderNo:" + orderNo);
            return "pay/alipay";
        }

        // 判断订单号是否存在
        BusinessOrder businessOrder = this.businessOrderDao.get("orderNo", orderNo);
        if (null == businessOrder) {
            model.addAttribute("errorMessage", "该订单号不存在,orderNo:" + orderNo);
            return "pay/alipay";
        }
/*
        //保存订单
        businessOrder = new BusinessOrder();
        businessOrder.setOrderNo(orderNo);
        businessOrder.setTotalPrice(shouldPay);

        CreateTimeUtil.fillTime(businessOrder);
        this.businessOrderDao.add(businessOrder);*/
        //获取当前用户信息

        //7.应付金额
        String strShouldPay = null;
        if (ValueWidget.isNullOrEmpty(shouldPay)) {
            shouldPay=businessOrder.getPrice();
        }
        strShouldPay = ValueWidget.formatBigDecimal(shouldPay);
        //8. 账户
        String sellerAccount = AlipayConfig.seller_email;

        //9.其它
//        RedisHelper.getInstance().saveKeyCache(PayService.REDIS_KEY_STORE_ORDER_PAY_TIME, orderNo, TimeHWUtil.formatDate(new Date(), TimeHWUtil.YYYYMMDD_NO_LINE));
        String orderName = businessOrder.getProductBaseInfo().getDisplayName();
        //10.
        com.house.ujiayigou.thirdpart.alipay.info.PayFormInfo payFormInfo = new PayFormInfo();
        payFormInfo.setOut_trade_no(orderNo);
        payFormInfo.setSubject(orderName);
        payFormInfo.setBody(orderName);
        payFormInfo.setTotal_amount(strShouldPay);
        payFormInfo.setSeller_id(sellerAccount);
        String form = aliPayService.preparePostRequest(payFormInfo);
        HttpClientRestLogger.error("form:" + form);
        model.addAttribute("form", form);

        return "pay/alipay";


    }

    /**
     * 1,获取订单;
     * 2,价格;
     * 3,Identify;
     * 4,第三方支付相关接口service;
     * 5,callback
     * 6,coupon
     * 7,应付金额
     * 8,账户
     * 9,其它
     * 10,
     *
     * @param access_token
     * @param orderNo
     * @param payType
     * @param callback
     * @return
     */
    public String postThirdPayAction(String access_token, String orderNo, String payType, String callback) {
        //订单
       /* OrderInfoBean orderInfo = orderBusiness.getOrderInfoByOrderNo(access_token, orderNo);
        if (orderInfo == null || orderInfo.getItems().size()==0) {
            LogicBusinessException.throwException("cannotMatchOrder");
        }
        checkOrderStatus(orderInfo.orderStatus);
        if (orderInfo.orderStatus != Constant.ORDERSTATUS_ORDERS_SUBMITTED) {
            LogicBusinessException.throwException("20506");
        }*/
        //2.价格
        BigDecimal price = null;//orderBusiness.getOrderMoney(orderInfo);
        if (price == null) {
//            LogicBusinessException.throwException("cannotPay");
        }
        //3.Identify
        String identifier = null;//orderBusiness.getPayIdentify(orderNo, access_token, userInfo, price);


        PayOperation service = null;//(PayOperation) SpringMVCUtil.getBean( payType);
        if (service == null) {
//            LogicBusinessException.throwException("service is null");
        }

        //5.callback
        if (ValueWidget.isNullOrEmpty(callback)) {
            callback = "https:/order/view?orderNo=" + orderNo /*+ "&orgId=" + orgId*/;//千万不要URL转码
        }
        //6.coupon
        BigDecimal coupon = null;
        /*if (Constant.useDebugCouponValue) {
            coupon = new BigDecimal(Constant.couponValue);
        } else {*/
        coupon = new BigDecimal(0);
//        }

        //7.应付金额
        BigDecimal shouldPay = price.subtract(coupon.compareTo(price) < 0 ? coupon : new BigDecimal(0));//
        String strShouldPay = ValueWidget.formatBigDecimal(shouldPay);
        //8. 账户
        String sellerAccount = AlipayConfig.seller_email;

        //9.其它
        RedisHelper.getInstance().saveKeyCache(PayService.REDIS_KEY_STORE_ORDER_PAY_TIME, orderNo, TimeHWUtil.formatDate(new Date(), TimeHWUtil.YYYYMMDD_NO_LINE));
        String orderName = "xxx服务";
        //10.
        com.house.ujiayigou.thirdpart.alipay.info.PayFormInfo payFormInfo = new PayFormInfo();
        payFormInfo.setOut_trade_no(orderNo);
        payFormInfo.setSubject(orderName);
        payFormInfo.setBody(orderName);
        payFormInfo.setTotal_amount(strShouldPay);
        payFormInfo.setSeller_id(sellerAccount);
        String form = service.preparePostRequest(payFormInfo);

        return form;

    }


}

支付回调控制器(需根据实际情况修改):

下面的"/notify"接口

package com.girltest.web.controller.pay;

import com.common.dict.Constant2;
import com.common.util.*;
import com.yunmasoft.service.pay.alipay.PayOperation;
import com.io.hw.json.HWJacksonUtils;
import com.string.widget.util.ValueWidget;
import oa.util.SpringMVCUtil;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;

@Controller
@RequestMapping("/pay")
public class PayController {
    public static Logger logger = Logger.getRootLogger();

    @RequestMapping(value = "notify", produces = {SystemHWUtil.RESPONSE_CONTENTTYPE_JSON_UTF})
    @ResponseBody
    public String callback(
            @RequestParam(required = false) String method,
            @RequestParam(required = false) String out_trade_no/*订单号*/,
            @RequestParam(required = false) String trade_no,
            @RequestParam(required = false) String trade_status,
            @RequestParam(required = false) String extra_common_param,
            @RequestParam(required = false) String notifyUrl,
            @RequestParam(required = false) String body/*只有支付宝手机网站支付才有*/,
            HttpServletResponse response,
            HttpServletRequest request) {
        //userIdAndLoginnameAndOrgId 在请求参数中
        // 1.获取订单号
        if (ValueWidget.isNullOrEmpty(out_trade_no)) {
            out_trade_no = request.getParameter("outer_trade_no");
        }

        // 2.畅捷支付没有extra_common_param,兼容畅捷支付
        if (ValueWidget.isNullOrEmpty(extra_common_param) && !ValueWidget.isNullOrEmpty(notifyUrl)) {//added by huangweii
            Map argMap = RequestUtil.parseQueryString(notifyUrl);
            extra_common_param = (String) argMap.get("chanpay");
        }

        logger.info(HWJacksonUtils.getJsonP(request.getParameterMap()));


        // 3.兼容extra_common_param为空的情况
        boolean isAlipayMobile = false;
        if (ValueWidget.isNullOrEmpty(extra_common_param)) {//added by huangweii,extra_common_param为空,说明是xx支付
            String extra_common_paramSuffix = RedisHelper.getInstance().getCache("store_" + out_trade_no + "_Identifier") +
                    "::" + RedisHelper.getInstance().getCache("store_" + out_trade_no + "_userinfo");
            if (ValueWidget.isNullOrEmpty(request.getParameter("out_trade_no"))) {
                extra_common_param = "chanpay::" + extra_common_paramSuffix;
            } else {
                isAlipayMobile = true;
                extra_common_param = "alipay::" + extra_common_paramSuffix;
            }

        }

        // 4. 缓存日志
//        String currentCache = RedisHelper.getInstance().getKeyCache(Constant.REDIS_ID_STORE, out_trade_no) + "<br>";
//        RedisHelper.getInstance().saveKeyCacheAndExpire(Constant.REDIS_ID_STORE, out_trade_no, currentCache +request.getRequestURI()+ extra_common_param + ",notifyUrl:" + notifyUrl);

        logger.info("extra_common_param:" + extra_common_param);
        // 获取支付宝POST过来反馈信息

        Map requestParams = request.getParameterMap();

        Map<String, String> params = WebServletUtil.getParamMap(requestParams);
//        params.put("userIdAndLoginnameAndOrgId", userIdAndLoginnameAndOrgId);


        // 5.获取service
        PayOperation service = null;
        if (extra_common_param != null && extra_common_param.contains("::")) {

            String[] info = extra_common_param.split("::");
            service = (PayOperation) SpringMVCUtil.getBean(request, info[0]);
        }

        if (service == null) {
            return "fail";
        }


        // 6.验签
        String verity_ok = service.verify(WebServletUtil.getParamMap(requestParams));

        if (!verity_ok.equals("success")) {
            logger.error(params.toString());
            logger.error("verify fail");
            return verity_ok;
        }

        // 7. 缓存日志
//        currentCache = RedisHelper.getInstance().getKeyCache(Constant.REDIS_ID_STORE, out_trade_no) + "<br>";
//        RedisHelper.getInstance().saveKeyCacheAndExpire(Constant.REDIS_ID_STORE, out_trade_no, currentCache + "verity->" + verity_ok);

        

        // 8.回调,调用确认订单接口
        try {
            String pay_ok = service.payNotify(out_trade_no, trade_no, trade_status, params);
            if (pay_ok != null) {
                logger.debug(pay_ok + "");
                return pay_ok; // 请不要修改或删除
            }
        } catch (Exception ex) {
            logger.error("payNOtify error:", ex);
            return "fail";
        }


        return "fail";

    }


    @RequestMapping(value = "payResult")
    public String getPaymentResult(@RequestParam(required = false) String orderid,
                                   @RequestParam(required = false) String userid,
                                   HttpServletRequest request,
                                   HttpServletResponse response,
                                   Model model) throws IOException {
        logger.info("payResult orderid:" + orderid);
        // 获取支付宝POST过来反馈信息
        Map requestParams = request.getParameterMap();

        Map<String, String> params = WebServletUtil.getParamMap(requestParams);
        String orderId = orderid;
        if (ValueWidget.isNullOrEmpty(orderId)) {
            orderId = params.get("orderid");
        }
        if (orderId == null) {
            orderId = params.get("out_trade_no");
        }
        //畅捷支付点击[返回商家] TODO
        if (orderId == null) {
            orderId = params.get("orderId");
        }
        logger.info("payResult params:" + params);
        String payResult = params.get("payResult");
        String extra_common_param = params.get("extra_common_param");
        logger.info("payResult extra_common_param:" + extra_common_param);

        if (!Constant2.CHANPAY_ORDER_RESULT_SUCCESS.equals(payResult)) {
            response.sendRedirect("/order/payOrder?orderId=" + orderId /*+ "&orgId=" + service.getOrgId(orderId)*/);
            return null;
        }
        response.sendRedirect("/order/payComplete?orderId=" + orderId /*+ "&orgId=" + service.getOrgId(orderId)*/);
        return null;

    }


}

 

实际支付demo:

http://i.yhskyc.com/product/1

各文档:

电脑网站支付快速接入
https://docs.open.alipay.com/270/105899/
API 详细说明:
https://docs.open.alipay.com/270/alipay.trade.page.pay/

服务端SDK
https://docs.open.alipay.com/54/103419

RSA私钥及公钥生成
https://docs.open.alipay.com/58/103242/
 

RSA私钥及公钥生成 工具:

https://gitee.com/kunlunsoft/http_request_tool

上图中2048 对应RSA2

相关项目:

https://github.com/liuyu520/io0007

https://gitee.com/kunlunsoft/oa_framework

注意:

1,本项目使用新版支付宝支付

即时到账新老版本接口对比
https://docs.open.alipay.com/270/106759

2,新版支付宝支付,就算仅使用PC端网页支付,也需要创建一个应用,老版不需要.

3,电脑端网页支付应该使用:
AlipayTradePagePayRequest,而不是AlipayTradePayRequest;

4,对业务参数(非公共参数),进行 json 序列化时,
一定使用阿里自己的类:
JSONWriter writer = new JSONWriter();
String body=writer.write(model, true);

转载于:https://my.oschina.net/huangweiindex/blog/1637847

weixin_34245169
关注 关注
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
alipay与wxpay的jar引用问题
m0_37997811的博客
03-20 2385
该文件是对于jar包的提供、maven的POM文件依赖和手动导入代码。 1、支付宝支付: jar包:alipay-sdk-java20170324180803.jar 依赖:< dependency > < groupId >com.alipay< /groupId> < artifactId >sdk-java< /artifactId&gt...
alipay本地jar安装
rootDream的博客
03-28 3468
安装本地jar,此处以alipay为例 1、从支付宝官网下载sdk 官网扫码登录:https://openhome.alipay.com 进入沙箱环境:[https://openhome.alipay.com/platform/appDaily.htm?tab=info 下载当面付sdk 下载电脑网站支付sdk 2、找出所需要jar包的groupId和artifactId 首先根据artif...
支付宝h5支付java版)
最新发布
z1667002的博客
04-12 575
在这里,由于面试中MySQL问的比较多,因此也就在此以MySQL为例为大家总结分享。但是你要学习的往往不止这一点,还有一些主流框架的使用,Spring源码的学习,Mybatis源码的学习等等都是需要掌握的,我也把这些知识点都整理起来了《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!的比较多,因此也就在此以MySQL为例为大家总结分享。
Java接入支付宝支付功能(APP支付)
LaoRenYuHai_的博客
12-19 1083
Java对接支付宝实现APP支付和异步回调处理
Java 实现支付宝支付、退款、订单查询
欢迎阅读程序猿小张的博客~
06-30 2671
Java 实现支付宝支付、退款、订单查询
java进行支付宝支付(沙箱环境)
m0_55627541的博客
11-01 764
根据前端选择的商品id/编号,传入后台后,调用AlipayTradePagePayModel进行参数设置,最后通过AlipayTradePagePayRequest,设置1支付成功后的回调地址我写的百度2回调在哪个接口暴漏公网的接口,然后执行pageExecute完成签名执行请求。controller层:接口总共7个接口,其中有一个是支付宝回调接口,就是你支付完成后,支付宝调用你提供的接口给你传回调消息,所以需要你这个接口是能够在公网访问的接口,因此对于本地环境来说需要内网穿透。手机沙箱版支付宝扫码支付
java对接支付宝功能
02-21
java对接支付
java对接支付宝微信支付全套代码包括退款.md
09-16
java对接微信/支付宝支付,全套代码包括退款,统一app支付,统一网站支付,统一公众号支付,依赖,实体类,工具类,复制粘贴即可用
java对接支付宝支付demo.rar
06-09
java对接支付宝支付demo,支付宝官方案例。代码很全,拿来就可以用
java C# PHP对接支付宝和微信API
05-18
java C# PHP 支付宝微信支付api接口 以及详细接口文档和demo
java支付宝扫码
03-29
java 支付宝 扫码支付二维码一维码,简单易懂 简单易懂。
融宝支付平台aspAPI接口示例
07-08
融宝支付平台aspAPI接口示例,你懂的。
Java支付宝支付(电脑网站支付)案例实战
热门推荐
https://gitee.com/micai-code
09-30 1万+
摘要:最近的一个项目中涉及到了支付业务,其中用到了微信支付支付宝支付,在做的过程中也遇到些问题,正好马上放假了,公司不忙了,所以现在总结梳理一下,分享给有需要的人,也为自己以后回顾留个思路。 一:支付宝支付接入准备工作: 首先,支付宝支付和微信支付意愿,都是只支持企业用户,个人用户是不能接入支付宝支付的,所以要想接入支付宝支付,首先需要有支付宝的企业账号,有了企业账号才能拿到支付宝支付的所需......
java对接支付宝实现app支付、退款
洛笙的博客
01-16 675
注册完之后能得到支付宝的appId、支付宝公钥,和应用私钥。如果要做支付宝转账还需要支付宝证书模式的appId、证书模式支付宝公钥和证书模式应用私钥。支付宝PayClient实例化bean注入(非加签模式非证书模式注入),一般用于app支付。业务层:该业务层中增加了一部分业务操作,可用来参考支付退款实现。将前段时间做的支付工作,做个工作总结吧,顺便分享给大家一下。支付宝支付回调控制层。
Java集成支付宝支付,快速实现在线支付
m0_49151953的博客
04-09 2943
在使用支付宝支付之前,你需要先注册成为支付宝开放平台的开发者,并申请到相应的API密钥和商户号。API密钥是用于验证你的身份和数据完整性的,而商户号则是支付宝用于识别你的商户身份的。需要注意的是,在实际开发中,还需要考虑支付安全性、支付流程的完整性等问题。在完成代码编写之后,你需要对支付宝支付功能进行测试,确保支付宝支付能够正常工作。随着电子商务的飞速发展,越来越多的企业和个人开始选择在线支付作为支付方式,而支付宝作为中国最大的第三方支付平台,自然成为了众多商家的首选。第四步,测试支付宝支付功能。
java对接支付宝支付
jiandanyou的博客
06-14 4396
java对接支付宝支付
Java开发支付宝支付功能
浅月流苏
04-26 5943
之前做开发过程中,没有接触过支付相关的功能,最近做了一个支付相关功能的开发,包括支付宝和微信支付,为了避免以后忘记相关的流程,记录一下这次的开发经验,这里先介绍一下支付宝相关的开发。 首先在进行java开发功能之前,先要在支付宝开放平台创建应用或者绑定应用,然后配置密钥,开放签约功能,具体流程,参考支付宝文档中心,附上链接网页&移动应用学习路径 - 支付宝文档中心 (alipay.com)https://opendocs.alipay.com/apis/01ddgu应用创建完成,相....
JAVA对接微信支付支付宝支付(APP端支付)
想当大佬的咸鱼双的博客
08-07 8761
本文主要介绍的是JAVA对接支付宝和微信支付,废话少说上代码(部分业务代码就不上了,例如订单等,根据业务需求自行修改): 用到的工具类: maven依赖: <!-- https://mvnrepository.com/artifact/com.alipay.sdk/alipay-sdk-java --> <dependency> <grou...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • LINUX mount -t用法 27048
  • Java笔试题解答和部分面试题 25912
  • a foreign key constraint fails 15647
  • route add添加静态路由 12716
  • html文件中文在浏览器中显示乱码问题解决 10558

最新评论

  • Linux 修改IP及虚拟网卡配置详解

    摸鱼dang: 这从哪抄的?

  • Fiddler快速入门

    倒卖月光: 这个不是要收费的吗

  • 利用OpenLayers创建wkt字符串

    weixin_45662114: 你这个getGeodesicArea 是openlayers的吗 我怎么没有找到过

  • 揭秘菜鸟仓储体系“大脑”:智能波次如何实现仓库降本提效?

    weixin_44838956: 图片为啥刷不出来呀?

  • Java笔试题解答和部分面试题

    zfjhcc: Base tell name: null Base print name: null Dervied tell name: dervied Base print name: dervied

大家在看

  • 700.二叉搜索树中的搜索
  • Codeforces Round 951 (Div. 2) abc

最新文章

  • linux 命令记录
  • 一切从零开始外挂教程(翻录)
  • 遍历磁盘根目录
2019年364篇
2018年697篇
2017年949篇
2016年556篇
2015年398篇
2014年331篇
2013年296篇
2012年261篇
2011年209篇
2010年148篇
2009年128篇
2008年97篇
2007年62篇
2006年50篇
2005年21篇
2004年10篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

哆哆女性网姓姚的男起名周公解梦 梦见水免费给宝宝起名字女孩免费直播网站建设网站建设销售词梦到蛇怎么解梦网站的优化推广的内容营销在哪里推广家具店起名七画法起名吉祥字贸易公司起名两个字大全江西关键词seo挖机租赁公司起名大全龚俊最新电视剧秦姓男人起名大全www.dyavav.com最准的免费算命网站周易起店名网免费起名大全房地产活动推广营销宝宝起名字带辈分起个简单的矿泉水名字老年人练什么养生功好深圳网站建设售后服务一生一世美人骨全文无删减朝阳网站设计与建设南京公司建设网站钟姓胎儿起名黄姓和李姓可以起的名字红警怎么联机天津微信网站建设淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻不负春光新的一天从800个哈欠开始有个姐真把千机伞做出来了国产伟哥去年销售近13亿充个话费竟沦为间接洗钱工具重庆警方辟谣“男子杀人焚尸”男子给前妻转账 现任妻子起诉要回春分繁花正当时呼北高速交通事故已致14人死亡杨洋拄拐现身医院月嫂回应掌掴婴儿是在赶虫子男孩疑遭霸凌 家长讨说法被踢出群因自嘲式简历走红的教授更新简介网友建议重庆地铁不准乘客携带菜筐清明节放假3天调休1天郑州一火锅店爆改成麻辣烫店19岁小伙救下5人后溺亡 多方发声两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#青海通报栏杆断裂小学生跌落住进ICU代拍被何赛飞拿着魔杖追着打315晚会后胖东来又人满为患了当地回应沈阳致3死车祸车主疑毒驾武汉大学樱花即将进入盛花期张立群任西安交通大学校长为江西彩礼“减负”的“试婚人”网友洛杉矶偶遇贾玲倪萍分享减重40斤方法男孩8年未见母亲被告知被遗忘小米汽车超级工厂正式揭幕周杰伦一审败诉网易特朗普谈“凯特王妃P图照”考生莫言也上北大硕士复试名单了妈妈回应孩子在校撞护栏坠楼恒大被罚41.75亿到底怎么缴男子持台球杆殴打2名女店员被抓校方回应护栏损坏小学生课间坠楼外国人感慨凌晨的中国很安全火箭最近9战8胜1负王树国3次鞠躬告别西交大师生房客欠租失踪 房东直发愁萧美琴窜访捷克 外交部回应山西省委原副书记商黎光被逮捕阿根廷将发行1万与2万面值的纸币英国王室又一合照被质疑P图男子被猫抓伤后确诊“猫抓病”

哆哆女性网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化