### 合作商订单处理》创建和付款同时完成的可以集成联合票务新订单接口。
#### **我方系统会定时每5分钟轮询执行通知任务(销码通知和退款通知)**
* * * * *
### **安全机制**
由联合票务分配parnterId,apiname,clientSecret;
为了保证双方间的交互安全,采用HTTP Header 参数加密认证的方式。双方需要约定id与密钥,根据加密算法,生成HTTP Header 字段。
HTTP Header部分必须包含如下三个字段,样式如下:
| 字段 | 内容 |
| --- | --- |
| PartnerId | 由联合分配 |
| Date | Wed, 06 May 2015 10:34:20 GMT |
| Authorization | LH testapi:frJIUN8DYpKDtOLCwozzyllqDzg=(具体生成策略见BA认证) |
其中Date 字段指的是接口调用的当前时间. 服务会检查该时间,如果该时间过早,会拒绝服务.
#### **签名方法**
1. 拼接加密字符串$signstr 。
> 请求方法大写+空格+uri+"\n"+时间
demo示例签名字段:"POST /openapi/index.php?method=creatOrder" + "\n" + "Wed, 06 May 2015 10:34:20 GMT";
2. sha1加密第一步产生的$signstr。生成字段$sign。
3. base64编码上一步加密的结果$sign。
4. 最后拼接最终签名 'LH '+$apiname+':'+$sign;
* 注意 LH 后的空格和apiname后的 :
详见签名例子
***常见签名错误原因***:
1.不按照签名字串格式生成字串:缺少空格,/n等字符。
2.HttpRequest Head缺少字段。
进行签名的URl不对。是 /openapi/index.php?method=creatOrder 而不是 http://网址/openapi/index.php?method=creatOrder
3.签名的方法不对。表现为同样的字串得到的签名不同。
4.时间不对。
5.时间格式不对。正确的时间格式:Tue, 05 May 2015 06:11:34 GMT
6.合作方放在HttpRequest中的时间和我们的在HttpRequest中获取到得时间不同。
例如:同一个时间字串,双方的解析结果不同
某合作方的签名字段是"POST /openapi/index.php?method=creatOrder"+"\n"+"Wed, 06 May 2015 10:22:43 GMT"
联合票务的签名字串:"POST /openapi/index.php?method=creatOrder"+"\n"+"Wed, 06 May 2015 10:34:20 GMT”
7.通知接口是什么?
通知接口是我方进行销码通知和退款通知时签名用的,合作方可自行决定是否校验签名。
* * * * *
### **uri列表**:
/openapi/index.php?method=notify 通知uri(退款和销码通知,均采用此uri进行签名)
/openapi/index.php?method=getTeam 拉取产品信息
/openapi/index.php?method=send 重发认证
/openapi/index.php?method=creatOrder 创建订单
/openapi/index.php?method=queryOrder 查询订单
/openapi/index.php?method=payOrder 支付订单
/openapi/index.php?method=cancelOrder 取消订单
/openapi/index.php?method=newOrder 新订单(合作方订单创建支付同时进行的话,可以匹配这个接口,生成已支付成功的订单)
* * * * *
###**全局返回码说明**
|返回码|说明|
|--|--|
| 10000 | 请求成功|
| 20000 | 请求失败(包含以下所有情况。)|
| **2.3版本接口新增** | **version 2.3** |
| 10001 | 请求参数异常|
| 10002 | 余额不足|
| **产品问题** |说明|
| 10100 | 产品不存在|
| 10101 | 产品下线|
| 10102 | 产品关闭|
| **订单问题** |说明|
| 10200 | 订单不存在|
| 10201 | 订单已关闭|
| 10202 | 订单已过期|
| 10203 | 订单请求参数异常 |
| 10204 | 景区出票失败 |
| 10205 | 订单信息不匹配 |
| 10206 | 订单处理失败 |
| 10210 | 新增订单失败|
| 10211 | 产品价格校验未通过|
| 10212 | 超出产品限购数量|
| 10213 | 超出产品身份证限购数量|
| 10214 | 超出产品手机号限购数量|
| 10299 | 其它订单错误 |
| **退款问题** |说明|
| 10300 | 退款单不存在|
| 10301 | 退票待审核状态|
| 10302 | 退款已成功|
| 10303 | 退款失败,门票已消费|
| 10304 | 退票被驳回|
| 10305 | 订单未付款|
| 10306 | 导码单无法处理|
| 10307 | 退款数量超出可退数量|
| 10399 | 其它退款错误|
* * * * *
产品状态说明
|值|说明|
|--|--|
|0| 产品下架|
|1| 产品上架|
|2| 产品有变化|
* * * * *
###**订单返回状态说明**:
|值|说明|介绍|
|--|--|--|
|0| 订单查询异常 | 仅供查询订单接口使用|
|1| 创建订单成功 | 供创建订单接口、查询订单接口使用|
|2| 创建订单失败、订单不存在 | 供创建订单接口、查询订单接口使用|
|3| 新增订单成功 | 仅供新增订单接口使用,查询订单时返回参考4,5|
|4| 支付订单成功 | 供支付订单接口使用 注意支付成功后,查询订单接口不要返回此状态,用8或9替换|
|5| 支付订单失败、订单未付款 | 供支付订单接口、查询订单接口使用|
|6| 退款成功 | 供退款接口、退款通知接口使用|
|7| 退款失败 | 供退款接口、退款通知接口使用|
|8| 票全部终结 | 供查询订单接口、消费通知接口使用 解释:如果核销票数与退款票数之和等于票总数,置为8状态usedQuantity + refundQuantity = orderQuantity, orderStatus = 8|
|9| 票未全部终结| 供查询订单接口、消费通知接口使用 解释:如果核销票数与退款票数之和不等于票总数,置为9状态usedQuantity + refundQuantity != orderQuantity, orderStatus = 9|
###**退款状态详细说明(供退款接口,查询接口使用)**
说明部分返回值仅退款接口返回,查询接口返回对应的订单状态。
reStatus
|返回值 |说明|退款接口|查询接口|备注|
|--|--|--|--|--|
| 1 | 退款已申请 |Yes|Yes| 此订单已有退款申请了,请等待退款申请处理完成。|
| 2 | 退款已成功 |Yes|Yes| 此订单已完成退款,没有可用票了|
| 3 | 已消费无法退款|Yes|No | 查询接口返回订单状态orderStatus=8,订单可用票数已消费完毕。|
| 4 | 退款已驳回 |Yes|Yes| 驳回状态的退款,接口程序将不再对此订单进行任何处理操作,若有异议,均需人工申诉处理 |
| 5 | 订单未支付 |Yes|No | 联合不进行退款操作,合作方可自行校验支付状态,处理此订单|
| 6 | 外站订单不支持接口退款 |Yes|No |外站码订单,不支持接口取消,请人工处理此订单|