qt qml 应用xmlhttprequest 挪用有赞api

近来朋侪在有赞商城上面开了一个商号,由于有实体店,平常卖商品后送货上门,然则打票时刻总是人工用world文档人工复制黏贴定单打印小票,
所以就找我帮助做一个软件特地打印小票的,就研究起来挪用有赞第三方api来着,本篇重要引见如何用qml中的xmlhttprequest来完成http要求协定,就以挪用有赞商城api的查询定单接口为例:kdt.trades.sold.get;

function searchTrades(startDate,endDate){
        tradesModel.clear();//清空列表
        var request=new XMLHttpRequest();
        var data;
        
        //监听onreadystatechange事宜
        request.onreadystatechange=function(){
            if(request.readyState===request.DONE){
                data=JSON.parse(request.responseText.toString());
                console.log(request.responseText.toString())
                for(var i=0;i<data.response.trades.length;i++){

                    var defference=true;
                    for(var index=0;index<tradesModel.count;index++){
                        if(tradesModel.get(index).tid===data.response.trades[i].tid){
                            defference=false;
                        }
                    }
                    if(defference){
                        var str="";
                        var orders=data.response.trades[i].orders;
                        for(var a=0;a<orders.length;a++){
                            str+=(" "+orders[a].title+"   数目:"+orders[a].num+"  单价:"+orders[a].price+"元"+"\n\n\n")
                        }

                        var sum=0.0;
                        for(var a=0;a<orders.length;a++){
                            sum+=Number(orders[a].total_fee);
                        }

                        var pay_type;
                        if(data.response.trades[i].pay_type==="WEIXIN"){
                            pay_type="微信付出";
                        }
                        else if(data.response.trades[i].pay_type==="ALIPAY "){
                            pay_type="付出宝付出";
                        }
                        else if(data.response.trades[i].pay_type==="BANKCARDPAY "){
                            pay_type="银行卡付出";
                        }
                        else if(data.response.trades[i].pay_type==="PEERPAY "){
                            pay_type="代付";
                        }
                        else if(data.response.trades[i].pay_type==="CODPAY "){
                            pay_type="货到付款";
                        }
                        else if(data.response.trades[i].pay_type==="BAIDUPAY "){
                            pay_type="百度钱包付出";
                        }
                        else if(data.response.trades[i].pay_type==="PRESENTTAKE "){
                            pay_type="直接领取赠品";
                        }
                        else if(data.response.trades[i].pay_type==="COUPONPAY"){
                            pay_type="优惠券/码全额抵扣";
                        }
                        else if(data.response.trades[i].pay_type==="BULKPURCHASE"){
                            pay_type="来自分销商的采购";
                        }
                        else{
                            pay_type="未知范例"
                        }

                        str+="  敷衍:"+sum.toFixed(2)+"元\n\n"+
                                "  定单建立日期:"+data.response.trades[i].created+"\n\n"+
                                "付款范例:"+pay_type;

                        tradesModel.append({"tid":data.response.trades[i].tid,
                                           "orders":data.response.trades[i].orders,
                                           "ordersContent":str,
                                           "trade":data.response.trades[i],
                                           "selected":false});
                        str=""
                    }
                }
            }
        }

        //params
        var startCreated=startDate;  
        var endCreadted=endDate;
        
        var secret="your app secret";
        var appid="your app id";
        var currentDate=new Date();
        var method="kdt.trades.sold.get";//挪用第三方接口函数
        
        var dateString=currentDate.getFullYear().toString()+"-"+
                (currentDate.getMonth()+1<10?"0"+currentDate.getMonth()+1:currentDate.getMonth()+1)+"-"+
                (currentDate.getDate()<10?"0"+currentDate.getDate():currentDate.getDate())+" "+
                (currentDate.getHours()<10?"0"+currentDate.getHours():currentDate.getHours())+":"+
                (currentDate.getMinutes()<10?"0"+currentDate.getMinutes():currentDate.getMinutes())+":"+
                (currentDate.getSeconds()<10?"0"+currentDate.getSeconds():currentDate.getSeconds());

        //md5验证码
        var md5=Qt.md5(secret+"app_id"+appid+"end_created"+endCreadted+"formatjson"+"method"
                       +method+"sign_methodmd5"+"start_created"+startCreated+"timestamp"+dateString+"v1.0"+secret
                       );
                       
        var url ="https://open.koudaitong.com/api/entry?sign="+md5+"&"+"timestamp="+
                dateString+"&v=1.0&app_id="+appid+"&method="+
                method+"&sign_method=md5&format=json"+
                "&start_created="+startCreated+
                "&end_created="+endCreadted;
        request.open("GET",url);
        request.send();
    }

函数挪用后返返来的是一个Json文本,qml中异常友爱的读取这些信息,而且举行处置惩罚,我直接用Listmodel来寄存json中的定单列表,用Listviewl来显示出来。

结果截图:

《qt qml 应用xmlhttprequest 挪用有赞api》

    原文作者:tommego
    原文地址: https://segmentfault.com/a/1190000005857337
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞