android中实现支付宝账单抓取

1、引言

        对个人开发者来说,支付问题一直是一个痛点,网上也充斥着各种解决方法,但大多都是随着时间的推移逐渐过时,或者就是一些残缺不全的拼凑版本,为了给更多的个人开发者提供便利,我这里为大家提供一期最新的版本,亲测有效,并且大家可以根据源码自行修改成适合自己的版本,如果需要相关的技术支持,可以通过文章末尾提供的联系方式联系我。

2、实现思路

        我这里是通过爬虫定时抓取支付宝账单的方式实现的,而抓取的目标账单是支付宝固定金额收款码,通过设置不同的收款理由进行相同金额的区分,如果需要修改代码只需要修改筛选收款理由的条件就行了,我这里只展示部分关键代码,完整的源码下载地址会放在文章末尾。

3、实现步骤

3.1、登录并开始抓取

        为了安全考虑,我这里不使用账号密码登录的方式,必须用支付宝扫码登录支付宝账单页面后才能使用,具体如下图所示,扫码登录后会进入如下页面,筛选目标是收款理由为123的账单数据,且只筛选最新的10个账单数据,进入账单页面后点击开始按钮就会开始循环抓取数据。

android中实现支付宝账单抓取_第1张图片

3.2、定位账单数据位置

        支付宝每一条账单以及对应的源码,如下图所示,他们的标签的id是有规律的,我们就根据这些id进行账单记录的定位就可以获得账单的原始数据,然后进行解析分离就可以了。

android中实现支付宝账单抓取_第2张图片

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字符串显示在输入框内,如下图所示。

android中实现支付宝账单抓取_第3张图片

4、源码及联系方式

4.1、源码下载地址

        下载地址:code.drjtrtj.xyz/downCode?id=1

4.2、联系方式

        如需技术支持扫码加微信联系

android中实现支付宝账单抓取_第4张图片

你可能感兴趣的:(android)