顺丰bsp物流下单php接口测试,golang 调用顺丰API接口测试-Go语言中文社区
之后就可以按照文档生成xml请求信息
为了方便快速搭建 golang 的结构粘贴如下
type Rquest struct {
XMLName xml.Name `xml:"Request"`
Service string `xml:"service,attr"`
Lang string `xml:"lang,attr"`
Head string `xml:"Head"`
Error string `xml:"ERROR"`
Body Body `xml:"Body"`
}
type Body struct {
SFOrder SFOrder `xml:"Order"`
}
type SFOrder struct {
XMLName xml.Name `xml:"Order"`
OrderId string `xml:"orderid,attr"`
ExpressType string `xml:"express_type,attr"`
JProvince string `xml:"j_province,attr"`
JCity string `xml:"j_city,attr"`
JCounty string `xml:"j_county,attr"`
JCompany string `xml:"j_company,attr"`
JContact string `xml:"j_contact,attr"`
JTel string `xml:"j_tel,attr"`
JAddress string `xml:"j_address,attr"`
DProvince string `xml:"d_province,attr"`
DCity string `xml:"d_city,attr"`
DCounty string `xml:"d_county,attr"`
DCompany string `xml:"d_company,attr"`
DContact string `xml:"d_contact,attr"`
DTel string `xml:"d_tel,attr"`
DAddress string `xml:"d_address,attr"`
ParcelQuantity string `xml:"parcel_quantity,attr"`
CargoTotalWeight string `xml:"cargo_total_weight,attr"`
Custid string `xml:"custid,attr"`
PayMethod string `xml:"pay_method,attr"`
RoutelabelService string `xml:"routelabelService,attr"`
Cargo Cargo
}
type Cargo struct {
XMLName xml.Name `xml:"Cargo"`
Name string `xml:"name,attr"`
}
type Response struct {
XMLName xml.Name `xml:"Response"`
Service string `xml:"service,attr"`
Lang string `xml:"lang,attr"`
Head string `xml:"Head"`
Error string `xml:"ERROR"`
Body RBody `xml:"Body"`
}
type RBody struct {
ResponseBody ResponseBody `xml:"OrderResponse"`
}
type ResponseBody struct {
XMLName xml.Name `xml:"OrderResponse"`
FilterResult string `xml:"filter_result,attr"`
DestCode string `xml:"destcode,attr"`
Mailno string `xml:"mailno,attr"`
Origincode string `xml:"origincode,attr"`
OrderId string `xml:"orderid,attr"`
RlsInfo RlsInfo `xml:"rls_info"`
}
type RlsInfo struct {
RlsErrormsg string `xml:"rls_errormsg,attr"`
InvokeResult string `xml:"invoke_result,attr"`
RlsCode string `xml:"rls_code,attr"`
RlsDetail RlsDetail `xml:"rls_detail"`
}
type RlsDetail struct {
WaybillNo string `xml:"waybillNo,attr"`
SourceTransferCode string `xml:"sourceTransferCode,attr"`
SourceCityCode string `xml:"sourceCityCode,attr"`
SourceDeptCode string `xml:"sourceDeptCode,attr"`
SourceTeamCode string `xml:"sourceTeamCode,attr"`
DestCityCode string `xml:"destCityCode,attr"`
DestDeptCode string `xml:"destDeptCode,attr"`
DestDeptCodeMapping string `xml:"destDeptCodeMapping,attr"`
DestTeamCode string `xml:"destTeamCode,attr"`
DestTransferCode string `xml:"destTransferCode,attr"`
DestRouteLabel string `xml:"destRouteLabel,attr"`
ProName string `xml:"proName,attr"`
CargoTypeCode string `xml:"cargoTypeCode,attr"`
LimitTypeCode string `xml:"limitTypeCode,attr"`
ExpressTypeCode string `xml:"expressTypeCode,attr"`
CodingMapping string `xml:"codingMapping,attr"`
XbFlag string `xml:"xbFlag,attr"`
PrintFlag string `xml:"printFlag,attr"`
TwoDimensionCode string `xml:"twoDimensionCode,attr"`
ProCode string `xml:"proCode,attr"`
PrintIcon string `xml:"printIcon,attr"`
}
将数据结构转换为xml格式化字符串代码如下
xmlorder, _ := xml.Marshal(sfOrder)
str2 := string(xmlorder[:])
根据文档提示将信息加密,注意这边是两层加密方式
// str为xml code 为效验码
func md5V(str string, code string) string {
md5Key := md5.New()
md5Key.Write([]byte(fmt.Sprintf("%s%s", str, code)))
xmlKey := base64.StdEncoding.EncodeToString(md5Key.Sum(nil))
return xmlKey
}
之后调用http post请求传入两个参数分别为 xml 和 verifyCode
代码如下
func HttpPost(xmls string) (err error, res model.Response) {
checkwork := "rIGDqQhU5JbIVQ*******vjcivbg"
urls := "http://bsp-oisp.sf-express.com/bsp-oisp/sfexpressService"
stringMd5 := md5V(xmls, checkwork)
responseData := model.Response{}
resp, err := http.PostForm(urls, url.Values{"xml": {xmls}, "verifyCode": {stringMd5}})
if err != nil {
return err, responseData
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
err = xml.Unmarshal(body, &responseData)
if err != nil {
return err, responseData
}
return err, responseData
}
主要的突出问题是:xml的转化,xml与chekwork的加密方式
顺丰bsp物流下单php接口测试,golang 调用顺丰API接口测试-Go语言中文社区相关推荐
- golang oracle配置文件,Golang读取并修改非主流配置文件-Go语言中文社区
今天工作中碰到的问题,要求修改此配置文件,没看出来是什么格式,用了下面的思路: mysql { # If any of the files below are set, TLS encryption ...
- golang mysql 事务_golang的嵌套事务管理-Go语言中文社区
golang的事务管理是一件很麻烦的事,,能不能像Java那样,通过Spring管理事务,最近琢磨了一下,写了一个demo,用来管理golang的事务,使其支持golang事务的嵌套调用. 其思想很简 ...
- go语言能编android程序吗,用 Golang 开发 Android 应用(二)—— 简单 UI-Go语言中文社区...
计划按以下的内容更新 简单 UI 关于开发一个应用,要有自己的应用名(显示用),和包名(真正唯一的应用名),简单说一台 Android 手机中所有应用的包名是唯一的,如果新安装的应用包名和已安装的应用 ...
- linux环境搭建golang服务器,Linux下golang环境搭建-Go语言中文社区
1.首先从使用wget https://storage.googleapis.com/golang/go1.12.linux-amd64.tar.gz命令下载安装包,可以根据自己的需要选择版本. 2. ...
- golang杀死java_用Golang来保护Java程序-Go语言中文社区
#反编译带来的困扰 对于一个开发给自己组织内部用的程序,我们是不怎么需要考虑程序被反编译的事情的,但是对于商业软件来说,这又显得有必要,毕竟国内软件行业的竞争还是非常的激烈,大家可以把竞争对手的程序搞 ...
- 服务器系统goha,推荐一个轻量级且高性能的 Golang 网络库:gnet-Go语言中文社区...
image Github 主页 博客原文 欢迎大家围观~~,目前还在持续更新,感兴趣的话可以 star 一下暗中观察哦. 简介 gnet 是一个基于 Event-Loop 事件驱动的高性能和轻量级网络 ...
- oracle 脚本go,Golang连接Oracle-Go语言中文社区
Golang连接Oracle windows 一.安装MinGW 二.安装OCI 三.配置go-oci8 直接go get github.com/wendal/go-oci8(报错不用管),然后到go ...
- mac go linux 目标,Mac下Golang安装以及目录结构-Go语言中文社区
1.安装步骤 a.下载地址 下载SDK后,解压到自己喜欢的目录(后面配置PATH需要用到) b.配置PATH,有很多个地方可以配置具体可参考此链(PATH配置详解),我是直接修改的~/.bash_p ...
- golang优秀的第三方库mysql_golang比较优秀的第三方库收集-Go语言中文社区
golang有许多优秀的第三方库,有时要使用时忘记库名又要去github找半天,还是写下来做个笔记并且逐步添加.以下的库基本都实际使用过. log star最多的log项目,我现在基本都使用这个项目, ...
最新文章
- 驰骋工作流引擎设计系列04 流程引擎表结构的设计
- 教师资格证考试计算机知识题库,教师资格证考试题库
- 大咖聊数据,视频抢先看
- Java TCP/IP Socket 编程 笔记
- 『飞鸽』彻底学通string.Format以及IFormattable,IFormatProvider,ICustomFormatter
- python双_集成python双版本详解
- VBS 打开图片-幻灯片形式
- 同花顺股票交易接口怎样执行量化挂单策略?
- 数据分析——数据指标
- openwrt mt7620a使能uartf
- WNcry@2o17
- jquery delay_jQuery delay()函数
- Oracle查看ogg延时,OGG复制进程延迟不断增长
- Qt5 WindonwsTTS语音朗读 文字 朗读
- [嵌入式框架][nrf51822][SDK12.3] BLE分层设计 NUS 透传数据队列发送,提升带宽利用率
- Tuscany SCA软件架构设计理念分析(二)
- DHCP服务器是什么?
- Apollo 3.5硬件和系统安装指南
- 用于胶带输送机的传动装置的一级蜗杆减速器传动装置课程设计
- 泡妞与23种设计模式(转)
热门文章
- luogu3933 Chtholly Nota Seniorious
- win10无线网卡无法连接网络
- 壹度DIY_微信小程序组件_小程序插件开发
- Ardupilot代码学习笔记
- signature=5a537e48de3abe15561f136edabc54dc,Visual Signatures in Video Visualization
- 北京大学计算机考研资料汇总
- showToast的使用
- as3 俄罗斯方块 优化 美化版
- Java电商订单_Java电商项目学习(十) 订单管理模块开发
- .NET 函数调用反转