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的成员函数的用法: ------------------------------------------------------------ ...
随机推荐
- [置顶] ※数据结构※→☆线性表结构(list)☆============单向链表结构(list single)(二)
单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始:链表是使用指针进行构造的列表:又称为结点列表,因为链表是由一个个结点组装起来的:其中每个结点都有指 ...
- UVA122-Trees on the level(链二叉树)
Trees on the level Time Limit: 3000MS Memory Limit: Unknown 64bit IO Format: %lld & %llu Sub ...
- 打开固定文件的pr_debug
驱动中pr_debug定义在kernel/include/linux/printk.h /* If you are writing a driver, please usedev_dbg instea ...
- 生产环境提升rman备份速度----启动块跟踪
生产环境提升rman备份速度----启动块跟踪 [环境] AIX(5300-08).oracle10g(10.2.0.1.0-64bit) [目标] 因为生产环境数据量较大,欲加快rman备份的速度 ...
- codeforces #261 C题 Pashmak and Buses(瞎搞)
题目地址:http://codeforces.com/contest/459/problem/C C. Pashmak and Buses time limit per test 1 second m ...
- 一步一步学c#(六):数组
数组 简单数组 如果需要使用同一个类型的多个对象,就可以使用数组.数组是一种数据结构,它可以包含同一类型的多个元素. 数组声明:int[] myArray 使用new运算符,指定数组中元素的类型和数量 ...
- JS图表组件 highcharts 简单的介绍
把highcharts拿来做个简单的介绍,希望更多的朋友可以用到这个用来做图表的js插件. preparation Highcharts Highcharts是一个制作图表的纯Javascript类库 ...
- MYSQL—加写锁,加读锁,解锁
链接地址:http://blog.sina.com.cn/s/blog_7fa2bcf50101j1lu.html 表级锁: 加写锁: lock tables table_n ...
- input file 模拟
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- c++ 简单的词法分析
scanner.h #include<iostream> #include<fstream> #include<string> using namespace st ...