天翼短信发送三方接口对接

来源:互联网 发布:知其雄守其雌曾国藩 编辑:程序博客网 时间:2024/05/22 11:57

由于最近家里有些事情,推迟了一些时间编写,还请各位博友见谅,最近工作上碰到一个新的需求就是,天翼短信验证码发送,以及模板短信的功能。为了让大家今后遇到了,少走弯路今天我们就先来谈谈天翼短信验证码功能。

首先我们需要进入天翼开发平台查看文档,一下就是链接地址http://open.189.cn/index.php?m=api&c=index&a=show&id=667#1。

然后下载demo,这是demo链接地址http://open.189.cn/index.php?m=api&c=index&a=show&id=498

通过这个地址我们可以看到短信验证码下发分为三步:

1.获取令牌参数

2.获取信任码

3.就是重中之重了获取短信验证码

当然完成这三步,你一定会很开心,我完成这个功能了,手机能收到短信了,也返回成功信息了,当然我这里说的是成功获取成功的返回值的情况,如果连返回值都不正确,那么不好意思可能是你前面还没写对。再去检查检查,这里我的建议是一步一步来做。每个都获取正确以后,应该是没有问题的。如果出来了不要高兴的太早你只完成了一半。

“什么才一半,你在逗我?我验证码都接收到了,json返回的也是正确的,你居然说我才完成了一半,骗人的吧?”没骗你哦,

你一定没看到这句话,这是回调url,即当你对天翼发送请求后,天翼会对你请求的手机号发送验证码。并且,记住是并且,我这里是对第一次弄这个,而且语文不是很好的同学说的,大家不要计较,因为我第一次弄就在这栽了好久。天翼会对你请求的手机号发送验证码,然后对你之前填的url传参数 即为 短信验证码中的验证码和验证码对应的 序列号。这里的序列号与成功后获取的序列号是同一个,也就是你要通过序列号去查询验证码 并与手机验证码相比对。至于怎么比对同学们开发你们的思维吧。

下面是我获取令牌和信任码的代码 有需要的可以看一看

/**
* 发送手机验证码

* @param phone
* @return
* @throws Exception
*/
public static String SendMobilePhoneVerificationCode(String phone) {
String _captchas = "";
try {
Properties _properties = PropertiesUtil.getProperties("/parms.properties");
String _appid = _properties.getProperty("APPID").toString();// 应用编号
String _appsecret = _properties.getProperty("APPSECRET").toString();// 应用密匙
String _url = _properties.getProperty("URL").toString();// 应用密匙
String _postUrl = _properties.getProperty("POSTURL").toString();// 提交地址
String _postEntity = _properties.getProperty("POSTENTITY").toString();// 提交参数

/*String _postEntity =
"grant_type=" + "client_credentials"
+ "&app_id=" + _appid
+ "&app_secret=" + _appsecret;*/

Date _date = new Date();
SimpleDateFormat _sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String _timestamp = _sdf.format(_date);
System.err.println(_timestamp);


// 获取通行证令牌
String _access_token = new JSONObject(HttpInvoker.httpPost(_postUrl, null, _postEntity)).get("access_token").toString();

// 获取验证信任码
TreeMap<String, String> _tokenparamsmap = new TreeMap<String, String>();
_tokenparamsmap.put("app_id", _appid);
_tokenparamsmap.put("access_token", _access_token);
_tokenparamsmap.put("timestamp", _timestamp);

String getUrl =
"http://api.189.cn/v2/dm/randcode/token?app_id=" + _appid
+ "&access_token=" + _access_token
+ "&timestamp=" + _timestamp
+ "&sign=" + ParamsSign.value(_tokenparamsmap, _appsecret);

String _token = new JSONObject(HttpInvoker.httpGet(getUrl)).get("token").toString();


// 获取手机验证码
TreeMap<String, String> _captchasparamsmap = new TreeMap<String, String>();
_captchasparamsmap.put("app_id", _appid);
_captchasparamsmap.put("access_token", _access_token);
_captchasparamsmap.put("token", _token);
_captchasparamsmap.put("phone", phone);
_captchasparamsmap.put("url", _url + "?phone=" + phone);// 由开发者实现的验证码通知接口
_captchasparamsmap.put("exp_time", "2");
_captchasparamsmap.put("timestamp", _timestamp);

_postUrl = "http://api.189.cn/v2/dm/randcode/send";
_postEntity =
"app_id=" + _appid
+ "&access_token=" + _access_token
+ "&token=" + _token
+ "&phone=" + phone
+ "&url=" + _url + "?phone=" + phone// 由开发者实现的验证码通知接口
+ "&exp_time=" + "2"
+ "&timestamp=" + _timestamp
+ "&sign=" + ParamsSign.value(_captchasparamsmap, _appsecret);

_captchas = HttpInvoker.httpPost(_postUrl, null, _postEntity);
} catch (Exception e) {
// TODO: handle exception
_captchas = "Self Application Verification Exception...";//自应用验证异常...
}
return _captchas;
}

本文为作者亲身经历。拿出与同学们共同分享,希望大家珍惜,如有需要转载,请注明作者和出处谢谢。


1 0
原创粉丝点击