精华内容
下载资源
问答
  • 接口对接

    千次阅读 2019-06-25 20:44:38
    接口对接 1. 中间库 优点: 简单,数据查询、处理起来都比较的简单 通过对表的权限控制,可以明确与用户交互了哪些内容,便于问题定位。如控制用户只能对表执行insert或select操作,写入到数据表中的数据都是该用户...

    接口对接

    1. 中间库

    优点:

    1. 简单,数据查询、处理起来都比较的简单
    2. 通过对表的权限控制,可以明确与用户交互了哪些内容,便于问题定位。如控制用户只能对表执行insert或select操作,写入到数据表中的数据都是该用户执行的。

    缺点:

    1. 并发大时,对数据库会造成较大的压力
    2. 接口变动时,影响较大
    3. 不太适合多用户的并发。如同一套结构的数据表支持多个不同的用户

    2.URL方式

    简单描述:

    1. 基于HTTP或者HTTPS的模式对数据进行传输
    2. 服务端通过暴露地址,参数名称,编码
    3. 客户端按照指定的参数名称进行调用,调用的过程中对数据进行编码和封装

    优点:

    1. 并发易控制,请求简单,解析简单
    2. 在B/S应用的系统中支持较好,可以方便的进行通讯,如支付宝就在使用这种方式

    缺点:

    1. 传输的内容长度受限制

    3. webService方式

    简单描述:

    1. WebService的主要目标是跨平台的可互操作性。为了达到这一目标,WebService完全基于XML(可扩展标记语言),XSD(XMLSchema)等独立于平台、独立于软件供应商的标准,是创建可互操作的、分布式应用程序的新平台。
    2. 目前主流的对接方式,是行业内认可的标准
    3. 开源的框架较多,如AXIS2、XFIRE等

    WebService方式----WSDL

    1. Web Service Description Language的缩写,是一个用来描述Web服务和说明如何与Web服务通信的XML语言。为用户提供详细的接口说明书
    2. WebService描述语言(WSDL)就是这样一个基于XML的语言,用于描述WebService及其函数、参数和返回值
    • Type(消息类型):数据类型定义的容器,它使用某种类型系统(如XSD);
    • Message(消息):通信数据的丑行类型化定义,它由一个或者多个part组成;
    • Part:消息参数
    • Opertion(操作):对服务所支持的操作进行抽象描述,WSDL定了了四种操作:
      1. 单向(one-way):端点接受消息;
      2. 请求-响应(request-response):端点接受消息,然后发送相关消息;
      3. 要求-响应(solicit-response):端点发送消息,然后接受相关消息;
      4. 通知(notification):端点发送消息
        1. Port Type(端口类型):特定端口类型的具体协议和数据格式规范
        2. Binding:特定端口类型的具体协议和数据格式规范
        3. Port:定义为绑定和网络地址组合的单个端点
        4. Service:相关端口的集合,包括其关联的接口、操作、消息等

    优点:

    1. 公认的通讯接口组件
    2. 标准化,易于理解
    3. 实时性

    缺点:

    1. 通讯的效率较低
    展开全文
  • newgistics接口对接文档说明
  • 支付宝接口对接流程

    2018-08-01 10:53:33
    此文档为一个餐饮系统与支付宝API接口对接说明,可做对接参考
  • C#接口对接示例

    2016-07-28 13:15:08
    C#接口对接简单示例
  • 基于java的接口对接解决方案,让开发人员从对接中解放出来
  • WebService接口对接

    千次阅读 2019-03-08 14:48:39
    与第三方系统对接中难免会遇到webservice接口对接,特别是一些老系统。 第一步根据wsdl文档生成客户端,楼主是用eclipse生成的。 项目结构如下图 选中项目new other->webservice->选中Web ...

    与第三方系统对接中难免会遇到WebService接口对接,特别是一些老系统。

    第一步根据WSDL文档生成客户端,楼主是用Eclipse生成的。

    项目结构如下图

    选中项目new other->webservice->选中Web Service Client->Next->Finish;步骤如下图

    finish之后将会生成像如下图的webservice客户端类 

     

     

     就可以通过客户端,调用本地类的方法即可调用远程WebService服务提供的方法。

     想要源码的请加QQ 1522182275

     

    展开全文
  • 接口对接类与相关xml

    2017-05-03 15:46:55
    接口对接类与相关xml
  • 接口对接类及相关xml

    2017-05-03 10:25:01
    接口对接类及相关xml
  • 设备对接是工程实际应用中经常遇到的一个比较棘手的问题。对接问题需要具有较高的技术水平,丰富...基于此分析研究了在对接问题中所遇到的PDH接口对接并找出影响设备对接的主要因素(如接地、时钟)及如何去解决和避免。
  • 中通快递C#技术开发接口对接,使用所有的。net技术开发,包含下单,查单,取消订单等强大功能,中通,接口,c#,开发
  • 再接上文,框架已经搭建好,本篇对接口对接进行详细说明,直进主题。 gitee代码地址 https://gitee.com/zhaifengxi/zhai-docking-alipay-open 案例:支付宝图片上传 目前对接支付宝接口,问题比较多的就是支付宝...

    导航

    导读

    • 再接上文,框架已经搭建好,本篇对接口对接进行详细说明,直进主题。

    gitee代码地址

    • https://gitee.com/zhaifengxi/zhai-docking-alipay-open

    案例:支付宝图片上传

    • 目前对接支付宝接口,问题比较多的就是支付宝图片上传接口,针对这个接口进行具体详细说明,如果这个接口搞定了,其他的都不是问题。
    支付宝开放接口文档解读
    一、图片上传文档地址
    • https://opendocs.alipay.com/apis/01ea4t
    二、公共请求参数
    • 作为支付宝的公共参数,里面的参数基本都是固定的,把因为环境不同的参数提取到配置文件中,剩余可以定义为常量。

    提炼字段关键信息:图片二进制字节流,最小50K,最大为5M,支持png/bmp/gif/jpg/jpeg格式

    三、请求参数
    • 具体业务请求,根据业务传参。
    四、公共响应参数
    • 作为支付宝的公共响应参数,被区分为网关和业务两种返回码,作为对接方不区分网关还是业务可以通过封装进行合并。
    五、响应参数
    • 具体业务响应结果,根据业务处理。
    六、请求示例
    • 非常好的示例,直接粘贴下来按要求传好参数即可调用,支付宝的SDK封装的非常奶思,很值得其他开放平台借鉴学习。
    七、响应示例
    • 接口调用之后的成功情况下的返回结果。
    八、异常示例
    • 接口调用之后的失败情况下的返回结果。这里需要特别注意是支付宝网关失败还是业务失败,如果是网关失败,业务失败没有值。
    九、业务错误码
    • 统一的业务错误码,不能完全描述清楚具体场景的问题,仅供参考,具体问题还得去找支付宝的技术支持沟通确认。
    十、SDK对接文档
    • 地址:https://opendocs.alipay.com/open/54/cyz7do
    • 服务端对接两种方式:1.服务端 SDK(新版) 2.服务端 SDK(老版)
    • 服务端 SDK(新版):1.链式编程 2.代码简洁 3.参考资料少 4.部分接口找不到
    • 服务端 SDK(老版):1.相对新版代码臃肿 2.接口都可以找到,故选用此方式进行对接。
    核心代码
    一、支付宝基础服务层
    @Slf4j
    @Service
    public class BaseAlipayApiImageSerImpl implements BaseAlipayApiImageSer {
        @Autowired
        AlipayApiProperties alipayApiProp;
        @Autowired
        BizLogSer bizLogSer;
    
        @SneakyThrows
        @Override
        public BaseAlipayImageUploadOut upload(BaseAlipayImageUploadIn in) {
            /** 操作:调用支付宝接口 */
            AlipayClient alipayClient = new DefaultAlipayClient(AlipayConstant.COMMON_SERVER_URL, alipayApiProp.getAppid(), alipayApiProp.getPrivateKey(), AlipayConstant.COMMON_FORMAT, AlipayConstant.COMMON_CHARSET, alipayApiProp.getPublicKey(), AlipayConstant.COMMON_SIGN_TYPE);
            AlipayOpenSpImageUploadRequest request = new AlipayOpenSpImageUploadRequest();
            request.setImageContent(new FileItem(in.getImageFile()));
            AlipayOpenSpImageUploadResponse response = alipayClient.execute(request);
            /** 操作:记录业务日志 */
            bizLogSer.save(new BizLogSave(new BizLogDataTemp(in, response), AlipayConstant.IMAGE_UPLOAD_LOG));
            /** 操作:结果转换 */
            BaseAlipayImageUploadOut result = ObjectUtil.copy(response, BaseAlipayImageUploadOut.class);
            BaseAlipayCommonOut commonOut = result.commonOut(response);
            ObjectUtil.copy(commonOut, result);
            return result;
        }
    
    1. 通过Base接口层进行和具体业务的解耦。
    2. 通过封装,简化代码。
    3. 通过灵活配置,方便不同环境的切换。
    4. 配合Slf4j + mongodb关键日志存储,方便快速捕获定位线上问题。

    BaseAlipayApiImageSerImpl.java 详情:https://gitee.com/zhaifengxi/zhai-docking-alipay-open/blob/master/src/main/java/zhai/docking/alipay/service/base/alipay/api/BaseAlipayApiImageSerImpl.java

    二、业务层处理
    • api层(controller层),也就是restful接口,对系统提供后端接口支持。api层对入参做基本校验,校验根据支付宝接口文档要求编写。
    @RestController
    @RequestMapping("/api/alipay/img")
    public class AlipayImgCtr {
        @Autowired
        AlipayImgSer alipayImgSer;
    
        @RequestMapping(path = "/upload", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
        public ResponseEntity upload(@RequestParam(name = "file") MultipartFile file) {
            /** 校验:是否为空 */
            if (file.isEmpty()) {
                return ResponseEntity.ok(Result.failure(ResultConstant.FAIL_SYS_NO_IN_ERROR_CODE, ResultConstant.FAIL_SYS_NO_IN_ERROR_MSG));
            }
            /** 校验:文件类型 */
            String fileType = FileUtil.getFileType(FileUtil.getFileName(file));
            if (StringUtil.isBlank(fileType)) {
                return ResponseEntity.ok(Result.failure(ResultConstant.FAIL_SYS_DEF_CODE, "该文件没有文件类型"));
            }
            if (!FileUtil.isFileType(fileType, FileUtil.FILE_TYPE_JPG, FileUtil.FILE_TYPE_JPEG)) {
                return ResponseEntity.ok(Result.failure(ResultConstant.FAIL_BIZ_DEF_CODE, StringUtil.join("不支持上传该文件格式:", fileType)));
            }
            /** 校验:文件大小 */
            boolean minSize = FileUtil.checkMinSize(file.getSize(), 50, FileUtil.UNIT_KB);
            if (!minSize) {
                return ResponseEntity.ok(Result.failure(ResultConstant.FAIL_BIZ_DEF_CODE, "文件大小不能小于50KB"));
            }
            boolean maxSize = FileUtil.checkMaxSize(file.getSize(), 5, FileUtil.UNIT_MB);
            if (!maxSize) {
                return ResponseEntity.ok(Result.failure(ResultConstant.FAIL_BIZ_DEF_CODE, "文件大小不能大于5MB"));
            }
            Result result = alipayImgSer.upload(file);
            return ResponseEntity.ok().body(result);
        }
    }
    

    AlipayImgCtr.java 详情:https://gitee.com/zhaifengxi/zhai-docking-alipay-open/blob/master/src/main/java/zhai/docking/alipay/api/AlipayImgCtr.java

    • service层提供业务服务支持。
    @Service
    public class AlipayImgSerImpl implements AlipayImgSer {
        @Autowired
        BaseAlipayApiImageSer baseAlipayApiImageSer;
        @Autowired
        SnowflakeUtil snowflakeUtil;
    
        @SneakyThrows
        @Override
        public Result upload(MultipartFile in) {
            /** 操作:重命名文件名 */
            String imageName = StringUtil.join(snowflakeUtil.nextId(), StringConstant.POINT, FileUtil.getFileType(FileUtil.getFileName(in)));
            File file = new File(imageName);
            FileUtil.copyInputStreamToFile(in.getInputStream(), file);
            BaseAlipayImageUploadOut upload = null;
            try {
                /** 操作:上送-支付宝图片接口 */
                BaseAlipayImageUploadIn uploadIn = new BaseAlipayImageUploadIn();
                uploadIn.setImageFile(file);
                upload = baseAlipayApiImageSer.upload(uploadIn);
            } finally {
                if (file.exists()) {
                    file.delete(); // 删除临时文件
                }
            }
            /** 结果:转换 */
            if (!upload.isSuccess()) {
                log.info(StringUtil.join(BUSINESS_NAME, LogConstant.SERVICE, METHOD_UPLOAD, LogConstant.RESULT, LogConstant.FAIL, upload.getCode(), upload.getMsg()));
                return Result.failure(upload.getCode(), upload.getMsg());
            }
            AlipayImageUploadOut result = new AlipayImageUploadOut();
            result.setImgCode(upload.getImageId());
            return Result.success(result);
        }
    }
    

    AlipayImgSerImpl.java 详情:https://gitee.com/zhaifengxi/zhai-docking-alipay-open/blob/master/src/main/java/zhai/docking/alipay/service/biz/AlipayImgSerImpl.java

    • 以上核心代码就是完整的一套从后端接口到调用具体支付宝接口的核心代码。

    避坑指南

    • 上面的一整套代码已经躲避了支付宝开放接口的坑,下面讲解下这些坑。
    一、未知的错误码:FILE_SIZE_MIN_LIMIT (文件大小低于范围,请检查文件类型的参数大小)
    • 首先支付宝接口文档要求:图片二进制字节流,最小50K,最大为5M,支持png/bmp/gif/jpg/jpeg格式,代码也是完全按照要求编写的。
    • 我们测试了1M的图片依然不行,然后联系了技术支持,问题依然没解决,最后上升的支付宝研发,期间花费了非常多的时间。
    • 支付宝研发回复:50K-5M,JPEG格式,不会报错。
    • 原来是接口文档给的格式除了jpg和jpeg两个格式以外,其他格式容易报该错误。所以做了用户图片上传类型的限制为 jpg和jpeg。关键代码如下:
    if (!FileUtil.isFileType(fileType, FileUtil.FILE_TYPE_JPG, FileUtil.FILE_TYPE_JPEG)) {
                return ResponseEntity.ok(Result.failure(ResultConstant.FAIL_BIZ_DEF_CODE, StringUtil.join("不支持上传该文件格式:", fileType)));
    }
    
    二、一大长串html报错
    • 截选报错日志:
    ERROR sdk.biz.err - 2021-01-19 14:34:04^_^<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>支付宝 - 网上支付 安全快速!</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <meta http-equiv="x-ua-compatible" content="ie=7" />
    <meta name="description" content="中国最大的第三方电子支付服务提供商" />
    ...
    <li>支付宝版权所有 2004-2021 ALIPAY.COM</li>
      </ul>
      <div id="ServerNum">openapi-49-14424</div>
    </div>
    <!--footer ending-->
    
    • 支付宝研发回复:大概率就是网络问题。
    • 最后发现原因是调用支付宝图片上传入参:“imageFile”:“210119143401000217bmp”
    • 原因:例如图片名 2020.01.01.bmp,但是重命名文件名的时候变成210119143401000217bmp,少了个点,推送给支付宝就报一长串html。关键代码如下
     		/** 操作:重命名文件名 */
            String imageName = StringUtil.join(snowflakeUtil.nextId(), StringConstant.POINT, FileUtil.getFileType(FileUtil.getFileName(in)));
    

    支付宝报错特点:ERROR sdk.biz.err

    三、文件名,目录名或卷标语法不正确
    • 现象:上传文件名包含中文的图片就会报错
    • 原因:MultipartFile 转 File 时文件名???,所以报如上错误。
     /** MultipartFile 转 File */
    File file = new File(imageName);
    图片文件名:你好_12313.jpg
    后端接收:???_12313.jpg
    
    • 解决办法:重命名文件名,利用雪花算法生成不重复的随机ID。
     		/** 操作:重命名文件名 */
            String imageName = StringUtil.join(snowflakeUtil.nextId(), StringConstant.POINT, FileUtil.getFileType(FileUtil.getFileName(in)));
    
    四、The field file exceeds its maximum permitted size of 1048576 bytes.
    • 具体报错
    org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.impl.FileSizeLimitExceededException: The field file exceeds its maximum permitted size of 1048576 bytes. 
    	at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.parseRequest(StandardMultipartHttpServletRequest.java:111) 
    	at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.<init>(StandardMultipartHttpServletRequest.java:85) 
    	at org.springframework.web.multipart.support.StandardServletMultipartResolver.resolveMultipart(StandardServletMultipartResolver.java:79) 
    
    • 原因:上传的图片超过默认文件大小了。
    • 解决办法:修改配置图片大小。
      servlet: # 文件上传配置
        multipart:
          max-file-size: 10MB
          max-request-size: 10MB
    

    最后

    • 本篇主要通过 “案例:支付宝图片上传”,来完整串联如何开发对接支付宝开放接口,通过对具体文档、核心代码、避坑指南来进行详细分析,希望能给你一些参考。下篇文章针对支付宝开放接口回调通知展开细致详细的描述。原创不易,希望大家多多支持。
    展开全文
  • 网站支付宝接口对接原理

    网站支付宝接口对接原理


    在这里插入图片描述

    展开全文
  • 该文档是后台服务器服务于客户端的接口对接说明文档,内容洁净、详细、言简意赅,可自定义或丰富其内容。是后台服务器开发人员不可缺少的好文档。
  • 前后端接口对接工具

    2021-01-29 10:41:59
    一、接口对接 在前后端分离开发时,后端工作人员完成系统接口开发后,需要与前端人员对接,测试调试接口,验证接口的正确性可用性。而这要求前端开发进度和后端进度保持基本一致,任何一方的进度跟不上,都无法及时...
  • 支付接口对接技术做多了以后你会发现,基本上所有的第三方第四方支付接口的基本方法流程就是这样,至于有些签名方式不一样,配制参数不一样等等按照其提供的技术文档要求修改一下即可,有不懂的可以联系。...
  • Swagger作API接口对接

    2020-09-10 10:22:55
     在前后端分离的项目中,如手机端与接口端对接、WEB项目调用API,进行接口对接的方式一般是先创建WORD文档,然后把各个接口的链接、参数、访问方式、说明等信息粘贴进去。在制作文档的过程中,如果稍有不注意就容易...
  • 微信现金红包接口对接

    千次阅读 2018-03-09 17:16:25
    微信现金红包接口对接前言 接到公司业务提出的需求,说公司的积分商城需要可以兑换现金,就是公众号给微信用户发送红包。对接的是发放普通红包接口。开发前置了解 接口文档地址:...
  • 调用快递鸟接口单个查询和批量查询快递单号物流信息,可以查询最新的物流轨迹跟踪记录,及时准确稳定免费的接口对接
  • 有哪位大牛,做个京东到家的订单通知接口,京东到家订单通知接口对接事例,发一个出来呗
  • 阿里云短信接口对接

    2019-05-27 14:02:53
    查阅了资料,找到一个阿里云接口对接工具类,以为省事,没想打掉坑里去了不适用。 自己看着官方提供的文档实现了接口对接。短信登录已正常使用。 现在pom.xml文件增加一个依赖jar包 <dependency> <...
  • CXF接口对接相关

    2015-02-15 02:09:56
    CXF接口对接 本文只是接口对接的一种cxf。 1.做一个接口,一个方法 2.做一个存数据的Dto 3.配置cxf Servlet 到此你就可以启动tomcat测试了
  • 微信 -- 微信接口对接

    2019-07-05 09:09:46
    微信接口对接的各种功能实现
  • 天津市政府政采中心电子卖场API接口对接流程: 1、商城ICP备案办理 域名注册、服务器提供、域名认证、解析绑定; 2、入围资料递交 入围资料整理、资料初审、营业执照、财务证明、社保证明、纳税证明、企业信用证明...
  • 使用Swagger作API接口对接

    千次阅读 2019-10-14 16:34:42
     在前后端分离的项目中,如手机端与接口端对接、WEB项目调用API,进行接口对接的方式一般是先创建WORD文档,然后把各个接口的链接、参数、访问方式、说明等信息粘贴进去。在制作文档的过程中,如果稍有不注意就容易...
  • 快递100接口对接

    千次阅读 2017-03-17 09:29:42
    快递100接口对接第一步、在快递100网站申请一个key 第二步、看一下具体的接口类型和接口名称,以便自己选择(其中有个接口是个坑,主流的物流都不支持查询) 第三步、编写自己的代码块//获得快递100的查询地址 ...
  • Java-RestTemplate做接口对接 地址: https://blog.csdn.net/nienianzhi1744/article/details/99961350
  • java接口对接多种情形

    2020-08-12 17:44:09
    java接口对接一级目录发送POST请求,包含文件MultipartFile参数,普通字符串参数,请求头参数 一级目录发送POST请求,包含文件MultipartFile参数,普通字符串参数,请求头参数 请求入下图 /** * **/ public ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,695
精华内容 4,278
关键字:

接口对接