All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.yunpian.sdk.api.FlowApi Maven / Gradle / Ivy

/**
 * 
 */
package com.yunpian.sdk.api;

import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;

import org.apache.http.NameValuePair;

import com.google.gson.reflect.TypeToken;
import com.yunpian.sdk.YunpianClient;
import com.yunpian.sdk.constant.Code;
import com.yunpian.sdk.model.FlowPackage;
import com.yunpian.sdk.model.FlowSend;
import com.yunpian.sdk.model.FlowStatus;
import com.yunpian.sdk.model.Result;
import com.yunpian.sdk.util.JsonUtil;

/**
 * 
 * https://www.yunpian.com/api2.0/flow.html
 * 
 * @author dzh
 * @date Nov 23, 2016 1:13:27 PM
 * @since 1.2.0
 */
public class FlowApi extends YunpianApi {

    public static final String NAME = "flow";

    @Override
    public String name() {
        return NAME;
    }

    @Override
    public void init(YunpianClient clnt) {
        super.init(clnt);
        host(clnt.getConf().getConf(YP_FLOW_HOST, "https://flow.yunpian.com"));
    }

    /**
     * 

查询流量包

* *

* 参数名 类型 是否必须 描述 示例 *

*

* apikey String 是 用户唯一标识 9b11127a9701975c734b8aee81ee3526 *

*

* carrier String 否 运营商ID 传入该参数则获取指定运营商的流量包, 否则获取所有运营商的流量包 移动:10086 联通:10010 * 电信:10000 *

* * @param param * @return */ public Result> get_package(Map param) { Result> r = new Result<>(); List list = param2pair(param, r, APIKEY); if (r.getCode() != Code.OK) return r; String data = format2Form(list); SimpleListResultHandler h = new SimpleListResultHandler() { @Override public List data(List rsp) { switch (version()) { case VERSION_V1: if (rspMap != null) { String flow = rspMap.get(FLOW_PACKAGE); return JsonUtil.>fromJson(flow, new TypeToken>() { }.getType()); } case VERSION_V2: return rsp; } return Collections.emptyList(); } @Override public Integer code(List rsp) { if (rspMap != null) { return YunpianApi.code(rspMap, FlowApi.this.version()); } return Code.OK; } @Override Type rspType() { return new TypeToken>() { }.getType(); } }; try { return path("get_package.json").post(uri(), data, h, r); } catch (Exception e) { return h.catchExceptoin(e, r); } } /** *

充值流量

* *

* 参数名 类型 是否必须 描述 示例 *

*

* apikey String 是 用户唯一标识 9b11127a9701975c734b8aee81ee3526 *

*

* mobile String 是 接收的手机号(仅支持大陆号码) 15205201314 *

*

* sn String 是 流量包的唯一ID 点击查看 1008601 *

*

* callback_url String 否 本条流量充值的状态报告推送地址 http://your_receive_url_address *

*

* encrypt String 否 加密方式 使用加密 tea (不再使用) *

*

* _sign String 否 签名字段 参考使用加密 393d079e0a00912335adfe46f4a2e10f (不再使用) *

* * @param param * @return */ public Result recharge(Map param) { Result r = new Result<>(); List list = param2pair(param, r, APIKEY, MOBILE, SN); if (r.getCode() != Code.OK) return r; String data = format2Form(list); MapResultHandler h = new MapResultHandler() { @Override public FlowSend data(Map rsp) { switch (version()) { case VERSION_V1: return JsonUtil.fromJson(rsp.get(RESULT), FlowSend.class); case VERSION_V2: return map2flowResult(rsp); } return null; } @Override public Integer code(Map rsp) { return YunpianApi.code(rsp, FlowApi.this.version()); } }; try { return path("recharge.json").post(uri(), data, h, r); } catch (Exception e) { return h.catchExceptoin(e, r); } } /** *

获取状态报告

* *

* 参数名 是否必须 描述 示例 *

*

* apikey 是 用户唯一标识 9b11127a9701975c734b8aee81ee3526 *

*

* page_size 否 每页个数,最大100个,默认20个 20 *

* * @param param * @return */ public Result> pull_status(Map param) { Result> r = new Result<>(); List list = param2pair(param, r, APIKEY); if (r.getCode() != Code.OK) return r; String data = format2Form(list); SimpleListResultHandler h = new SimpleListResultHandler() { @Override public List data(List rsp) { switch (version()) { case VERSION_V1: if (rspMap != null) { String flow = rspMap.get(FLOW_STATUS); return JsonUtil.>fromJson(flow, new TypeToken>() { }.getType()); } case VERSION_V2: return rsp; } return Collections.emptyList(); } @Override public Integer code(List rsp) { if (rspMap != null) { return YunpianApi.code(rspMap, FlowApi.this.version()); } return Code.OK; } @Override Type rspType() { return new TypeToken>() { }.getType(); } }; try { return path("pull_status.json").post(uri(), data, h, r); } catch (Exception e) { return h.catchExceptoin(e, r); } } protected FlowSend map2flowResult(Map rsp) { if (rsp == null || rsp.isEmpty()) return null; try { FlowSend info = new FlowSend(); info.setCount(rsp.get(COUNT)); info.setFee(Double.parseDouble(rsp.get(FEE))); info.setSid(rsp.get(SID)); return info; } catch (Exception e) { LOG.error(e.getMessage(), e.fillInStackTrace()); } return null; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy