1、引言
??????? 對(duì)個(gè)人開發(fā)者來說,支付問題一直是一個(gè)痛點(diǎn),網(wǎng)上也充斥著各種解決方法,但大多都是隨著時(shí)間的推移逐漸過時(shí),或者就是一些殘缺不全的拼湊版本,為了給更多的個(gè)人開發(fā)者提供便利,我這里為大家提供一期最新的版本,親測(cè)有效,并且大家可以根據(jù)源碼自行修改成適合自己的版本,如果需要相關(guān)的技術(shù)支持,可以通過文章末尾提供的聯(lián)系方式聯(lián)系我。
2、實(shí)現(xiàn)思路
??????? 我這里是通過爬蟲定時(shí)抓取支付寶賬單的方式實(shí)現(xiàn)的,而抓取的目標(biāo)賬單是支付寶固定金額收款碼,通過設(shè)置不同的收款理由進(jìn)行相同金額的區(qū)分,如果需要修改代碼只需要修改篩選收款理由的條件就行了,我這里只展示部分關(guān)鍵代碼,完整的源碼下載地址會(huì)放在文章末尾。
3、實(shí)現(xiàn)步驟
3.1、登錄并開始抓取
??????? 為了安全考慮,我這里不使用賬號(hào)密碼登錄的方式,必須用支付寶掃碼登錄支付寶賬單頁面后才能使用,具體如下圖所示,掃碼登錄后會(huì)進(jìn)入如下頁面,篩選目標(biāo)是收款理由為123的賬單數(shù)據(jù),且只篩選最新的10個(gè)賬單數(shù)據(jù),進(jìn)入賬單頁面后點(diǎn)擊開始按鈕就會(huì)開始循環(huán)抓取數(shù)據(jù)。
3.2、定位賬單數(shù)據(jù)位置
??????? 支付寶每一條賬單以及對(duì)應(yīng)的源碼,如下圖所示,他們的標(biāo)簽的id是有規(guī)律的,我們就根據(jù)這些id進(jìn)行賬單記錄的定位就可以獲得賬單的原始數(shù)據(jù),然后進(jìn)行解析分離就可以了。
3.3、定位代碼
??????? 通過下方的代碼定位到具體的標(biāo)簽,然后繼續(xù)獲取子標(biāo)簽就能獲取到每一條賬單記錄對(duì)應(yīng)的數(shù)據(jù)。
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、原始數(shù)據(jù)解析
??????? 通過js接口把數(shù)據(jù)傳遞給java代碼進(jìn)一步解析數(shù)據(jù),下面是傳遞數(shù)據(jù)的核心代碼,包括js代碼和java核心代碼。
window.Android.setContent(end,order,account);
window.Android.setSend();
private class AndroidAndJs {
/**
* 用于獲取賬單數(shù)據(jù)并添加到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("交易號(hào):");
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);
}
}
/**
* 發(fā)送數(shù)據(jù)到服務(wù)器,并發(fā)送延遲消息定時(shí)刷新網(wǎng)頁,避免網(wǎng)頁過期
*/
@JavascriptInterface
public void setSend(){
json = new Gson().toJson(list);
// handler.sendEmptyMessage(2);//提交數(shù)據(jù)
handler.sendEmptyMessage(1);//顯示數(shù)據(jù)
}
}
3.5、顯示最終數(shù)據(jù)
??????? 解析后的數(shù)據(jù)最終會(huì)轉(zhuǎn)化為json字符串顯示在輸入框內(nèi),如下圖所示。
4、源碼及聯(lián)系方式
4.1、源碼下載地址
??????? 下載地址:code.drjtrtj.xyz/downCode?id=1
4.2、聯(lián)系方式
??????? 如需技術(shù)支持掃碼加微信聯(lián)系文章來源:http://www.zghlxwxcb.cn/news/detail-828293.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-828293.html
到了這里,關(guān)于android中實(shí)現(xiàn)支付寶賬單抓取的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!