全部产品
阿里云办公

流量发放API(Charge)---JAVA

更新时间:2018-02-11 09:50:30

步骤 1 创建阿里云账号

为了访问流量服务,您需要有一个阿里云账号。如果没有,可首先按照如下步骤创建阿里云账号:

  1. 访问阿里云 官方网站,单击页面上的 免费注册 按钮。
  2. 按照屏幕提示完成注册流程并进行企业实名认证

流量服务只支持企业实名认证用户使用。为了更好地使用阿里云服务,建议尽快完成实名认证,否则部分阿里云服务将无法使用。具体实名认证流程,请参考 这里

步骤 2 获取阿里云访问密钥

为了使用流量发放API-JAVA SDK,您必须申请阿里云的访问密钥。

阿里云访问秘钥是阿里云为用户使用 API(非控制台)来访问其云资源设计的“安全口令”。您可以用它来签名 API 请求内容以通过服务端的安全验证。

该访问秘钥成对(AccessKeyId 与 AccessKeySecret)生成和使用。每个阿里云用户可以创建多对访问秘钥,且可随时启用(Active)、禁用(Inactive)或者删除已经生成的访问秘钥对。

您可以通过阿里云控制台的 秘钥管理页面 创建、管理所有的访问秘钥对,且保证它处于“启用”状态。由于访问秘钥是阿里云对 API 请求进行安全验证的关键因子,请妥善保管你的访问秘钥。如果某些秘钥对出现泄漏风险,建议及时删除该秘钥对并生成新的替代秘钥对。

步骤 3 流量充值整体流程及操作步骤

流量发放整体流程及操作步骤

参数说明

入参列表
参数名称 参数类型 必填与否 样例取值 参数说明
PhoneNumber String 必须 13010112022 充值手机号
Grade String 必须 50 充值档位(可以通过档位查询接口查询当前手机号支持的档位)
IsProvince Boolean 必须 false 是否分省,默认为false
Reason String 可选 活动积分兑换 充值原因备注
OutId String 必须 abcdefgh 外部流水扩展字段,流量服务中会根据OutId做幂等,防止对同一流水的多次充值请求
scope String 可选 0 取值有0和1两种情况,0的代表是全国流量,1代表是省内流量 ,不填默认为0
出参列表
出参名称 出参类型 样例取值 参数说明
RequestId String 8906582E-6722 请求ID
Code String OK 状态码-返回OK代表请求成功,其他错误码详见错误码列表
Message String 请求成功 状态码的描述

技术对接步骤

1:下载SDK工具包
系统默认超时时间为10S,客户对接时设置的超时时间建议不超过10S,否则可能会造成重复下单

SDK工具包中一共包含了2个类库,一个aliyun-java-sdk-core包,另外一个是alicom-dycdp-api包,将这两个包执行mvn package命令或者mvn deploy命令打包出相应的jar包,添加到工程类库中依赖使用。

SDK&DEMO [下载地址]

2: 编写样例程序
  1. //设置访问超时时间
  2. System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
  3. System.setProperty("sun.net.client.defaultReadTimeout", "10000");
  4. //云通信产品-流量API产品名
  5. final String product = "Dycdpapi";
  6. //云通信产品-流量API产品域名
  7. final String domain = "dycdpapi.aliyuncs.com";
  8. //需要替换成你的AK信息
  9. final String accessKeyId = "yourAccessKeyId";
  10. final String accessKeySecret = "yourAccessKeySecret";
  11. //初始化acsClient
  12. IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
  13. DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
  14. IAcsClient acsClient = new DefaultAcsClient(profile);
  15. //组装请求对象
  16. ChargeRequest request = new ChargeRequest();
  17. //必填-充值号码
  18. request.setPhoneNumber("13000000000);
  19. //必填-充值档位-可通过档位查询接口查询支持的档位
  20. request.setGrade("50");
  21. //选填-是否分省默认是false
  22. request.setIsProvince("false");
  23. //选填-充值备注
  24. request.setReason("remark");
  25. //选填-外部扩展字段
  26. request.setOutId("yourOutId");
  27. //hint 此处可能会抛出异常,注意catch
  28. ChargeResponse chargeResponse = acsClient.getAcsResponse(request);
  29. if(chargeResponse.getCode()!= null && chargeResponse.getCode().equals("OK")) {
  30. //请求成功
  31. }

错误码列表

Code 描述
OK 请求成功
isp.RAM_PERMISSION_DENY RAM权限DENY
isv.OUT_OF_SERVICE 业务停机
isv.PRODUCT_UN_SUBSCRIPT 未开通云通信产品的阿里云客户
isv.OUT_OF_SERVICE 业务停机
isv.PRODUCT_UNSUBSCRIBE 产品未开通
isv.ACCOUNT_NOT_EXISTS 账户不存在
isv.ACCOUNT_ABNORMAL 账户异常
isv.INVALID_PARAMETERS 参数异常
isp.SYSTEM_ERROR 系统错误
isv.MOBILE_NUMBER_ILLEGAL 号码格式非法
isv.BUSINESS_LIMIT_CONTROL 触发流控
isp.NO_AVAILABLE_CHANNEL 无可用渠道
isv.USER_NOT_PRIVILEGE_PROVINCE 用户无分省调用权限
isp.USER_NOT_EXIST 用户不存在
isv.GRADE_ILLEGAL 不支持的充值档位
isv.OPERATOR_UNKNOWN 号码归属运营商不支持
isp.OPERATOR_SHUTDOWN 运营商临时封停
isv.OPERATOR_DOWNTIME 运营商月末维护
isp.FLOW_PAYMENT_ERROR 账户扣款失败
isv.RECORD_HAS_EXISTS 已存在该流水号的充值记录
isv.RECORD_NO_FIND 不存在对应流水号的充值记录
本文导读目录