### 合作商訂單處理》創建和付款同時完成的可以集成聯合票務新訂單接口。
#### **我方系統會定時每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 |外站碼訂單,不支持接口取消,請人工處理此訂單|