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的成员函数的用法: ------------------------------------------------------------ ...
随机推荐
- CSS 布局总结——固定宽度布局
固定宽度布局 单列布局 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2Fyd29sZjI0/font/5a6L5L2T/fontsize/400/fil ...
- java 动态获取web应用的部署路径
public static String DEPLOY_PATH = null; static { String CurrentClassFilePath = Constant.class.getRe ...
- Apache OFbiz entity engine源代码解读
简单介绍 近期一直在看Apache OFbiz entity engine的源代码.为了能够更透彻得理解,也由于之前没有看人别人写过分析它的文章,所以决定自己来写一篇. 首先,我提出一个问题,假设你有 ...
- javascript操作HTML元素
操作 HTML 元素 如需从 JavaScript 访问某个 HTML 元素,您可以使用 document.getElementById(id) 方法. 请使用 "id" 属性来标 ...
- BootStrap 智能表单系列 八 表单配置json详解
本章属于该系列的高级部分,将介绍表单中一些列的配置 1.config列的配置: 主要用于控制布局 :config:{autoLayout:true|'1,2,2,4'} true:根据配置项最里层的数 ...
- [NOIP2013提高组] CODEVS 3287 火车运输(MST+LCA)
一开始觉得是网络流..仔细一看应该是最短路,再看数据范围..呵呵不会写...这道题是最大生成树+最近公共祖先.第一次写..表示各种乱.. 因为要求运输货物质量最大,所以路径一定是在最大生成树上的.然后 ...
- MSSQL随机数概率测试
随机概率测试 创建一个表统计create table t_test(ip char(15)) --truncate table t_test; declare @i int ;set @i=0; -- ...
- 国内BI工具/报表工具厂商简介
v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...
- MySQL DBA成长之路
http://blog.51cto.com/zt/579 :GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'm ...
- perl5 第四章 列表和数组变量
第四章 列表和数组变量 by flamephoenix 一.列表二.数组--列表的存贮 1.数组的存取 2.字符串中的方括号和变量替换 3.列表范围 4.数组的输出 5.列表/数组的长度 ...