售后退换货不一样的产品思路
**
围绕逆向物流退换货问题的解决方案
**
快递鸟集成了多家物流快递公司渠道,发货用户在线一键下单,快递小哥APP接单,并门到门取件的全流程在线服务,价格透明,服务有保障,过程可追踪。给电商平台提供完整的退货寄件物流解决方案,退货用户只需在电商平台一键退货呼叫快递员门到门取件即可,解决平台的逆向物流管理问题,比如退货后的退款核定监控等。为集团企业和直接发货用户解决集中的对账结算以及内部的快递集中管理问题。快递鸟门到门取件已覆盖全国300多个主要城市,38400多个区县,快递鸟多级地址库,精准的订单路由和分发能力,确保发件人和快递小哥的接单匹配,支持取件时间预约,2小时门到门取件让服务
快递鸟-物流数据领导品牌,专注于企业级物流API技术研发,旨在快速低成本帮助电商平台、零售商、金融机构、制造商、TMT等建设更安全、更智能的物流管理体系,定制化专业的物流解决方案。快递鸟具有强大的渠道服务能力,目前集合了全球600家物流公司系统,统一标准接口,涵盖快递、物流、快运、同城配等绝大部分国内快递,包括通达,顺丰,京东,邮政等主流快递物流公司,支持EMS、Fedex、TNT、UPS等国际快递,提供轨迹数据,电子面单,在线下单等服务,快递鸟接口的及时准确稳定性获得了用户的一致好评,腾讯、12306、跟谁学、建设银行、美团、唯品会、拼多多、贝店、云集、快手电商等知名企业都在使用快递鸟提供的数据服务,快递鸟每天上千万次的数据服务能力及上百万等订单服务支持能力,为企业提供运营监控管理系统,保障日常运营,帮助企业打通物流环节,提升物流服务能力。
“2小时门到门准时取”击中退换货痛点
电商技术解密之售后退换货流程设计
逆向物流退换货服务解决方案之技术对接API教程
为了照顾刚入门的技术人员,我会分享源代码,把源码复制到你的项目上,就能快速完成上门退货接口对接.更适合刚入门的菜鸟,这里我们以申通快递的上门退货服务为例来讲解,调用快递鸟提供的上门取件API标准接口,成功调用后,申通快递员会上门服务,同时支持申通快递单号的轨迹查询。快递鸟api接口不区分开发语言,支持Java,C#,PHP,Python,ObjectC等开发语言的程序调用。下面具体讲解实现过程.
3.1.完成前期准备工作
去快递鸟官网免费注册一个账号免费获得一个apiKey(接口权限验证需要),完成实名认证流程订购一个免费套餐
3.2.API接口
测试调用地址:http://sandboxapi.kdniao.com:8080/kdniaosandbox/gateway/exterfaceInvoke.json正式调用地址:https://api.kdniao.com/api/OOrderService请求方式:POST编码格式(utf-8):application/x-www-form-urlencoded;charset=utf-8返回类型:JSON 调试页面:http://kdniao.com/UserCenter/v2/SandBox/TrackQuery.aspx
3.3.系统请求参数(Headers)
参数名称 | 类型 | 说明 | 必须要求 |
---|---|---|---|
RequestData | String | 请求内容需进行URL(utf-8)编码。请求内容JSON格式,须和DataType一致。 | R |
EBusinessID | String | 商户ID,请在我的服务页面查看。 | R |
RequestType | String | 请求指令类型:1801(下单接口)1802(取消接口) | R |
DataSign | String | 数据内容签名:把(请求内容(未编码)+AppKey)进行MD5加密,然后Base64编码,最后 进行URL(utf-8)编码。详细过程请查看Demo。 | R |
DataType | String | 请求、返回数据类型:只支持JSON格式 | R |
备注:R-必填(Required),O-可选(Optional),C-报文中该参数在一定条件下可选
3.4.下单请求参数(Body)
参数名称 | 类型 | 说明 | 必须要求 |
---|---|---|---|
WarehouseID | String | 仓库标识 | O |
WarehouseAddress | String | 仓库地址 | O |
CallBack | String | 商户标识 | O |
MemberID | String | 会员标识 | O |
OrderCode | String | 订单编号 | R |
PayType | Int | 邮费支付方式:1-现付,2-到付,3-月结,4-第三方支付 | R |
MonthCode | String | 月结编码 | C |
ExpType | Int | 快递类型:1-标准快件 | R |
IsReturnSignBill | Int | 签收回单:1-需要,0-不需要,默认为0 | O |
Receiver | |||
Company | String | 收件人公司 | O |
Name | String | 收件人 | R |
Tel | String | 电话与手机,必填一个 | R |
Mobile | String | ||
PostCode | String | 收件人邮编 | O |
ProvinceName | String | 收件省(如广东省,不要缺少“省”) | R |
CityName | String | 收件市(如深圳市,不要缺少“市”) | R |
ExpAreaName | String | 收件区(如福田区,不要缺少“区”或“县”) | O |
Address | String | 收件人详细地址 | R |
Sender | |||
Company | String | 发件人公司 | O |
Name | String | 发件人 | R |
Tel | String | 电话与手机,必填一个 | R |
Mobile | String | ||
PostCode | String | 发件人邮编 | O |
ProvinceName | String | 发件省(如广东省,不要缺少“省”) | R |
CityName | String | 发件市(如深圳市,不要缺少“市”) | R |
ExpAreaName | String | 发件区(如福田区,不要缺少“区”或“县”) | O |
Address | String | 发件人详细地址(实际取件) | R |
SenderShowAddress | String | 发件人详细地址 | O |
StartDate | String | 上门取货时间段:"yyyy-MM-dd HH:mm:ss"格式化 | O |
EndDate | String | 上门取货时间段:"yyyy-MM-dd HH:mm:ss"格式化 | O |
Weight | Double | 物品总重量kg | O |
Quantity | Int | 件数/包裹数 | O |
Volume | Double | 物品总体积m3 | O |
Remark | String | 备注 | O |
AddService | |||
Name | String | 增值服务名称 | O |
Value | String | 增值服务值 | O |
CustomerID | String | 客户标识(选填) | O |
Commodity | |||
GoodsName | String | 商品名称 | R |
GoodsCode | String | 商品编码 | O |
Goodsquantity | Int | 商品数量 | O |
GoodsPrice | Decimal | 商品价格 | O |
GoodsWeight | Decimal | 商品重量 | O |
GoodsDesc | String | 商品描述 | O |
GoodsVol | Double | 商品体积m3 | O |
PackingType | Int | 包装类型:包装类型(快运字段)默认为 0; 0- 纸 1- 纤 2- 木 3- 托膜 4- 木托 99-其他 | O |
DeliveryMethod | Int | 送货方式:0-自提,1-送货上门(不含上楼)2-送货上楼。(适用于快运类型订单,物流公司可能会收取费用),默认为0 | O |
3.5.下单返回参数(Return)
参数名称 | 类型 | 说明 | 必须要求 |
---|---|---|---|
EBusinessID | String | 用户ID | R |
Order | |||
OrderCode | String | 订单编号 | R |
KDNOrderCode | String | 快递鸟订单编号 | R |
ShipperCode | String | 快递公司编码 | R |
LogisticCode | String | 快递单号 | O |
Success | Bool | 成功与否 | R |
ResultCode | String | 结果编码 | R |
Reason | String | 失败原因 | O |
UniquerRequestNumber | String | 唯一标识 | R |
3.6.下单请求参数(Json示例)
{"OrderCode":"012657018199","ShipperCode":"STO","PayType":1,"MonthCode":"1234567890","ExpType":1,"Sender":{"Company":"LV","Name":"Taylor","Mobile":"15018442396","ProvinceName":"上海","CityName":"上海市","ExpAreaName":"青浦区","Address":"明珠路"},"Receiver":{"Company":"GCCUI","Name":"Yann","Mobile":"15018442396","ProvinceName":"北京","CityName":"北京市","ExpAreaName":"朝阳区","Address":"三里屯街道"},"Commodity":[{"GoodsName":"鞋子","Goodsquantity":1,"GoodsWeight":1}],"Weight":1,"Quantity":1,"Volume":0,"Remark":"小心轻放"
}
3.7.下单请求完整报文(URL编码)
RequestData=%7b%0d%0a++++%22OrderCode%22%3a%22012657018199%22%2c%0d%0a++++%22ShipperCode%22%3a%22STO%22%2c%0d%0a++++%22PayType%22%3a1%2c%0d%0a++++%22MonthCode%22%3a%221234567890%22%2c%0d%0a++++%22ExpType%22%3a1%2c%0d%0a++++%22Sender%22%3a%7b%0d%0a++++++++%22Company%22%3a%22LV%22%2c%0d%0a++++++++%22Name%22%3a%22Taylor%22%2c%0d%0a++++++++%22Mobile%22%3a%2215018442396%22%2c%0d%0a++++++++%22ProvinceName%22%3a%22%e4%b8%8a%e6%b5%b7%22%2c%0d%0a++++++++%22CityName%22%3a%22%e4%b8%8a%e6%b5%b7%e5%b8%82%22%2c%0d%0a++++++++%22ExpAreaName%22%3a%22%e9%9d%92%e6%b5%a6%e5%8c%ba%22%2c%0d%0a++++++++%22Address%22%3a%22%e6%98%8e%e7%8f%a0%e8%b7%af%22%0d%0a++++%7d%2c%0d%0a++++%22Receiver%22%3a%7b%0d%0a++++++++%22Company%22%3a%22GCCUI%22%2c%0d%0a++++++++%22Name%22%3a%22Yann%22%2c%0d%0a++++++++%22Mobile%22%3a%2215018442396%22%2c%0d%0a++++++++%22ProvinceName%22%3a%22%e5%8c%97%e4%ba%ac%22%2c%0d%0a++++++++%22CityName%22%3a%22%e5%8c%97%e4%ba%ac%e5%b8%82%22%2c%0d%0a++++++++%22ExpAreaName%22%3a%22%e6%9c%9d%e9%98%b3%e5%8c%ba%22%2c%0d%0a++++++++%22Address%22%3a%22%e4%b8%89%e9%87%8c%e5%b1%af%e8%a1%97%e9%81%93%22%0d%0a++++%7d%2c%0d%0a++++%22Commodity%22%3a%5b%0d%0a++++++++%7b%0d%0a++++++++++++%22GoodsName%22%3a%22%e9%9e%8b%e5%ad%90%22%2c%0d%0a++++++++++++%22Goodsquantity%22%3a1%2c%0d%0a++++++++++++%22GoodsWeight%22%3a1%0d%0a++++++++%7d%0d%0a++++%5d%2c%0d%0a++++%22Weight%22%3a1%2c%0d%0a++++%22Quantity%22%3a1%2c%0d%0a++++%22Volume%22%3a0%2c%0d%0a++++%22Remark%22%3a%22%e5%b0%8f%e5%bf%83%e8%bd%bb%e6%94%be%22%0d%0a%7d%0d%0a&EBusinessID=1365742&RequestType=1801&DataSign=ZTcxNTBkNjNhNjkxYjkzMGViNDcxZTRjNzc3NzlkNjI%3d&DataType=2
3.8.下单成功返回报文(Json示例)
{"EBusinessID":"1237100","Success":true,"Order":{"OrderCode":"012657018199","KDNOrderCode":"KDN012657018199","ShipperCode":" STO","LogisticCode":"615123456789"},"ResultCode":"100","Reason":""
}
实际业务会存在,取消操作功能,客户下的订单,由于多方原因需要取消下单,为此快递鸟也提供了取消上门取件的接口,我们来讲解一下如何调用。
3.9.取消请求参数(Body)
参数名称 | 类型 | 说明 | 必须要求 |
---|---|---|---|
ShipperCode | String(20) | R | 快递鸟接口支持快递公司编码 |
OrderCode | String(30) | R | 订单编号(自定义,不可重复) |
LogisticCode | String(30) | O | 快递单号 |
Reason | String(100) | O | 取消原因 |
3.10.取消返回参数(Return)
参数名称 | 类型 | 说明 | 必须要求 |
---|---|---|---|
EBusinessID | String(10) | R | 用户ID |
Success | Bool(10) | R | 成功与否(true/false) |
ResultCode | String(5) | R | 返回编号 |
Reason | String(50) | O | 失败原因 |
3.11取消请求参数(Json示例)
{"OrderCode": "012657018199","ShipperCode": "SF",
}
3.12取消成功返回报文(Json示例)
{"EBusinessID": "1237100","Success": true,"ResultCode": "100",
}
3.13.分步讲解(C#版本)
请求数据包结构
C#调用代码示例
//电商ID
string eEBusinessID = "test1617571";//电商加密私钥,快递鸟提供,注意保管,不要泄漏string appKey= "554343b2-7252-439b-b4eb-1af42c8f2175";//请求urlstring reqURL = "http://sandboxapi.kdniao.com:8080/kdniaosandbox/gateway/exterfaceInvoke.json";//请求指令 string reqType="1801";//2-json string dataType = "2"; //字符编码采用UTF-8 string charset = "UTF-8"; //JSON字符串string string jsonStr = "{\"OrderCode\":\"012657018199\",\"ShipperCode\":\"STO\",\"PayType\":1,\"MonthCode\":\"1234567890\",\"ExpType\":1,\"Sender\":{\"Company\":\"LV\",\"Name\":\"Taylor\",\"Mobile\":\"15018442396\",\"ProvinceName\":\"上海\",\"CityName\":\"上海市\",\"ExpAreaName\":\"青浦区\",\"Address\":\"明珠路\"},\"Receiver\":{\"Company\":\"GCCUI\",\"Name\":\"Yann\",\"Mobile\":\"15018442396\",\"ProvinceName\":\"北京\",\"CityName\":\"北京市\",\"ExpAreaName\":\"朝阳区\",\"Address\":\"三里屯街道\"},\"Commodity\":[{\"GoodsName\":\"鞋子\",\"Goodsquantity\":1,\"GoodsWeight\":1}],\"Weight\":1,\"Quantity\":1,\"Volume\":0,\"Remark\":\"小心轻放\"
}" ;//把(jsonStr+APIKey)进行MD5加密string md5Str=MD5(jsonStr + apiKey, charset);//把md5Str 进行Base64编码string base64Str=base64(md5Str,charset);//进行URL编码 (utf-8)string datasign = HttpUtility.UrlEncode(base64Str, charset); //请求报文参数 string postStr = "RequestType=reqType&EBusinessID= eEBusinessID&RequestData=jsonStr
&DataSign= datasign&DataType=dataType";
//通讯协议使用Http协议Post请求方式 返回轨迹数据
string post = SendPost(reqURL, postStr);//获取到的post数据就是快递鸟返回的完整报文,接下来自己写一个解析json的方法就能获取到里面的字段信息。
- C#调用方法
///<summary>/// 字符串MD5加密///</summary>///<param name="str">要加密的字符串</param>///<param name="charset">编码方式</param>///<returns>密文</returns>private string MD5(string str, string charset){byte[] buffer = System.Text.Encoding.GetEncoding(charset).GetBytes(str);try{System.Security.Cryptography.MD5CryptoServiceProvider check;check = new System.Security.Cryptography.MD5CryptoServiceProvider();byte[] somme = check.ComputeHash(buffer);string ret = "";foreach (byte a in somme){if (a < 16)ret += "0" + a.ToString("X");elseret += a.ToString("X");}return ret.ToLower();}catch{throw;}}/// <summary>/// base64编码/// </summary>/// <param name="str">内容</param>/// <param name="charset">编码方式</param>/// <returns></returns>private string base64(String str, String charset){return Convert.ToBase64String(System.Text.Encoding.GetEncoding(charset).GetBytes(str));
}/// <summary>/// Post方式提交数据,返回网页的源代码/// </summary>/// <param name="url">发送请求的 URL</param>/// <param name="postData">请求报文参数</param>/// <returns>远程资源的响应结果</returns>private string SendPost(string url, string postData){string result = "";byte[] byteData = Encoding.GetEncoding("UTF-8").GetBytes(postData.ToString());try{HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);request.ContentType = "application/x-www-form-urlencoded";request.Referer = url;request.Accept = "*/*";request.Timeout = 30 * 1000;request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727;.NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)";request.Method = "POST";request.ContentLength = byteData.Length;Stream stream = request.GetRequestStream();stream.Write(byteData, 0, byteData.Length);stream.Flush();stream.Close();HttpWebResponse response = (HttpWebResponse)request.GetResponse();Stream backStream = response.GetResponseStream();StreamReader sr = new StreamReader(backStream, Encoding.GetEncoding("UTF-8"));result = sr.ReadToEnd();sr.Close();backStream.Close();response.Close();request.Abort();}catch (Exception ex){result = ex.ToString();}return result;}
3.14.关于签名
快递鸟和第三方电子商务公司系统进行对接,有一定的安全机制。采用 IP 认证加签名的方式对接,具体方案如下:
防止数据被篡改 在 POST 请求中会传递 5 个必须®参数 RequestData数据内容(URL 编码:UTF-8)
EBusinessID用户 ID RequestType=请求指令类型 DataSign==
数据内容签名:把(请求内容(未编码)+ApiKey)进行 MD5 加密,然后 Base64 编码,最后进行 URL(utf-8)编码
DataType==2(返回数据类型为 json) 注: DataSign 生成后,对方接收到数据后,以同样的算法进行签名(推送接口
RequestType 为 101/102 不需要进行 URL
编码),生成摘要,对比两者的摘要是否相同,如果不同,说明传递过程中发生数据篡改。 调用接口的身份认证
注册成为快递鸟用户后,会生成对应的用户 ID 和 APIKey,用户 ID 相当于用户名, APIKey 相当于密码。
3.15.返回码定义
编码 | 说明 |
---|---|
100 | 成功 |
101 | 缺少必要参数 |
102 | 校验问题 |
103 | 格式问题 |
售后退换货不一样的产品思路相关推荐
- 售后的设计(退换货)
电商的售后业务影响到消费者的体验,需要考虑的问题如下: 一.主要业务点,分为必填和选填(必填是简化后的功能,能满足基本要求,但不完善,选填参考京东实现) 1.申请售后对象:订单为单位,不能选择数量(必 ...
- AI治退“七天无理由退换货”
双十一退货浪潮带着热搜体质一起来了! 各大电商平台的销售数据纷纷突破历史记录的同时发生,数亿点灯熬油抢到的宝贝,在商家和快递小哥马不停蹄的忙碌之后,很快又将被送上返仓的列车. 商家们当然没有" ...
- 退换货通道不关闭,买家笑,卖家哭?
平台:买错买多不用慌,双11当天退换货通道不会关闭 据了解,今年11月11日当天退换货通道不会关闭,不小心买错.买多的消费者从早上8点开始就能操作#双十一退款#.网友:双十一剁手有后悔药. 商家:双1 ...
- 电商系统物流管理之逆向物流退换货流程设计
如今电商行业的发展成熟,我们在日常生活中经常会用各种电商平台购物,但是在网上购物经常会有退货的可能性:本文作者分享了关于电商系统物流管理之逆向物流退换货流程设计,我们一起来学习一下. 什么是逆向物流, ...
- WMS 之仓内退换货流程设计
导语 大家好,我是智能仓储物流技术研习社的社长,你的老朋友,老K. 知识星球 * 原创电子书 * 深海社区 * 微信群 先简单简单梳理下退换货的流程: 流程 如上图所示,对于退换货,在库内主要是进行包 ...
- C2C平台退换货逆向寄件服务,快递鸟“上门取件“解决方案
我们都知道王者荣耀.和平精英,听说过英雄联盟.梦幻西游.但对游戏王.宝可梦能有所了解的,都是一些老玩家了. 游戏王.宝可梦都属于集换式卡牌游戏,是把特定主题的卡牌构成自己的卡堆,利用各种卡牌和战略跟对 ...
- 菜鸟裹裹升级退换货:全程可见让商家物流纠纷率降半
7月17日,菜鸟裹裹在上门取件服务推出了一项新功能,商家端的退换货展示从此变得全程可见,大幅减少了包裹停滞.少寄漏寄的纠纷与资损.通过1小时上门.全链路跟踪等服务,每单退换 货时间平均缩短了8小时,商 ...
- 多用户商城系统流程设计和流程图,以及退换货流程图说明
多用户商城系统流程设计和流程图 多用户商城系统订单退换货流程图:
- 购物以及退换流程图是什么?分享购物及退换货流程图模板
一般在网上购物设计退换的,有可能是商品质量的问题或者是不适合自己而引起的退换货,很多人不知道这是怎样的操作过程,下面将为大家分享绘制精美的购物以及退换货流程图模板以及怎样绘制该模板的操作方法,希望可以 ...
最新文章
- CentOS6.5下做DNS服务器
- lsof 查看一个进程打开哪些fd及对应的文件或套接字操作
- mybatis方法传入多参数
- POJ2528的另一种解法(线段切割)
- 使用Cordova将您的前端JavaScript应用打包成手机原生应用
- 大数据与大量数据处理_我们如何处理和使用如此大量的数据?
- web前端开发,自学的流程可以怎样?
- hdu 3635 Dragon Balls 并查集应用记录每个点的转移次数
- Rust 生命周期太难学、最想实现与 C++ 互操作,Rust 2020 调查报告发布!
- 拆解拼多多、趣头条、小红书背后的上海互联网基因
- mysql查询id为5的数据类型_MySql学习05---数据类型
- clientHeight、scrollHeight、offsetHeight的区别和理解
- 一劳永逸解决latex的字体问题
- c语言编程题作弊技巧,全国计算机二级C语言上机编程题详细分析(1)
- 中兴盒子B860A-免拆机-线刷-第三方刷机固件及教程
- 【板栗糖GIS】Win11如何取消打印机任务
- 推荐几部不错的网络玄幻小说
- 定理在数学中的简写形式_数学公式定理中的特殊符号含义及读法
- 全球80家无线通信模组企业汇总及介绍
- 学渣的刷题之旅 leetcode刷题 26. 删除排序数组中的重复项