接入丰桥,下单到打印面单到配送开发流程

news2025/6/16 21:09:45

顺丰开放平台地址:顺丰开放平台

一、了解官网 

        1.1、开发文档

开发接口之前可以先查看熟悉文档,尤其是API文档仔细阅读。进入之后是如下图,根据自己需要开发的接口,先查看文档,然后根据文档要求来请求并处理响应。

         1.2、服务接口

 点击开发者对接,进入之后,点击开发者对接,再点击新建应用,根据要求填写信息。

 创建成功之后,会在下面展示你创建的应用。

 关联API,创建的时候可以关联API,创建之后也可以在查看API里面进行关联。

点击查看API进入

 然后点击关联API

 关联你想要的API

关联之后才可以联调测试上线!

二、 SDK使用

2.1、查看官网SDK

点击控制台,找到开发规范点进去。

 找到 API-SDK使用说明

 官网的是拿java举例是哟SDK的,这里我们也是用跟java做集成的SDK

点击SDK工具,然后选择JAVA的 ,点击下载最新版就可以了(也可以查看版本下载其他的版本)

下载之后是一个zip压缩包,解压之后,我们需要下面标红的这三个部分。

code:是一些枚举类,可以不用,因为SF-CSIM-EXPRESS-SDK-V2.1.7.jar里面包含了。

java-demo:是测试类,这个我们需要将他拷贝到我们的项目里,然后封装成一个工具类。

json:这里面是请求API接口的一些请求参数示例,这个可要可不要。

lib:这个是需要的其他依赖包。

readme.txt:无关紧要的东西吧。

SF-CSIM-EXPRESS-SDK-V2.1.7.jar:这个是核心包,顺丰封装的jar包。

2.2、集成到项目

        2.2.1、添加依赖(这里我用的是maven管理依赖的方式)

<!--顺丰依赖-->
<dependency>
    <groupId>commons-codec</groupId>
    <artifactId>commons-codec</artifactId>
    <version>1.9</version>
</dependency>
<dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.2</version>
</dependency>
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.3.2</version>
</dependency>
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpcore</artifactId>
    <version>4.3.2</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.7</version>
</dependency>
<!--顺丰的核心包(本地打包)-->
<dependency>
    <groupId>com.sf.csim.express</groupId>
    <artifactId>SF-CSIM-EXPRESS-SDF</artifactId>
    <version>V2.1.7</version>
</dependency>

注意顺丰的核心包maven官网是不提供的,需要我们自己将下载的SF-CSIM-EXPRESS-SDK-V2.1.7.jar包打到我们maven的本地仓库(这里不过多解释,主要针对集成顺丰)。其他的依赖包maven远程仓库都是可以下砸的。

        2.2.2、配置应用信息

配置应用信息,下一步封装工具类需要。

        2.2.3、封装工具类

package com.casic.cloud.webtrans.utils;

import com.sf.csim.express.service.CallExpressServiceTools;
import com.sf.csim.express.service.HttpClientUtil;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

/**
 * 20 ^O^开心快乐!!!
 *
 * @Description: CallExpressNewAPIServiceUtil类...,调用顺丰API
 * @Author: Wuxinke
 * @Date: 2023/3/20
 **/
@Component
public class CallExpressNewAPIServiceUtil {

    //此处替换为您在丰桥平台获取的顾客编码
    @Value("${CLIENT_CODE}")
    private String CLIENT_CODE;
    //此处替换为您在丰桥平台获取的校验码
    @Value("${CHECK_WORD}")
    private String CHECK_WORD;
    //沙箱环境的地址 -PRO
    @Value("${CALL_URL_BOX}")
    private String CALL_URL_BOX;
    //生产环境的地址 -PRO
    @Value("${CALL_URL_PROD}")
    private String CALL_URL_PROD;

    /**
     *@Description: 调用顺丰API方法
     *              msgData:请求报文  serviceCode:接口服务码
     *@Date: 2023/3/20 17:25
     **/
    public String callSFApi(String serviceCode,String msgData) throws Exception {
        //验证请求参数
        if(StringUtils.isEmpty(serviceCode) || StringUtils.isEmpty(msgData)){
             throw new Exception("参数不能为空!");
        }

        CallExpressServiceTools tools=CallExpressServiceTools.getInstance();

        // set common header
        Map<String, String> params = new HashMap<String, String>();

        String timeStamp = String.valueOf(System.currentTimeMillis());

        params.put("partnerID", CLIENT_CODE);  // 顾客编码 ,对应丰桥上获取的clientCode
        params.put("requestID", UUID.randomUUID().toString().replace("-", ""));//请求唯一号UUID
        params.put("serviceCode",serviceCode);// 接口服务码
        params.put("timestamp", timeStamp);//调用接口时间戳
        params.put("msgData", msgData);//报文
        params.put("msgDigest", tools.getMsgDigest(msgData,timeStamp,CHECK_WORD));//数字签名

        long startTime = System.currentTimeMillis();

        System.out.println("====调用实际请求:" + params);
        String result = HttpClientUtil.post(CALL_URL_BOX, params);

        System.out.println("====调用丰桥的接口服务代码:" + String.valueOf(serviceCode) + " 接口耗时:"+ String.valueOf(System.currentTimeMillis()-startTime)+"====");
        System.out.println("===调用地址 ==="+CALL_URL_BOX);
        System.out.println("===顾客编码 ==="+CLIENT_CODE);
        System.out.println("===返回结果:" +result);

        return result;
    }

}

到这一步就算集成成功了,接下来就是去具体的操作某些接口。

三、集成顺丰的常用API

持续更新!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/412000.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在 Linux 上使用 Pigz 更快地压缩文件,真的快!

Pigz是一款快速压缩文件的工具&#xff0c;它能够使用多个CPU核心进行压缩&#xff0c;使得压缩速度得到了极大的提升。在本文中&#xff0c;我们将介绍如何在Linux上使用Pigz来更快地压缩文件。 安装Pigz 在开始使用Pigz之前&#xff0c;我们需要先安装它。在大多数Linux发行…

11. unity 物理系统和碰撞检测+射击游戏案例

1. 物理系统 也就是在游戏场景中添加日常的重力&#xff0c;碰撞等到物理属性 1.1 刚体组件&#xff08;Rigidbody&#xff09; 给模型添加刚体组件后&#xff0c;模型会具备一些物理属性&#xff0c;比如重力&#xff0c;速度&#xff0c;加速度等&#xff0c;在属性窗口中…

CSS基础知识点-01

【01】标准CSS盒模型和IE盒模型的区别 盒模型的区别在于设置width和height时&#xff0c;所对应的范围不同。标准盒模型宽高属性的范围只包含content&#xff0c;而IE盒模型的宽高属性范围包含了border、padding和content。 一般来说&#xff0c;我们可以通过修改元素的box-siz…

AcWing 245. 你能回答这些问题吗(线段树)

AcWing 245. 你能回答这些问题吗&#xff08;线段树&#xff09;一、题目二、分析1、节点定义2、函数分析&#xff08;1&#xff09;pushup函数&#xff08;2&#xff09;build函数&#xff08;3&#xff09;modify函数&#xff08;4&#xff09;query函数三、代码一、题目 Ac…

COM 对象析构函数是非常敏感的函数

如果你试图在 COM 对象的析构函数中做太多事情&#xff0c;你会发现自己有麻烦。 此话怎讲? 举个例子&#xff0c;如果析构函数将自身引用交给其他函数&#xff0c;则这些函数可能会决定调用 IUnknown::AddRef 和 IUnknown::Release 方法作为其内部操作的一部分。考察下面的…

解码行业新趋势:2023晶球益生菌与肠内营养健康高峰论坛圆满落幕

后疫情时代&#xff0c;国人自身健康管理意识日益提高&#xff0c;越来越多的人认识到到微生物组、营养吸收与免疫健康的密切联系&#xff0c;并逐渐认可微生态和肠内营养在临床应用过程中的积极作用&#xff0c;使得营养治疗研究成果进一步落地转化。消费升级新时代&#xff0…

项目6:实现数据字典的展示与缓存

项目6&#xff1a;实现数据字典的展示与缓存 1.数据字典如何展示&#xff1f; 2.前后端如何设计&#xff1f; 3.前端设计代码&#xff1f; 4.后端设计代码&#xff1f; 5.实现数据字典缓存到redis 项目6&#xff1a;实现数据字典的展示与缓存 1.数据字典如何展示&#xf…

WEB攻防-通用漏洞PHP反序列化POP链构造魔术方法原生类

目录 一、序列化和反序列化 二、为什么会出现反序列化漏洞 三、序列化和反序列化演示 <演示一> <演示二> <演示二> 四、漏洞出现演示 <演示一> <演示二> 四、ctfshow靶场真题实操 <真题一> <真题二> <真题三> &l…

C++入门到入土(一)

C语言中&#xff0c;我们这样定义&#xff0c;输出100。 因为局部作用域的访问权限大于全局作用域的。 当我们加入头文件#include <time.h>的时候&#xff0c;就会报错 看报错&#xff0c;我们也知道&#xff0c;time重定义&#xff0c;因为我们头文件time.h里面有time函…

验证码识别过程中切割图片的几种方案

目录 方案一&#xff1a;图片均分 方案二&#xff1a;寻找轮廓并截取 方案三&#xff1a;聚类算法 方案四&#xff1a;垂直投影法 源码下载 在用机器学习识别验证码的过程中&#xff0c;我们通常会选择把验证码中的各个字符切割出来然后单独识别&#xff0c;切割质量会直接…

JS Hook 基本使用

前言 Hook技术也叫钩子函数&#xff0c;功能是把网站的代码拉出来&#xff0c;改成我们自己想执行的代码片段&#xff0c;简单来说就是可以控制执行函数的入参和出参&#xff1b; 一、资源下载 编程猫插件&#xff1a;https://pan.baidu.com/s/1SP8xHoDpugssFRpu-nLxPw?pwdz…

ARM 编译器 Arm Compiler for Embedded 6 相关工具链简介

目录 1, Introduction to Arm Compiler 6 1.1 armclang 1.2 armasm 1.3 armlink 1.4 armar 1.5 fromelf 1.6 Arm C libraries 1.7 Arm C libraries 1,8 Application development &#xff0c;ARM程序开发流程 2&#xff0c;ARM 编译器 5和ARM 编译器 6的兼容性 3&…

Opencv项目实战:22 物体颜色识别并框选

目录 0、项目介绍 1、效果展示 2、项目搭建 3、项目代码展示与部分讲解 Color_trackbar.py bgr_detector.py test.py 4、项目资源 5、项目总结 0、项目介绍 本次项目要完成的是对物体颜色的识别并框选&#xff0c;有如下功能&#xff1a; &#xff08;1&#xff09;…

【权限提升】Linux Sudo权限提升漏洞(CVE-2023-22809)

文章目录前言一、Sudo介绍二、漏洞概述三、漏洞成因四、漏洞分析五、影响版本六、本地复现七、修复建议前言 Sudo存在权限提升漏洞,攻击者可过特定的payload获取服务器ROOT权限 一、Sudo介绍 sudo (su " do")允许系统管理员将权限委托给某些用户(或用户组),能够以…

网络安全与防御

1. 什么是IDS&#xff1f; IDS(入侵检测系统)&#xff1a;入侵检测是防火墙的合理补充&#xff0c;帮助系统对付网络攻击&#xff0c;扩展了系统管理员的安全管理能力&#xff0c;提高了信息安全基础结构的完整性。主要针对防火墙涉及不到的部分进行检测。 入侵检测主要面对的…

ChatGPT技术原理、研究框架,应用实践及发展趋势(附166份报告)

​ 一、AI框架重要性日益突显&#xff0c;框架技术发展进入繁荣期&#xff0c;国内AI框架技术加速发展&#xff1a; 1、AI框架作为衔接数据和模型的重要桥梁&#xff0c;发展进入繁荣期&#xff0c;国内外框架功能及性能加速迭代&#xff1b; 2、Pytorch、Tensorflow占据AI框…

5.2 中心极限定理

学习目标&#xff1a; 要学习中心极限定理&#xff0c;我会采取以下几个步骤&#xff1a; 学习基本概念&#xff1a;了解什么是随机变量、样本、总体、概率密度函数等基本概念&#xff0c;为学习中心极限定理打下基础&#xff1b;学习正态分布&#xff1a;中心极限定理的核心…

【JavaEE】计算机组成以及操作系统(进程)的基本知识

目录 前言 1、计算机基本组成 1.1、存储器 2、操作系统 2.1、 进程&#xff08;任务&#xff09;的概念 2.2、进程的管理 2.2.1、进程控制块PCB&#xff08;process control block&#xff09; 2.3、CPU分配&#xff08;进程调度&#xff09; 2.3.1、并发 2.3.2、并…

string容器

1、string的构造和赋值 #include #include using namespace std; void test01() { string str1(“hello world”); //使用字符串初始化 cout<<str1<<endl; string str2(5,‘A’); //使用 n 个字符串是初始化 cout<<str2<<endl; string str3 str2; …

深度学习数据集—水果数据集大合集

近期整理的各类水果&#xff08;包括干果&#xff09;数据集&#xff0c;分享给大家。 1、8类水果图片数据集&#xff08;每类100张图片左右&#xff09;[橘子&#xff0c;菠萝&#xff0c;苹果&#xff0c;木瓜&#xff0c;火龙果&#xff0c;香蕉&#xff0c;樱桃&#xff0…