B2C对接文档¶
该文档(v4.5)适用于商家与返利的技术对接,基于此文档约定,可以实现用户从返利网跳转至商 家网站首页或指定目标页,且在 RD(推广认定)期内产生的下单(包括未付款取消及最终成交、结算),记为返利网的推广来源,同时将订单数据返回给返利网。
重要
文档中标记文字为重要或易误解逻辑,请重点关注。
开发需求¶
- 需商家开发的包括:一个跳转接口(即入站链接)和一个订单查询接口。同时,实现订单的实时推送至返利网订单接口。
- 根据双方商务约定,跳转接口实现CPS/CPN、快捷登录的全部或部分功能;
固定参数¶
返利网提供的固定参数包括:
参数名 类型 描述 s_id int 商家在返利网的唯一ID,也称作shopid/sid shop_key string 商家与返利网接口用以加密的密钥
跳转接口¶
- 返利网用户通过跳转接口进入商家网站,跳转时附带跟踪参数,接口处理完跟踪参数后(即记录返利网推广效果),将用户重定向至默认页面或指定的落地页;
- 商家如不采用接口统一跳转的模式,也可在网站任意url后直接附加跟踪参数,实现上述记录跟踪信息;
注解
返利网不限定具体技术实现方式,只要满足功能要求即可(记录推广效果+跳转落地页)。
接口示例¶
http://~/fanli?uid=6&target_url=xxx&tc=abc123&tracking_id=12345&action_time=1294820691&code=d7b6e7b74aea
参数说明¶
参数名称 类型 要求 说明 uid string 必选,可为空 返利网会员标识;用户下单后与订单进行关联并随订单返回;包含字母与数字,不区分大小写 target_url string 必选,可为空 跳转目标落地页,为空时跳转到商家首页或约定的推广、注册页等; tc string 必选,可为空 返利网订单跟踪信息;用户下单后与订单进行关联并随订单返回; tracking_id bigint 可选 返利网跳转的递增序列号,商家无需处理,双方可用来在日志中定位跳转详情、排查异常; action_time int 可选 时间戳,用以进行参数校验; code string 可选 校验关键参数,防止被篡改;code=md5(uid+shop_key+action_time) 注解
- "必选,可为空"是指商家接口必须对该参数进行处理,但不限定该参数的值为空值;
- 以上各参数名除tracking_id外,均可由商家自定义;
- 如果商家不考虑对链接进行安全性校验,则不用处理action_time及code逻辑;
- 如果约定了进行校验,但校验失败,则页面给出提示,提示用户重新从返利网跳转;具体交互样式,由双方产品确认;
重要约定¶
重要
- 跳转接口的传参均不做空值限制;uid、tc等关键字段,必须原值传回;正常流程中不会产生空值,但商家处理逻辑不能将空值作为推广是否有效、订单是否推送的限制;
- 跳转接口中的target_url 参数是为了更好的用户体验,可直接跳转到指定的商品详情页、专题活动页等,但不能因为任意指定target_url而导致推广效果记录失效。
订单接口¶
查询接口¶
返利网通过商家提供的订单查询接口,实时获取到属于返利网推广的订单数据。示例:
http://~/queryOrder?begin_date=2013-08-01%2014:00:00&end_date=2013-08-01%2015:00:00&order_id=a12345678&update=1
参数说明¶
参数名称 类型 要求 说明 begin_date datetime 必选 订单查询开始时间点,精确到秒; end_date datetime 必选 订单查询结束时间点,精确到秒; order_id string 可选 指定订单号查询,返回该订单的详情; update int 可选 0订单生成时间,1订单最后更新时间,默认为1 注解
- 为满足查询时效性及对历史订单的补抓需求,接口应支持返回指定时间段内新产生、以及状态发生更新的订单;
- 根据update的不同,传入的时间参数含义不同(下单时间或状态更新时间);默认为1(注:应包含新产生订单,此时下单时间与最新状态更新时间相同);
订单推送¶
商家通过返利网提供的接口,将属于返利网推广的订单数据实时推送到返利网接口中。数据推送需实时且符报文格式标准,推送失败时请增加重试机制。推送地址:
http(s)://union.fanli.com/dingdan/push/shopid/1234注解
- POST方式请求接口,如果以key/value方式提交,key=content;
- 推送地址中的1234为文档提到的商家在返利网的s_id,技术对接时提供;
推送返回¶
<?xml version="1.0" encoding="utf-8"?> <orders version="4.0"> <error_code>0</error_code> <error_description>2017071212345</error_description> </orders>
- error_code 返回 1 为推送成功,0 为重复推送,其他表示失败;
- error_description 推送成功或重复时返回订单号(order_id),失败则返回出错说明;
订单报文示例¶
订单查询及推送采用一致的订单数据格式,示例如下:
<?xml version="1.0" encoding="utf-8"?> <orders version="4.0"> <order> <s_id>12345</s_id> <order_id_parent>2017071212345</order_id_parent> <order_id>2017071212345</order_id> <order_time>2017-07-12 16:07:56</order_time> <uid>6</uid> <uname>6@51fanli</uname> <tc>abc1234</tc> <pay_time>2017-07-12 16:07:56</pay_time> <status>0</status> <locked/> <lastmod>2017-07-12 16:07:56</lastmod> <is_newbuyer>1</is_newbuyer> <platform>2</platform> <remark/> <extension> <reg_time>2017-06-16 21:45:00</reg_time> <moblie>13012345678</moblie> </extension> <products> <product> <pid>12345678</pid> <title><![CDATA[泰国进口百香果 西番莲12个装 单果70-90克]]></title> <category>12</category> <category_title>进口水果</category_title> <url><![CDATA[http://www.shop.com/product/12345678.html]]></url> <num>2</num> <price>20.00</price> <real_pay_fee>35.00</real_pay_fee> <refund_num/> <commission>7.50</commission> <comm_type>A</comm_type> <extension> <data1>扩展属性1</data1> <data2>扩展属性2</data2> </extension> </product> </products> </order> </orders>注解
- 扩展信息字段(extension)可根据具体商务合作内容进行增删,以满足双方的合作需求;
- 受XML格式限制,如有中文或特殊字符,请使用<![CDATA[...]]>进行处理;
订单字段说明¶
参数名称 类型 要求 说明 orders order 必填 以数组形式存储多个订单order信息 s_id int 必填 合作商家在返利网的编号,返利网提供 order_id string 必填 订单号 order_id_parent string 必填 父订单号(若无父子订单逻辑,和订单号保持一致) order_time datetime 必填 订单创建时间 uid string 必填 跳转接口传入的uid值,原值返回 uname string 必填 商家用户唯一性标识,快捷登录时可使用跳转时传入的uname值,见补充说明 tc string 必填 跳转接口传入的tc值,原值返回 pay_time datetime 必填 订单支付时间,为空表示未支付 status int 必填 订单状态标识,见补充说明 locked int 可选 订单状态是否已锁定不可变更(如已过退货期、交易完成不可退货),默认为0 lastmod datetime 必填 订单状态最后一次变更时间,用以保证多次推送时更新逻辑不产生混乱; is_newbuyer int 必填 是否为商家的新购物用户,见补充说明 platform int 必填 订单产生的平台 1:PC;2:H5;3:APP remark string 可选 备注信息 products product 必填 以数组形式存储多个商品product信息 pid string 必填 商品编号或SKU title string 必填 商品名称 category string 必填 类别编码,见补充说明 category_title string 必填 类别名称 url string 必填 商品url num int 必填 商品/SKU数量 price decimal 必填 商品单价,单位元,两位小数; real_pay_fee decimal 必填 商品结算总金额,单位元,两位小数=price*num-优惠&折扣&退货等 refund_num int 可选 退货数量,退货后real_pay_fee需更新,num不更新 commission decimal 必填 佣金总额,两位小数;real_pay_fee*佣金比例 comm_type string 必填 佣金分类,见补充说明 extension 扩展 选填 order或product的扩展信息
字段补充说明¶
1、uname:用以区分用户在合作商城方的唯一性。如果是快捷登录模式,该字段可直接返回跳转链接中的参数值;如果是非快捷登录模式,可以返回商家的用户ID信息;
2、category及category_title:商品在合作商城的类目信息,可以为顶级分类,也可以返回多级分类,格式无强制要求;
3、comm_type:根据双方商务合作约定,用以区分订单/商品不同的返佣规则;
- 如果是全场根据订单交易额统一返佣比例,则可统一为固定值,例如:A;
- 如根据品类区分,则可按照商品大类目进行设定(不建议使用最小商品分类,因分类较多且后续可能会不断增加,不便于双方维护);
- 也可直接按照佣金比例对应设置,例如返15%的为A,返10%的为B;如果有不参与返佣的商品或订单也设一个标识为0%的独立分类,例如N;
- 该字段与category不同,category标识的是商品分类属性,comm_type标识的是商品佣金属性;
4、real_pay_fee:该价格为商品总价扣除了可能的优惠券、折扣、退货等,为实际该商品用以佣金结算的总价,整单优惠则需按比例均摊到商品;
重要
该字段的字面含义“实际支付金额”,并非用户付款金额,而是用以结算佣金的金额。
5、status:订单状态值由商家自定义,并在订单报文中准确反馈。同时将状态值列表提供给返利网;例如:1已下单;2已付款;3已消费;4已发货;5已确认收货;6维权退货
6、is_newbuyer:合作CPN时,需随订单传回用户的新客状态。
- 如果确认为新客,则为1,老客为0;
- 如商务约定为支付后判定新老客,则在未支付前的订单报文中设为2,表示未确定。
重要
新客状态与订单金额无关。商务合作可能约定首单金额超过XX元才结算佣金,但在订单推送时,不可对该字段添加金额限制条件,只要符合约定的首单规则,则标记该字段;同时需要在commission字段中返回佣金值;
7、extension:因商家类型不同,针对特殊商家订单报文增加extension属性。该属性可附加为订单属性(用户注册信息),也可附加为商品属性(理财产品期限、收益率等);
重要约定¶
重要
基于提高用户体验的考虑,约定如下,如有特例,请双方商务和产品另行约定:
- 返利网的跟单模式定义为 只要是返利网带来的推广均需跟单 ,包括但不限于:快捷登陆、非快捷登陆模式跳转下单;跳转完成后,退出并切换商家账号下单;
- 部分商城可能存在非结佣的特殊商品,默认约定返利网带来的所有推广订单均进行推送,非结佣的部分可以用单独的comm_type进行标识。
- 返利网要求在订单产生后即推送订单,而不是等待完成付款后;如有特例,需双方产品确认。
快捷登录¶
快捷登录是普通CPS/CPN的功能增强版本,在原有基础上增加了对用户登录信息的处理,以使跳转完成后用户即处于登录状态并可立即进行下单操作;
具体实现是在上述 跳转接口 上增加了用户信息校验的额外参数。
注解
- 是否进行快捷登录合作,以商务和产品约定为准。
接口示例¶
http://~/fanli?uid=6&target_url=xxx&tc=abc123&tracking_id=12345&action_time=1294820691&code=d7b6e7b74aea236623ea1aa6830f6360&syncname=true&uname=6@51fanli&usersafekey=849b59ee2e3af476
参数说明¶
参数名称 类型 要求 说明 syncname bool 必选 是否进行快捷登录,为false则跳过登录的处理,但仍然算返利网的推广; action_time int 必选 时间戳,用以进行参数校验; uname string 必选 快捷登录用户名,标识返利网唯一用户; code string 必选 校验关键参数,防止被篡改;code=md5(uname+shop_key+action_time); usersafekey string 必选 uname验证信息,与uname一一对应,作为对uname的校验; 重要
- uname格式为12345@51fanli形式,如果商家系统不允许使用@特殊字符,可自行转换;
- 快捷登录接口中的code计算方式与非快捷登录的不同;
快捷登录流程¶
重要约定¶
1、建议将uname做为商家登录用户名,如不满足商家登录名规则限制,商家可自行决定处理方案,但需与返利网对接产品确认;
2、选择快捷登录时,订单报文中的uname字段使用接口传入的值,同样标识用户在商城的唯一性。
3、uid字段无固定规则,商家不能使用该字段值用以逻辑判断及用户唯一性标识;应使用uname作为唯一标识;
4、action_time验证:如果action_time与当前日期差距过大(如超过5分钟),考虑到安全,可将此次快捷登录的请求判定为无效,等同于syncname=false;
5、不论用户是否选择了快捷登录(syncname=true),或者快捷登录失败,当次跳转 均算作返利网的有效推广 ,如用户产生下单,则需返回数据;