`
zzc1684
  • 浏览: 1229171 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

淘宝API开发系列--商家的绑定2

阅读更多

在上篇《淘宝API开发系列--开篇概述》介绍了下淘宝API平台的一些基本知识,由于一直有事情忙,就没有及时跟进随笔的更新,本篇继续讨论淘宝API的开发知识,主要介绍商家的绑定操作。上篇我们说过,淘宝就是基于应用程序键来控制用户的访问频率和流量的,另外可以通过应用程序键,让使用者登陆确认,获取到相关的授权码,然后获取SessionKey,作为访问使用者淘宝资源(如买入卖出等私人记录的信息) 

我们再看看SessionKey是如何获取的(下面是淘宝关于正式环境下SessionKey的说明):

正式环境下获取SessionKey

注意:web插件平台应用和web其它应用在正式环境下是同样的获取方法

1、WEB应用

例如回调URL为:http://localhost

访问 http://container.open.taobao.com/container?appkey={appkey},页面会跳转到回调URL,地址类似如下:

http://localhost/?top_appkey={appkey} &top_parameters=xxx&top_session=xxx&top_sign=xxx

回调url上的top_session参数即为SessionKey
2、客户端应用

访问 http://auth.open.taobao.com/?appkey={appkey},即可获得授权码

通过http方式访问 http://container.open.taobao.com/container?authcode={授权码},会得到类似如下的字符串

top_appkey=1142&top_parameters=xxx&top_session=xxx&top_sign=xxx

字符串里面的top_session值即为SessionKey。 

 

由 于本篇文章主要是介绍C/S客户的应用,因此客户端的应用就不能通过回调Url方式获得用户的验证,我们可以通过在Winform中的 WebBrowser控件,显示一个登陆验证及访问确认的操作界面给客户,当客户确认的时候并返回Session Key的内容界面的时候,我们取出Session Key保存并关闭浏览器窗口即可,今后把该SessionKey作为参数来访问相关需要Session Key的API即可。

另外,由于SessionKey的间隔时间比较短,如果API调用间隔时间比较长,那么SessionKey有可能 失效的,但是我们注意到,如果API调用的时候,SesionKey过期 那么会抛出TopException(其中ErrorCode为26或者27是SessionKey过期),里面有关于与TopException的部分 说明如下:

26 Missing Session 缺少SessionKey参数
27 Invalid Session 无效的SessionKey参数

 

 我们先看看具体实现的界面,然后分析其中的实现逻辑吧。

1、首次需要登录的时候,使用一个Winform嵌套一个WebBrowser控件,实现网页登录。 

 

 

 2、商家用户输入账号密码后,确认是否授权程序访问相关资源。

 

 3、确认后生成SessionKey,这个Key正是我们的程序需要的关键内容,因此需要自动获取出来。

 

4、程序拿到该Session Key后,把它作为参数来访问淘宝API获取相关的信息,这里获取交易API的购买信息,需要SessionKey的。

 

 以上就是使用SessionKey的API工作流程界面,我们下面介绍一下相关的实现代码。

1) 主窗体主要的操作代码:

代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->    public partial class Form1 : Form
    {
        private TopJsonRestClient jsonClient;
        private TopContext context;

        private void Form1_Load(object sender, EventArgs e)
        {
            this.winGridView1.ProgressBar = this.toolStripProgressBar1.ProgressBar;
            this.winGridView1.AppendedMenu = this.contextMenuStrip1;

            jsonClient = new TopJsonRestClient("http://gw.api.taobao.com/router/rest", "12033411", "你的密钥");
            
            client = GetProductTopClient("json");
            xmlClient = new TopXmlRestClient("http://gw.api.taobao.com/router/rest", "12033411", "你的密钥"");
        }

        /// <summary>
        /// 判断是否顺利获取SessionKey
        /// </summary>
        /// <returns></returns>
        private bool GetAuthorizeCode()
        {
            string authorizeCode = "";
            FrmAuthorized dlg = new FrmAuthorized();
            if (dlg.ShowDialog() == DialogResult.OK)
            {
                authorizeCode = dlg.AuthrizeCode;
            }
            if (string.IsNullOrEmpty(authorizeCode)) return false;
                        
            context = SysUtils.GetTopContext(authorizeCode);
            if (context == null) return false;

            return true;
        }

        private void BindData()
        {
            if (context == null)
            {
                bool flag = GetAuthorizeCode();
                if (!flag) return;
            }

            string sessionKey = context.SessionKey;

            ////获取用户信息
            //UserGetRequest request = new UserGetRequest();
            //request.Fields = "user_id,nick,sex,created,location,alipay_account,birthday";
            //request.Nick = "wuhuacong";
            //User user = client.Execute(request, new UserJsonParser());
            //MessageBox.Show(ReflectionUtil.GetProperties(user));

            try
            {
                //买入交易
                TradesBoughtGetRequest req = new TradesBoughtGetRequest();
                req.Fields = "tid,title,price,type,iid,seller_nick,buyer_nick,status,orders";
                req.PageNo = 1;
                req.PageSize = 10;
                ResponseList<Trade> rsp = jsonClient.GetBoughtTrades(req, sessionKey);
                this.winGridView1.DataSource = rsp.Content;
                MessageBox.Show(rsp.Content.Count.ToString());

                //卖出交易
                TradesSoldGetRequest soldReq = new TradesSoldGetRequest();
                soldReq.Fields = "tid,title,price,type,iid,seller_nick,buyer_nick,status,orders";
                soldReq.PageNo = 1;
                soldReq.PageSize = 10;
                ResponseList<Trade> soldRsp = jsonClient.GetSoldTrades(soldReq, sessionKey);
                this.winGridView1.DataSource = soldRsp.Content;
                MessageBox.Show(soldRsp.Content.Count.ToString());
            }
            catch (TopException ex)
            {
                if (ex.ErrorCode == 26 || ex.ErrorCode == 27)
                {
                    if (MessageUtil.ShowYesNoAndError("SessionKey过期,您是否需要重新认证") == DialogResult.Yes)
                    {
                        bool flag = GetAuthorizeCode();
                        if (!flag) return;

                        BindData();//重新刷新
                    }
                    else
                    {
                        return;
                    }
                }
            }
        }

        private void btnTest_Click(object sender, EventArgs e)
        {
            BindData();
        }

 

 2、用户登陆的窗体,就是一个form窗体加上一个WebBrowser控件,窗体代码如下:

代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->    public partial class FrmAuthorized : Form
    {
        /// <summary>
        /// 授权码
        /// </summary>
        public string AuthrizeCode = "";
        private string url = "http://open.taobao.com/authorize/?appkey=12033411";

        public FrmAuthorized()
        {
            InitializeComponent();
        }

        /// <summary>
        /// 获取HTML页面内制定Key的Value内容
        /// </summary>
        /// <param name="html"></param>
        /// <param name="key"></param>
        /// <returns></returns>
        public string GetHiddenKeyValue(string html, string key)
        {
            string str = html.Substring(html.IndexOf(key));
            str = str.Substring(str.IndexOf("value") + 7);
            int eindex1 = str.IndexOf("'");
            int eindex2 = str.IndexOf("\"");
            int eindex = eindex2;
            if (eindex1 >= 0 && eindex1 < eindex2)
            {
                eindex = eindex1;
            }
            return str.Substring(0, eindex);
        }

        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            if (e.Url.AbsoluteUri == url)
            {
                AuthrizeCode = GetHiddenKeyValue(this.webBrowser1.DocumentText, "autoInput");
                if (!string.IsNullOrEmpty(AuthrizeCode) && AuthrizeCode.IndexOf("TOP-") >= 0)
                {
                    this.DialogResult = DialogResult.OK;
                    this.Close();
                }
            }
        }

        private void FrmAuthorized_Load(object sender, EventArgs e)
        {
            webBrowser1.Navigate(url);
        }
    }

 

这样我们就可以在首次使用API或者SessionKey失效的时候,让商家用户输入账号密码并确认即可,其他使用即可顺利无阻。

是不是有点意思呢,赶快试试吧,说不定带来一些意想不到的收获及创意哦。

 

http://www.cnblogs.com/wuhuacong/archive/2010/03/26/1697005.html

分享到:
评论

相关推荐

    PHP实例开发源码-淘宝自动发货提货系统 php版.zip

    这通常涉及验证订单信息(如收货地址、商品数量等)、检查库存、生成发货单、调用物流公司的API进行快递单号的生成和绑定等一系列操作。为了保证系统的稳定运行,这些步骤都需要在事务控制下进行,以防止因网络问题...

    淘宝客商城网源码 .rar

    淘宝客商城网源码是一种基于淘宝开放平台API的电子商务网站构建方案,允许开发者或商家构建自己的在线商城,通过推广淘宝联盟的商品赚取佣金。在这个压缩包文件“淘宝客商城网源码.rar”中,可能包含了实现这一功能...

    淘宝UZU站程序源码

    同时,源码中可能还包含了与淘宝API的交互代码,这部分对于理解数据交换和调用规则至关重要。 5. **安全与维护** 完整无错的源码意味着在部署和运行过程中应较少出现故障。但为了保证U站的稳定运行,还需要关注...

    基于PHP的狼群淘宝客 php开源淘宝客程序源码.zip

    淘宝客是一种网络推广模式,通过分享商品链接,帮助淘宝商家推广产品并赚取佣金。这个程序允许用户创建自己的淘宝客网站,自动抓取淘宝网上的商品信息,并提供相应的推广服务。 【详细知识点】: 1. **PHP**:PHP...

    花世界淘宝程序2.8

    4. **API接口集成**:与淘宝网的数据同步是必不可少的,程序需要调用淘宝开放平台(Taobao Open Platform, TOP)提供的API,获取商品信息、订单状态、佣金结算等数据。 5. **安全机制**:考虑到涉及用户的个人信息...

    Shopnc b2b2c 好商城V5 33hao-V5完整源码.zip

    CSV数据导入 √ 支持淘宝/天猫CSV数据导入功能 API开放接口 √ 开放接口供所需人员使用 物流跟踪接口 √ 支持快递100/快递鸟物流数据接口 第三方登入 √ 支持QQ/微信/新浪第三方接口登入 ERP对接 √ 支持其它ERP...

    搭配套餐代码

    2. 熟悉API文档:查阅淘宝API文档,了解可用于搭配套餐的接口及参数。 3. 编写代码:根据文档编写实现搭配套餐的代码,这可能涉及到商品的查询、组合、价格计算等逻辑。 4. 测试与上线:在开发环境中测试代码功能...

    TAE SDK 2.0.0 开发文档 部分docs

    淘宝装修市场(Taobao App Extension,简称TAE)提供了丰富的功能,让商家能够个性化定制自己的店铺页面,提升用户体验。TAE SDK 2.0.0 是一套专为开发者设计的工具集,用于构建和管理这些自定义功能。这个开发文档...

    淘宝客返利App源码2023最新,全网首发

    随着电子商务行业的快速发展,越来越多的商家和个人希望通过各种方式来推广自己的产品和服务,以达到提高销量的目的。在这个背景下,淘宝客(即淘客)模式应运而生,并逐渐成为一种主流的推广手段之一。淘宝客通过...

    电子优惠券领取微信小程序

    在微信小程序中实现电子优惠券功能,需要熟悉小程序的开发环境,包括微信开发者工具的使用、小程序的生命周期管理、数据绑定和网络请求等基础知识。 二、优惠券功能开发 1. 数据模型设计:首先,我们需要设计优惠...

    微信小程序淘客商城

    2. **淘客接口集成**:为了将淘宝商品信息展示在小程序中,开发者需要接入淘宝联盟的API,获取商品列表、优惠券信息以及订单状态等数据。这涉及到网络请求、JSON解析以及数据绑定技术。 3. **优惠券系统**:小程序...

    Android-精仿京东商品详情页效果支持左右滑动上下滑动

    在Android开发中,创建一个高度仿真的京东商品详情页是一个挑战性的任务,涉及到多个技术点和组件的集成。本文将详细解析"Android-精仿京东商品详情页效果支持左右滑动上下滑动"这一项目的核心知识点,帮助开发者...

    淘宝商户端发布商品时,动态生成SKU表格的实例

    在淘宝商户端发布商品时,动态生成SKU(Stock Keeping Unit,库存量单位)表格是一项重要的功能,它能够帮助商家高效地管理商品的多种属性组合,如颜色、尺寸等,为客户提供更精确的选择。本实例主要讲解如何利用...

    订单物流自动查询

    2. **数据绑定**:将用户的订单信息与对应的运单号绑定,确保每次查询都能找到正确的目标。 3. **定时查询**:通过后台定时任务或用户触发,系统定期查询物流信息,并更新到用户界面。 4. **前端展示**:在用户界面...

    基于ssm+Vu的在线购物系统源码数据库.docx

    本项目旨在开发一个高效、安全且易于维护的在线购物系统,以满足用户的需求并提升商家的服务水平。 #### 二、国内外研究现状 目前,国内外对在线购物系统的研发主要集中在提高用户体验、增强安全性以及优化后端...

    微信小程序demo:汇汇生活:电商模板,仿淘宝密码输入框

    2. **网络请求**:了解如何使用`wx.request()`进行API调用,获取服务器数据,如商品信息、用户信息等。 3. **数据绑定**:观察WXML和WXSS如何通过数据绑定实现视图和数据的同步更新。 4. **事件处理**:学习如何在...

    php商城源码

    9. **后台管理**:后台管理系统供商家管理商品、订单、用户等,通常采用PHP MVC框架(如Laravel、Yii或CodeIgniter)来组织代码,实现更高效的开发和维护。 10. **数据分析**:PHP商城源码可能还需要集成数据统计和...

    H5中点击checkbox动态显示table

    在H5页面中,"点击checkbox动态显示table"是一个常见的交互功能,特别是在B2B(Business to Business)场景下,例如模拟淘宝店家定义商品的SKU(Stock Keeping Unit,库存量单位)设置。这个功能允许用户通过勾选...

    ASP.NET一种基于C2C模式的网上购物系统的设计与实现(源代码+论文).zip

    2. **ASP.NET框架**:ASP.NET提供了多种工具和技术,包括ASP.NET MVC、Web Forms、Web API等,用于构建交互式的网页应用。在这个项目中,可能是使用Web Forms或者MVC架构,通过服务器控件、数据绑定和事件处理机制来...

    淘客帝国v5.12完美破解版

    2、增加了自动301跳转设置,选中的话,将自动把所有绑定的域名跳转到主域名。该功能在后台高级设置里。 3、增加了增加网站LOGO后台配置。该功能在后台高级设置内。 4、修复一个偶尔修改后台能造成配置丢失的情况。 5...

Global site tag (gtag.js) - Google Analytics