1、引言
对个人开发者来说,支付问题一直是一个痛点,网上也充斥着各种解决方法,但大多都是随着时间的推移逐渐过时,或者就是一些残缺不全的拼凑版本,为了给更多的个人开发者提供便利,我这里为大家提供一期最新的版本,亲测有效,并且大家可以根据源码自行修改成适合自己的版本,如果需要相关的技术支持,可以通过文章末尾提供的联系方式联系我。
2、实现思路
我这里是通过爬虫定时抓取支付宝账单的方式实现的,而抓取的目标账单是支付宝固定金额收款码,通过设置不同的收款理由进行相同金额的区分,如果需要修改代码只需要修改筛选收款理由的条件就行了,我这里只展示部分关键代码,完整的源码下载地址会放在文章末尾。
3、实现步骤
3.1、登录并开始抓取
为了安全考虑,我这里不使用账号密码登录的方式,必须用支付宝扫码登录支付宝账单页面后才能使用,具体如下图所示,扫码登录后会进入如下页面,筛选目标是收款理由为123的账单数据,且只筛选最新的10个账单数据,进入账单页面后点击开始按钮就会开始循环抓取数据。
3.2、定位账单数据位置
支付宝每一条账单以及对应的源码,如下图所示,他们的标签的id是有规律的,我们就根据这些id进行账单记录的定位就可以获得账单的原始数据,然后进行解析分离就可以了。
3.3、定位代码
通过下方的代码定位到具体的标签,然后继续获取子标签就能获取到每一条账单记录对应的数据。
var id_source='J-item-';
var id;
for(var i=0;i<10;i++){
id=id_source+(i+1);
var tr=document.getElementById(id);
var tds=tr.cells;
}
3.4、原始数据解析
通过js接口把数据传递给java代码进一步解析数据,下面是传递数据的核心代码,包括js代码和java核心代码。
window.Android.setContent(end,order,account);
window.Android.setSend();
private class AndroidAndJs {
/**
* 用于获取账单数据并添加到List集合中
*/
@JavascriptInterface
public void setContent(String used,String order,String account) {
if ((used != null && used.length() > 0) &&
(order != null && order.length() > 0) &&
(account != null && account.length() > 0)) {
int index = order.indexOf("交易号:");
order=order.substring(index+4);
account=account.substring(1);
pay=new ServicePay();
//必须去除空格,js代码中去除空格在这里没效果
order=order.trim();
account=account.trim();
pay.setPay_account(account);
pay.setPay_order(order);
pay.setPay_name("");
pay.setPay_time("");
if (Integer.parseInt(used)==1){
list.clear();
}
list.add(pay);
}
}
/**
* 发送数据到服务器,并发送延迟消息定时刷新网页,避免网页过期
*/
@JavascriptInterface
public void setSend(){
json = new Gson().toJson(list);
// handler.sendEmptyMessage(2);//提交数据
handler.sendEmptyMessage(1);//显示数据
}
}
3.5、显示最终数据
解析后的数据最终会转化为json字符串显示在输入框内,如下图所示。
4、源码及联系方式
4.1、源码下载地址
下载地址:code.drjtrtj.xyz/downCode?id=1
4.2、联系方式
如需技术支持扫码加微信联系文章来源:https://www.toymoban.com/news/detail-828293.html
文章来源地址https://www.toymoban.com/news/detail-828293.html
到了这里,关于android中实现支付宝账单抓取的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!