文章目录
前言
由于业务需求需要对接顺丰快递的API,踩了一天的坑,所以记录一下。
PS:以下Demo代码可直接运行。
一、注册顺丰开发平台账号
1.注册环节
1.首先需要在顺丰开发平台注册账号
注册地址:https://buac.sf-express.com/register
PS:注册过程略…
2.注册成功之后,登录顺丰开发平台控制台,登录成功如下图:
3.点击开发者对接,进入开发者对接页面,点击右侧新增应用,如下图:
名称自己填写,点击下一步提交即创建成功:
PS:请妥善保存 顾客编码、沙箱校验码、生产校验码
4.点击关联API,在弹窗窗口中勾选下单接口,并点击关联
成功后,就进入到我们的代码环节:
二、代码环节
1.配置web.config
代码如下(PS:这里是沙箱测试接口及配置,正式环境请变更):
<!--沙箱接口地址-->
<add key="SF_API_URL" value="https://sfapi-sbox.sf-express.com/std/service"/>
<!--沙箱获取token接口地址-->
<add key="SF_API_TOKEN_URL" value="https://sfapi-sbox.sf-express.com/oauth2/accessToken"/>
<!--顾客编码-->
<add key="SF_API_PARTNERID" value=""/>
<!--沙箱接口校验码-->
<add key="SF_API_CHECKWORD" value=""/>
2.创建传参实体类(PS:如需其他参数,请自行补齐):
代码如下:
#region 传参
/// <summary>
/// 下单接口固定参数
/// </summary>
public class SFCreateOrder
{
/// <summary>
/// *合作伙伴编码(即顾客编码)
/// </summary>
public string partnerID {
get; set; }
/// <summary>
/// *请求唯一号UUID
/// </summary>
public string requestID {
get; set; }
/// <summary>
/// *接口服务代码
/// </summary>
public string serviceCode {
get; set; }
/// <summary>
/// *调用接口时间戳
/// </summary>
public long timestamp {
get; set; }
/// <summary>
/// *数字签名 不可与accessToken字段同时传参
/// </summary>
// public string msgDigest { get; set; }
public string accessToken {
get; set; }
/// <summary>
/// *业务数据报文
/// </summary>
//public msgData msgData { get; set; }
public string msgData {
get; set; }
}
public class msgData
{
/// <summary>
/// *响应报文的语言, 缺省值为zh-CN,目前支持以下值zh-CN 表示中文简体, zh-TW或zh-HK或 zh-MO表示中文繁体, en表示英文
/// </summary>
public string language {
get {
return "zh-CN"; } }
/// <summary>
/// *客户订单号,重复使用订单号时返回第一次下单成功时的运单信息
/// </summary>
public string orderId {
get; set; }
/// <summary>
/// *托寄物信息
/// </summary>
public List<cargoDetail> cargoDetails {
get; set; }
/// <summary>
/// 拖寄物类型描述,如: 文件,电子产品,衣服等
/// </summary>
public string cargoDesc {
get {
return "文件"; } }
/// <summary>
/// *收寄双方信息
/// </summary>
public List<contactInfo> contactInfoList {
get; set; }
/// <summary>
/// 顺丰月结卡号 月结支付时传值,现结不需传值;
/// </summary>
public string monthlyCard {
get; set; }
/// <summary>
/// 付款方式,支持以下值: 1:寄方付 2:收方付 3:第三方付
/// </summary>
public int payMethod {
get {
return 1; } }
/// <summary>
/// *快件产品类别
/// </summary>
public int expressTypeId {
get {
return 1; } }
/// <summary>
/// 包裹数
/// </summary>
public int parcelQty {
get {
return 1; } }
public int isDocall {
get {
return 1; } }
public int isSignBack {
get {