华为ePay接入总结 用ContentObserver获取验证码
来源:互联网 发布:管理决策软件 编辑:程序博客网 时间:2024/06/07 17:24
这次接入主要由收发报文和读取短信构成,收发报文中包含了HmacSHA256的验证
简单粘贴一下用到的代码
读取短信
HuaweiSdkHandler handler = new HuaweiSdkHandler(callback,context,number);smsObsever = new SmsObsever(context,handler,smsNumber);context.getContentResolver().registerContentObserver(SMS_INBOX,true,smsObsever);
class SmsObsever extends ContentObserver { private Context context; private String number = "+27820097640"; private Handler handler; private boolean wasCalled = false; private Uri SMS_INBOX = Uri.parse("content://sms/"); public void getSmsFromPhone() { ContentResolver cr =context.getContentResolver(); String[] projection = new String[] { "body", "address" };//"_id", "address", "person",, "date", "type String where = "date > " + (System.currentTimeMillis() - 2 * 1000);; Cursor cur = cr.query(SMS_INBOX, projection, where, null, "date desc"); if (null == cur) { return; } if (cur.moveToNext()) { String body = cur.getString(cur.getColumnIndex("body")); //这里我是要获取自己短信服务号码中的验证码~~ Pattern pattern = Pattern.compile("[0-9]{6}"); Matcher matcher = pattern.matcher(body); if (matcher.find()) { //存储号码 处理回调 Message message = new Message(); Bundle bundle = new Bundle(); bundle.putString("valid",matcher.group(0)); message.setData(bundle); handler.handleMessage(message); } } } public SmsObsever(Context context,Handler mhandler,String smsNumber) { super(mhandler); number = smsNumber; handler=mhandler; this.context=context; } @Override public void onChange(boolean selfChange) { super.onChange(selfChange); //提取验证码 if(context==null||number==null) return; getSmsFromPhone(); }}
获取校验码
private String getSignture(String Body){ String packetBody = Body; String key = appKey+"&"+appSecrect+"&"+requestID; try { SecretKeySpec signKey = new SecretKeySpec(key.getBytes(),"HmacSHA256"); Mac mac = Mac.getInstance("HmacSHA256"); mac.init(signKey); return "\""+ Base64.encodeToString(mac.doFinal(packetBody.getBytes()),0).trim()+"\""; } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (InvalidKeyException e) { e.printStackTrace(); } return null;}
阅读全文
0 0
- 华为ePay接入总结 用ContentObserver获取验证码
- 通过ContentObserver自动获取短信验证码
- Android 自动获取验证码 两种方式BroadcastReceiver及ContentObserver总结
- 安卓观察者ContentObserver模式用正则获取短信验证码
- 【android】利用ContentObserver监听短信来获取验证码
- 监听短信获取验证码——ContentObserver的使用
- 安卓ContentObserver模式获取短信用正则自动填充验证码
- Android ContentObserver监听短信提取验证码
- Android ContentObserver实现验证码自动填入
- 用ContentObserver内容观察者写了一个自动填写验证码
- 自动填充短信验证码(使用ContentObserver)
- 自动填充短信验证码(使用ContentObserver)
- 自动填充短信验证码(使用ContentObserver)
- 自动填充短信验证码(使用ContentObserver)
- Android 应用中使用ContentObserver自动填写短信验证码
- 短信验证码(通过ContentObserver)实时填写
- 短信验证码自动填写认知之ContentObserver详解
- 安卓ContentObserver实现验证码自动补全
- 详解 iOS SDK 兼容性引导
- 454. 4Sum II
- 装载、链接与库——系统调用
- RZ、NRZ、NRZI、曼彻斯特编码
- linux中的 STDIN_FILENO,STDOUT_FILENO和STDERR_FILENO
- 华为ePay接入总结 用ContentObserver获取验证码
- Ubuntu下apt-get命令详解
- 窗体部件效果之动态显示窗体
- iOS常用关键字(assign, copy,retain等)的使用与区别
- Android4.4-settings系统动画时间修改
- css知识点总结(1)
- Myeclipse、eclipse安装lombok
- ubuntu:Reading package lists... Error!
- 安卓中用show()和hide()方法来代替转跳fragment的replace()方法