最近朋友在有赞商城上面开了一个店铺,因为有实体店,一般卖商品后送货上门,但是打票时候老是人工用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来显示出来。

http://www.heilqt.com/topic/5622160642ca1a2d046d6548

qt qml 利用xmlhttprequest 调用有赞api的更多相关文章

  1. 利用Python调用pastebin.com API自动创建paste

    在上一篇文章中,已经实现了模拟pastebin.com的账号登录,并且获取了api_dev_key,这一篇文章主要讲一下调用API创建paste 登录之后,进入API页面,发现网站已经提供了几个API ...

  2. Qt刷新机制的一些总结(Qt内部画的时候是相当于画在后台一个对象里,然后在刷新的时候调用bitblt统一画,调用window的api并不会影响到后面的那个对象)

    前段时间做过一个界面刷新的优化,遇到的坑比较多,在这里做一点点总结吧.     优化的方案是滚动滚动条的时候用截屏的方式代替界面全部刷新,优化完成后,界面在滚动时效率能提升大概一倍,背景介绍完毕.   ...

  3. Qt QML referenceexamples attached Demo hacking

    /********************************************************************************************* * Qt ...

  4. Qt qml 单例模式

    Qt qml 单例模式,没什么好说的,看代码吧.单例模式很适合做全局的配置文件. [示例下载] http://download.csdn.net/detail/surfsky/8539313 [以下是 ...

  5. Qt qml listview 列表视图控件(下拉刷新、上拉分页、滚动轴)

    Qt qml listview下拉刷新和上拉分页主要根据contentY来判断.但要加上顶部下拉指示器.滚动条,并封装成可简单调用的组件,着实花了我不少精力:) [先看效果]    [功能] 下拉刷新 ...

  6. qt qml qchart 图表组件

    qt qml qchart 图表组件 * Author: Julien Wintz * Created: Thu Feb 13 23:41:59 2014 (+0100) 这玩意是从chart.js迁 ...

  7. mfc 调用Windows的API函数实现同步异步串口通信(源码)

    在工业控制中,工控机(一般都基于Windows平台)经常需要与智能仪表通过串口进行通信.串口通信方便易行,应用广泛. 一般情况下,工控机和各智能仪表通过RS485总线进行通信.RS485的通信方式是半 ...

  8. Jquery利用ajax调用asp.net webservice的各种数据类型(总结篇)

    原文:Jquery利用ajax调用asp.net webservice的各种数据类型(总结篇) 老话说的好:好记心不如烂笔头! 本着这原则,我把最近工作中遇到的jquery利用ajax调用web服务的 ...

  9. Qt中利用QTime类来控制时间,这里简单介绍一下QTime的成员函数的用法:

    Qt中利用QTime类来控制时间,这里简单介绍一下QTime的成员函数的用法: ------------------------------------------------------------ ...

随机推荐

  1. The Highest Mark(01背包)

    The Highest Mark Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Other ...

  2. 物理DG主备库切换时遇到ORA-16139: media recovery required错误

    在物理DG主备库切换时遇到ORA-16139: media recovery required错误 SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRI ...

  3. Android 开发UI牛博[转]

    Android 新兴的UI模式——侧边导航栏 侧边导航栏也就是大家熟知的SliddingMenu,英文也叫Fly-In App Menu.Side Navigation等.当然谷歌现在已经推出类似这个 ...

  4. spring AOP简单入门

    AOP(aspect oriented programming)面向切面编程. 大致意思是在方法的执行过程中织入其他要执行的方法. 项目结构图 先介绍一下通过代理的方式实现aop,几个文件和上一篇一样 ...

  5. 读书笔记 SQL 事务理解

    事务的ACID属性 Atomicity 原子性 每个事务作为原子单元工作(即不可以再拆分),也就是说所有数据库变动事务,要么成功要么不成功. SQL Server把每个DML或者 DDL命令都当做一个 ...

  6. 转-——推荐几个web中常用的一些js图表插件 - zccst

    http://www.tuicool.com/articles/bqq2Qn 作者:zccst 我自己用过fusioncharts和highchart. jQuery插件有: TufteGraph f ...

  7. Unable to locate appropriate constructor on class异常

    一般出现Unable to locate appropriate constructor on class这个异常,都是实体类的带参数的构造方法和使用查询语句出现偏差,两个地方的代码如下: 一般都是第 ...

  8. 过程需要类型为 'ntext/nchar/nvarchar' 的参数 '@statement'

    declare   @Sql Nvarchar(4000)   SET @Sql = ' select * from a_table '要么这样, 要不然在执行存储过程变量前加N'' ALTER PR ...

  9. SubLime2 win + mac keygen

    参考 http://www.cnblogs.com/snandy/archive/2013/05/08/3068059.html http://www.freebuf.com/tools/6434.h ...

  10. IMP-00008: unrecognized statement in the export file: string的问题分析

    分类: Linux 上周需要将oracle10g中的某一个用户下的对象导入到oracle11g中去.用exp在10g的数据库服务器上导出的dump文件,再用imp在11g的数据库服务器上将dump文件 ...