淘宝登录跳转支付宝获取订单
编辑时间:2017-05-08 作者:xfwsj 浏览量:36697 来源:carl论坛

carl论坛别人分享的。

直接跑是不行的,你们看着改吧,我这是用了现成的cookie,所以免登陆了,你们要自己先把登录给做了才行

import win.ui;
import thread;
import uiToolkit;
/*DSG{{*/
mainForm = win.form(text="aardio form";right=759;bottom=469)
mainForm.add(
button={cls="button";text="button";left=32;top=24;right=144;bottom=112;z=4};
custom={cls="custom";text="custom";left=512;top=240;right=752;bottom=448;edge=1;transparent=1;z=5};
edit={cls="edit";left=14;top=240;right=504;bottom=455;db=1;dl=1;dr=1;dt=1;edge=1;multiline=1;z=1};
fJG={cls="edit";text="15";left=232;top=64;right=360;bottom=88;db=1;dr=1;edge=1;multiline=1;z=7};
fZHID={cls="edit";left=232;top=32;right=360;bottom=56;db=1;dr=1;edge=1;multiline=1;z=3};
faewfvads={cls="static";text="间隔:";left=152;top=64;right=224;bottom=88;align="right";center=1;db=1;dr=1;transparent=1;z=6};
static18={cls="static";text="用户名";left=152;top=32;right=224;bottom=56;align="right";center=1;db=1;dr=1;transparent=1;z=2}
)
/*}}*/
 
io.open()
mainForm.button.oncommand = function(id,event){
    //mainForm.msgbox( mainForm.button.text );
    mainForm.button.disabled = true;
    mainForm.edit.text = "";
    thread.invoke( 
        function(args){
            import win; 
            import uiToolkit;
            import inet.http;
            import string;
            import math;
            import inet.url;
            import table;
            import io;
            import mysql.client;
            import time;
            import thread;
            import access;
            import process;
            import winex;
            import winex.key;
            import winex.mouse;
            import koko.tb_send;
            import koko.sqlKit;
             
            if(args.fJG == null){
                args.fJG = 15;
            }
             
            koko.tb_send.init(args)
             
            doSQL = koko.tb_send.doSQL;
             
            math.randomize();
            ut = uiToolkit;
            p1 = ut.p1;
             
            http1 = inet.http("Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:49.0) Gecko/20100101 Firefox/49.0");
            http1.setTimeouts(1000 * 5, 1000 * 5, 1000 * 5);
             
             
            initWB = function(){
                wb, win1 = ut.initWB(,,,,,)
                 
            }
             
            initWB();
             
            wininet := raw.loadDll("Wininet.dll") 
            //var ret,szCookie = wininet.InternetSetCookieEx("http://www.alimama.com",null,,0x00002000/*_INTERNET_COOKIE_HTTPONLY*/,null);
             
             
            登录 = function(){
                 
                //win.delay(1000*5);
                win1.show();
                 
                while(true){
                    //进入支付宝
                    //win.delay(1000*5)
                    var isError = false;
                     
                    var rs = {};
                    koko.tb_send.获取cookie();
                    var a1 = string.split(koko.tb_send.tb_cookie, '<; >');
                     
                    for(k,v in a1){
                        a2 = string.split(v, '=');
                        rs[a2[1]] = a2[2];
                        wininet.InternetSetCookieEx("http://taobao.com",null,a2[1] ++ "=" ++ a2[2],16/*_INTERNET_COOKIE_HTTPONLY*/,null);
                        //inet.setCookie("http://taobao.com", a2[1] ++ "=" ++ a2[2])
                         
                    }
                    //console.dumpJson(rs)
                     
                     
                     
                     
                    try{
                        win.delay(1000)
                        console.debug("login 我的淘宝")
                         
                        wb.go("https://i.taobao.com/my_taobao.htm");
                        wb.wait(, 1000);
                        /*
console.log("===", wb.document.cookie)
                        console.log("===",koko.tb_send.tb_cookie)
*/
                    }catch(e){
                        isError = true;
                        login();
                    }
                    if(isError){
                        p1("我的淘宝进入异常, 等10秒")
                        sleep(1000 * 10)
                        continue ;
                    }
                     
                    //wb.go("https://i.taobao.com/my_taobao.htm");
                    //win.delay(1000*1000)
                    eles = wb.waitQueryEles({innerText = "^我的支付宝$";tagName = "a"});
                    eles[1].click();
                     
                     
                    //是否进入支付宝
                    eles = wb.waitQueryEles({innerText="账户名";className = "<@title pane-title@>"},1000 * 10);
                    if(eles == null or #eles == 0){
                        //失败
                        p1("进入支付宝 失败")
                        continue ;
                    }else{
                         
                        //交易记录
                        eles = wb.waitQueryEles({innerText = "^交易管理$"}, 1000 * 10);
                        if(!eles){
                            continue ;
                        }
                        eles[1].click();
                        wb.wait(, 1000* 5);
                         
                     
                        break ;
                    }
                }
                 
                //wb = uiToolkit.initWB(,,,,,)
                //    
                 
            }
             
            getDatas = function(){
                var u1 = //https://consumeprod.alipay.com/record/advanced.htm
                var d1 = //beginDate=%s&endDate=%s&pageNum=%s
                var d1_2 = //&beginTime=00%3A00&endTime=24%3A00&dateRange=customDate&status=success&keyword=bizNo&keyValue=&dateType=createDate&minAmount=&maxAmount=&fundFlow=in&tradeType=ALL&categoryId=
                 
                 
                 
                var beginDateTime = time();
                beginDateTime.addday(-1)
                var beginDate = tostring(beginDateTime, "%Y.%m.%d","chs");
                 
                var parentEle = wb.waitEle("tradeRecordsIndex");
                var dataArr = {};
                for(pageI=1;50;1){
                    var d2 = string.format(d1, beginDate, tostring(time(), "%Y.%m.%d","chs"), pageI) ++ d1_2;
                    //console.debug("d2", d2);
                    var h1;
                    while(true){
                        //console.debug("u1", u1);
                        console.debug("d2", d2);
                        h1 = http1.post(u1, d2);
                        if(!h1){
                            continue ;
                        }
                        string.save("c:\h_"++pageI++".txt", h1)
                        //找列表
                        h1 = ut.toUTF(h1);
                        if(! string.indexOf(h1, "商户订单号")){
                            console.debug("需要重登");
                            string.save("c:\error_"++pageI++".txt", h1);
                             
                            登录();
                             
                        }else {
                            break ;
                        }
                         
                    }
                    console.debug("发包over" );
                    var g1 = //<@<td class="name">@>.*?<@class="consume-title"@>*?<@<a@>.*?<@>@>(.*?)<@</a>@>.*?<@流水号:@>(.*?)<@</p>@>.*?<@<td class="other">@>.*?<@ame">@>(.*?)<@</p>@>.*?<@amount-pay">+ @>(.*?)<@</span>@>
                    var s1 = string.match(h1, g1);
                    if(s1 == null){
                        break ;
                    }
                    for(备注1, tradeNo, 对方1, amount in string.gmatch(h1, g1)){
                        var o1 = {};
                        //ele = wb.queryEles( parent = tr1;className = "^tradeNo";tagName = "td")[1];
                        //o1.tradeNo = ele.innerText;
                        //流水号:20161227119443288051
                         
                        o1.备注 = string.unescape(string.trim(备注1));
                        o1.对方 = string.unescape(string.trim(对方1));
                        o1.tradeNo = tradeNo //string.match(o1.amount, "<@流水号:@>(.*)");
                         
                        //ele = wb.queryEles( parent = tr1;className = "^amount";tagName = "td")[1];
                        //o1.amount = ele.innerText;
                        o1.amount = amount//string.match(o1.amount, "[+-] (.*)");
                         
                        table.push(dataArr, o1);
                    }
                     
                     
                }
                 
                 
                 
                return dataArr; 
                 
                 
                 
                 
            }
            写入数据库 = function(d1){
                var o1 = doSQL("select * from tk_zfb_order where order_sn = '" ++ d1.tradeNo ++"'", "q");
                if(o1){
                    //有了
                }else {
                    //insert
                    var s1 = string.format("insert tk_zfb_order(order_sn, amount, comments, target_name) values('%s', %s, '%s', '%s')", d1.tradeNo, d1.amount, d1.备注, d1.对方);
                    doSQL(s1);
                }
                 
            }
             
             
             
            main = function(){
                var ds1 = getDatas();
                p1("订单数:" ++ #ds1);
                //同步到数据库里
                for(k,v in ds1){
                    console.debug(v.tradeNo ++ " " ++ v.amount ++ " " ++ v.备注  ++ " " ++  v.对方);
                    写入数据库(v);
                }
                 
                 
            }
            登录()
            while(true){
                main();
                p1("等待" ++ args.fJG ++ "秒")
                win.delay(1000 * args.fJG);
            }
             
             
        },{
             
            fZHID = mainForm.fZHID.text;
            fJG = tonumber(mainForm.fJG.text);
        }
    )
     
}
 
 
import thread.command;
var listener = thread.command();
listener.close = function( ... ){
    ut.myKill();
    win.quitMessage();
     
     
} 
ut = uiToolkit;
ut.openConfig(mainForm);
ut.initP1(mainForm);
ut.autoCloseWebMsgBox();
mainForm.show();
if(_CMDLINE and _CMDLINE != ""){
    mainForm.button.oncommand();
}
return win.loopMessage();


来说两句吧