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来显示出来。
http://www.heilqt.com/topic/5622160642ca1a2d046d6548
qt qml 利用xmlhttprequest 调用有赞api的更多相关文章
- 利用Python调用pastebin.com API自动创建paste
在上一篇文章中,已经实现了模拟pastebin.com的账号登录,并且获取了api_dev_key,这一篇文章主要讲一下调用API创建paste 登录之后,进入API页面,发现网站已经提供了几个API ...
- Qt刷新机制的一些总结(Qt内部画的时候是相当于画在后台一个对象里,然后在刷新的时候调用bitblt统一画,调用window的api并不会影响到后面的那个对象)
前段时间做过一个界面刷新的优化,遇到的坑比较多,在这里做一点点总结吧. 优化的方案是滚动滚动条的时候用截屏的方式代替界面全部刷新,优化完成后,界面在滚动时效率能提升大概一倍,背景介绍完毕. ...
- Qt QML referenceexamples attached Demo hacking
/********************************************************************************************* * Qt ...
- Qt qml 单例模式
Qt qml 单例模式,没什么好说的,看代码吧.单例模式很适合做全局的配置文件. [示例下载] http://download.csdn.net/detail/surfsky/8539313 [以下是 ...
- Qt qml listview 列表视图控件(下拉刷新、上拉分页、滚动轴)
Qt qml listview下拉刷新和上拉分页主要根据contentY来判断.但要加上顶部下拉指示器.滚动条,并封装成可简单调用的组件,着实花了我不少精力:) [先看效果] [功能] 下拉刷新 ...
- qt qml qchart 图表组件
qt qml qchart 图表组件 * Author: Julien Wintz * Created: Thu Feb 13 23:41:59 2014 (+0100) 这玩意是从chart.js迁 ...
- mfc 调用Windows的API函数实现同步异步串口通信(源码)
在工业控制中,工控机(一般都基于Windows平台)经常需要与智能仪表通过串口进行通信.串口通信方便易行,应用广泛. 一般情况下,工控机和各智能仪表通过RS485总线进行通信.RS485的通信方式是半 ...
- Jquery利用ajax调用asp.net webservice的各种数据类型(总结篇)
原文:Jquery利用ajax调用asp.net webservice的各种数据类型(总结篇) 老话说的好:好记心不如烂笔头! 本着这原则,我把最近工作中遇到的jquery利用ajax调用web服务的 ...
- Qt中利用QTime类来控制时间,这里简单介绍一下QTime的成员函数的用法:
Qt中利用QTime类来控制时间,这里简单介绍一下QTime的成员函数的用法: ------------------------------------------------------------ ...
随机推荐
- makefile简单helloworld
最近要在unix系统上开发c++应用程序,但默认情况下unix编译c++程序需要使用makefile.其实makefile语法还是比较简单,看上去有点像ant.废话不说了,直接上helloworld. ...
- 编译ycm库
在安装完YCM之后,重新打开vim还会出现如下的报错信息:ycm_client_support.[so|pyd|dll] and ycm_core.[so|pyd|dll] not detected; ...
- SQL Server索引进阶:第七级,过滤的索引
原文地址: Stairway to SQL Server Indexes: Level 7,Filtered Indexes 本文是SQL Server索引进阶系列(Stairway to SQL S ...
- web 开发规范
好久没整理博文了 啰嗦两句 转载至新浪...... 于在未开启cleartype的情况下,一些中文字体在非偶数字号下的显示效果欠佳,所以一般建议使用12.14.16.18.22px等偶数字号.也就 ...
- 【转载】Qt中的QString,QByteArray,Qchar, char*
先要说的是QString. 之所以把QString单独拿出来,是因为string是很常用的一个数据结构,甚至在很多语言中,比如JavaScript,都是把string作为一种同int等 ...
- JSP——页面三大部分(指令、脚本、动作组件)
一.JSP简介: JSP(Java Server Pages,Java服务器端页面开发技术) JSP可以实现的技术都可以通过Servlet实现,他们本质上是一样的.但JSP设计的目的在于简化表示层的表 ...
- codeforces 622C. Optimal Number Permutation 构造
题目链接 假设始终可以找到一种状态使得值为0, 那么两个1之间需要隔n-2个数, 两个2之间需要隔n-3个数, 两个3之间隔n-4个数. 我们发现两个三可以放到两个1之间, 同理两个5放到两个3之间. ...
- HTML+CSS笔记 CSS笔记集合
HTML+CSS笔记 表格,超链接,图片,表单 涉及内容:表格,超链接,图片,表单 HTML+CSS笔记 CSS入门 涉及内容:简介,优势,语法说明,代码注释,CSS样式位置,不同样式优先级,选择器, ...
- vs2013 cpu占用100%问题
是由于显卡驱动支持wpf有问题 更新驱动或设置里取消自动调节视觉效果 http://support.microsoft.com/kb/2894215
- KVO 的使用和举例
KVO(key-value Observer),通过命名可以联想到,一个监视着监视着键值配对,让一个对象A来监视另一个对象B中的键值,一旦B中的受监视键所对应的值发生了变化,对象A会进入一个回调函数, ...