# 注意:本文檔后期不在跟新,新文檔遷移到:[http://www.openkit.cc/docs/openkit/#/](http://www.openkit.cc/docs/openkit/#/)
# 首先感謝使用OpenKit工具包
## 反饋交流QQ群:696279396
|更新時間|版本|作者|
|:--:|:--:|:--:|
|2018-1-26 17:56|V1.1.3|賁海龍|
### 首先你需要新建一個話費的配置文件
```java
// 你可以new一個空對象,然后使用set方法
HuafeiConfig huafeiConfig = new HuafeiConfig();
// 你也可以在創建對象的時候直接將必傳參數傳進去
HuafeiConfig huafeiConfig = HuafeiConfig(String key, String openId)
```
> 具體參數說明,如果有需要,自己使用set方法設置
|屬性|是否必傳|說明|
|:--:|:--:|--|
|key|是|申請的接口Appkey|
|openId|是|在個人中心查詢|
|telCheckUrl|否|檢測手機號碼和金額是否能充值地址|
|telQueryUrl|否|根據手機號碼和面值查詢商品信息地址|
|onlineUrl|否|根據用戶提供的請求為指定手機直接充值地址|
|yueUrl|否|查詢賬戶余額地址|
|orderstaUrl|否|訂單狀態查詢地址|
|orderListUrl|否|歷史訂單列表地址|
### 接下來,我們來看看對應的方法(所有參數必傳)
- 1、檢測手機號碼是否能充值接口
> 調用:HuafeiService.telCheck(HuafeiConfig huafeiConfig, String phone, int cardnum)
> 入參
|屬性|數據類型|是否必傳|說明|
|:--:|:--:|:--:|--|
|huafeiConfig|HuafeiConfig|是|配置信息|
|phone|String|是|手機號碼|
|cardnum|int|是|充值金額,目前可選:5、10、20、30、50、100、300|
> 返回值
|屬性|數據類型|是否必傳|說明|
|:--:|:--:|:--:|--|
|--|int|是|返回錯碼,0為允許充值的手機號碼及金額,其他為不可以或其他錯誤|
- 2、根據手機號和面值查詢商品信息
> 調用:HuafeiService.telQuery(HuafeiConfig huafeiConfig, String phone,int cardnum)
> 入參
|屬性|數據類型|是否必傳|說明|
|:--:|:--:|:--:|--|
|huafeiConfig|HuafeiConfig|是|配置信息|
|phone|String|是|手機號碼|
|cardnum|int|是|充值金額,目前可選:5、10、20、30、50、100、300|
> 返回值
|屬性|數據類型|是否必傳|說明|
|:--:|:--:|:--:|--|
|--|String|是|String類型結果|
- 3、依據用戶提供的請求為指定手機直接充值
> 調用:HuafeiService.onlineOrder(HuafeiConfig huafeiConfig, String phone,int cardnum,String orderid)
> 入參
|屬性|數據類型|是否必傳|說明|
|:--:|:--:|:--:|--|
|huafeiConfig|HuafeiConfig|是|配置信息|
|phone|String|是|手機號碼|
|cardnum|int|是|充值金額,目前可選:5、10、20、30、50、100、300|
|orderid|String|是|商家訂單號,8-32位字母數字組合,自定義|
> 返回值
|屬性|數據類型|是否必傳|說明|
|:--:|:--:|:--:|--|
|--|String|是|String類型結果|
- 4、查詢賬戶余額
> 調用:HuafeiService.yuE(HuafeiConfig huafeiConfig)
> 入參
|屬性|數據類型|是否必傳|說明|
|:--:|:--:|:--:|--|
|huafeiConfig|HuafeiConfig|是|配置信息|
> 返回值
|屬性|數據類型|是否必傳|說明|
|:--:|:--:|:--:|--|
|--|String|是|String類型結果|
- 5、訂單狀態查詢
> 調用:HuafeiService.orderSta(HuafeiConfig huafeiConfig, String orderid)
> 入參
|屬性|數據類型|是否必傳|說明|
|:--:|:--:|:--:|--|
|huafeiConfig|HuafeiConfig|是|配置信息|
|orderid|String|是|商家訂單號|
> 返回值
|屬性|數據類型|是否必傳|說明|
|:--:|:--:|:--:|--|
|--|String|是|訂單結果|
- 6、歷史訂單列表
> 調用:HuafeiService.orderList(HuafeiConfig huafeiConfig)
> 入參
|屬性|數據類型|是否必傳|說明|
|:--:|:--:|:--:|--|
|huafeiConfig|HuafeiConfig|是|配置信息|
> 返回值
|屬性|數據類型|是否必傳|說明|
|:--:|:--:|:--:|--|
|--|String|是|列表結果|
### 錯誤碼說明
#### 服務級錯誤碼參照(error_code):
|錯誤碼 |說明|
|:--:|:--:|
|208501 |不允許充值的手機號碼及金額|
|208502| 請求手機號和面值查詢商品信息失敗,請重試|
|208503 |運營商地區維護,暫不能充值|
|208504| 請求手機號和面值查詢商品信息錯誤,具體請參考reasoon|
|208505 |錯誤的手機號碼|
|208506 |錯誤的充值金額|
|208507 |充值失敗,具體請參考reason|
|208508| 請求充值失敗,請重試|
|208509| 錯誤的訂單號|
|208510| 請求訂單狀態失敗,請重試|
|208513 |查詢訂單失敗,具體參照reason說明|
|208514| 不合規范的訂單號(8-32位)|
|208515| 校驗值sign錯誤|
|208516 |重復的訂單號|
|208517| 當前賬戶可用余額不足|
#### 系統級錯誤碼參照:
|錯誤碼| 說明| 舊版本(resultcode)
|:--:|:--:|:--:|
|10001| 錯誤的請求KEY| 101|
|10002 |該KEY無請求權限| 102|
|10003| KEY過期 |103|
|10004| 錯誤的OPENID |104|
|10005 |應用未審核超時,請提交認證| 105|
|10007| 未知的請求源 |107|
|10008| 被禁止的IP |108|
|10009 |被禁止的KEY |109|
|10011| 當前IP請求超過限制| 111||
|10012| 請求超過次數限制 |112|
|10013 |測試KEY超過請求限制| 113|
|10014 |系統內部異常(調用充值類業務時,請務必聯系客服或通過訂單查詢接口檢測訂單,避免造成損失)| 114|
|10020| 接口維護| 120|
|10021| 接口停用| 121|
#### 錯誤碼格式說明(示例:200201):
|2| 002| 01|
|:--:|:--:|:--:|
|服務級錯誤(1為系統級錯誤)| 服務模塊代碼(即數據ID)| 具體錯誤代碼|
### 回調地址規范
- 回調顯示:post
- 推送參數內容格式(普通參數鍵值對,非json):
|名稱|類型|說明|
|:--:|:--:|:--:|
|sporder_id|string|聚合訂單號|
|orderid|string|用戶自定義的單號|
|sta|int|充值狀態1:成功 9:失敗|
|sign|string|校驗值,md5(appkey+sporder_id+orderid) 32位小寫,用于校驗請求合法性|
|err_msg|string|狀態描述信息(暫只支持油卡業務)|
- 處理成功請返回:success 或 任意字符串
- 重試機制:聚合數據在請求回調地址時,如果無任何內容返回或無響應,會重新發起最多3次,間隔3s左右
- 本回調推送內容格式適用于話費充值、油卡充值、流量充值等增值服務,如果需要狀態回調的用戶,如接口其他已經調試完畢,請將賬號和回調地址發給在線客服,我們將回調地址配置線上。
```java
/***************servlet接收示例**************************/
@WebServlet("/callerBack")
public class CallerBackDemo extends HttpServlet {
public static final long serialVersionUID =1L;
String appkey = "";//您 申請的數據的APIKEY
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String sporder_id = req.getParameter("sporder_id");//聚合訂單號
String orderid = req.getParameter("orderid ");//商家訂單號
String sta = req.getParameter("sta ");//充值狀態
String sign = req.getParameter("sign"); //校驗值
String local_sign = MD5Util.strToMD5(appkey+sporder_id+orderid);//本地sign校驗值
if(sign ==local_sign){
if(sta=="1"){
//充值成功,根據自身業務邏輯進行后續處理
}else if(sta=="9"){
//充值失敗,根據自身業務邏輯進行后續處理
}
}
return "SUCCESS";
}
/***************Spring接收示例**************************/
@RequestMapping(value="/callerBack",method=RequestMethod.POST)
public void callerBack(@RequestParam("sporder_id") String sporder_id,@RequestParam("orderid") String orderid,
@RequestParam("sta") String sta,@RequestParam("sign") String sign ){
String local_sign = MD5Util.strToMD5(appkey+sporder_id+orderid);//本地sign校驗值
if(sign ==local_sign){
if(sta=="1"){
//充值成功,根據自身業務邏輯進行后續處理
}else if(sta=="9"){
//充值失敗,根據自身業務邏輯進行后續處理
}
}
return "SUCCESS";
}
```
## 反饋交流QQ群:696279396
## 贊助
