1. 首先是授权

    接口文档说明了:授权需要四个参数:合作伙伴ID,回调地址,生成加密签名,时间戳。
    有了这四个参数,我们要把拿到的返回参数code还有shop_id存进数据库,code很重要,是用来后面更新token用的。
  2. 如何生成sign

使用加密算法HmacSHA256计算

        /// 加密算法HmacSHA256/// </summary>/// <param name="secret"></param>/// <param name="signKey"></param>/// <returns></returns>public static string HmacSHA256(string secret, string signKey){string signRet = string.Empty;using (HMACSHA256 mac = new HMACSHA256(Encoding.UTF8.GetBytes(signKey))){byte[] hash = mac.ComputeHash(Encoding.UTF8.GetBytes(secret));signRet = ToHexString(hash);}return signRet;}/// <summary>/// byte[]转16进制格式string/// </summary>public static string ToHexString(byte[] bytes){string hexString = string.Empty;if (bytes != null){StringBuilder strB = new StringBuilder();foreach (byte b in bytes){strB.AppendFormat("{0:x2}", b);}hexString = strB.ToString();}return hexString;}

返回参数会在回调地址上,拿到返回参数后,用来生成token
3.首次生成token

/// <summary>/// 首次获取Token/// </summary>/// <param name="code"></param>/// <param name="partner_id"></param>/// <param name="partner_key"></param>/// <param name="shop_id"></param>/// <returns></returns>public ReturnMeg get_token(string code, int partner_id, string partner_key, int shop_id){long timest = Gettimest();var bodto = new{code = code,partner_id = partner_id,shop_id = shop_id,};string body = JsonConvert.SerializeObject(bodto);var host = System.Configuration.ConfigurationManager.AppSettings["ShpoeeUrl"];var path2 = "/api/v2/auth/token/get";var base_string = $"{partner_id}{path2}{timest}";var sign = HmacSHA256(base_string, partner_key);var url = $"{host}{path2}?sign={sign}&partner_id={partner_id}&timestamp={timest}&|";string sd = Tool.HttpPostJSONs(url, body);JObject tokendata = (JObject)JsonConvert.DeserializeObject(sd);if (tokendata["error"].ToString() != ""){return new ReturnMeg{State = ReturnState.error,Msg = "授权失败"};}Shopee s = new Shopee();s.Access_token = tokendata["access_token"].ToString();s.Refresh_token = tokendata["refresh_token"].ToString();int expire_in = MsParse.ToInt32(tokendata["expire_in"].ToString());//有效时间s.GetTokenTime = DateTime.Now.AddSeconds((expire_in - 600));var path = "/api/v2/shop/get_shop_info";var redirect_url = setup.PcUserUrl + "/SQ/Index";var base_strings = $"{partner_id}{path}{timest}{s.Access_token}{shop_id}";var signs = HmacSHA256(base_strings, partner_key);string strData = $"{partner_key}{redirect_url}";string aaa = ($"{host}{path}?shop_id={shop_id}&partner_id={partner_id}&access_token={s.Access_token}&sign={signs}&timestamp={timest}");string back = Tool.HttpGet(aaa);if (back == ""){return new ReturnMeg{State = ReturnState.error,Msg = "获取店铺信息失败"};}JObject joP = (JObject)JsonConvert.DeserializeObject(back);s.ShopName = joP["shop_name"].ToString();s.region = joP["region"].ToString();s.ShopState = joP["status"].ToString();s.auth_time = StampToDateTime(joP["auth_time"].ToString());s.expire_time = StampToDateTime(joP["expire_time"].ToString());s.Creationtime = DateTime.Now;s.shop_id = shop_id;s.code = code;Shopee s1 = shopeeIBLL.GetShopee(shop_id);s.Id = s1.Id;if (s1.Id > 0){shopeeIBLL.UpDate(s);}else{shopeeIBLL.Add(s);}return new ReturnMeg{State = ReturnState.success,Msg = "授权成功"};}/// <summary>/// 用店铺Id刷新Token/// </summary>/// <param name="shop_Id"></param>/// <returns></returns>public void SxToken(int shop_Id){Shopee s = shopeeIBLL.GetShopee(shop_Id);//时间不到,不用刷新if (s.GetTokenTime >= DateTime.Now){return;}int partner_id = MsParse.ToInt32(System.Configuration.ConfigurationManager.AppSettings["Shpoeepartner_id"]);var partner_key = System.Configuration.ConfigurationManager.AppSettings["Shpoeepartner_key"];long timest = Gettimest();var bodto = new{refresh_token = s.Refresh_token,partner_id = partner_id,shop_id = s.shop_id,code = s.code,};string body = JsonConvert.SerializeObject(bodto);var host = System.Configuration.ConfigurationManager.AppSettings["ShpoeeUrl"];var path2 = "/api/v2/auth/access_token/get";var base_string = $"{partner_id}{path2}{timest}";var sign = HmacSHA256(base_string, partner_key);var url = $"{host}{path2}?sign={sign}&partner_id={partner_id}&timestamp={timest}&|";string sd = Tool.HttpPostJSONs(url, body);JObject tokendata = (JObject)JsonConvert.DeserializeObject(sd);s.Access_token = tokendata["access_token"].ToString();s.Refresh_token = tokendata["refresh_token"].ToString();int expire_in = MsParse.ToInt32(tokendata["expire_in"].ToString());//有效时间s.GetTokenTime = DateTime.Now.AddSeconds((expire_in - 600));shopeeIBLL.UpDate(s);}

获取到返回参数后,存入数据库。
4.刷新token
拿到首次获取token返回参数refresh_token,调用刷新token接口。
注意(之后的授权,或是对接虾皮其他接口都要先判断token是否过期,过期了就要调用刷新接口)

C# 跨境Shopee接口对接(总结经验,如何对接虾皮,授权,以及生成签名,对接其他接口(商品,订单,面单等))相关推荐

  1. 跨境shopee现在入驻合适吗?没有货源怎么办?丝域分以下三点给你答案

    大多人都说东南亚那边电商不发达,多多少少都会有疑问,都以为跨境电商做着非常难,那你真的是理解错了.现在很多人都不了解跨境电商.现在的东南亚在互联网的引导,电商宛如洪水涌动一般,现在的在已经在东南亚电商 ...

  2. Shopee、速卖通、阿里国际、亚马逊等跨境电商平台测评经验分享

    今天跟大家分享下市面上主流测评几大类 大家都知道在跨境电商平台,商品评价直接影响着平台对卖家账号进行评定的各项因素,影响着产品页面的曝光量和流量,从而影响产品销量,评价的重要性不言而喻,想要打造自己店 ...

  3. 跨境shopee如果没有流量?你一定不懂这4中引流方法

    现在不管进入哪个平台都应该了解平台的规则,把平台所有的要求都要搞清楚.如果店铺想要流量那么必须就要靠自己去争取.现在电商的是一种未来发展趋势,在这个时候选择加入跨境电商,反倒创业会更简单一些.今天为大 ...

  4. Shopee跨境女装有哪些卖得好?虾皮女装类目选品思路

    Shopee时尚类常年热销,其中女装类目向来是跨境优势类目,目前在服饰类目中日单量及销售额排名第一.国货女装凭借款式多样.物美价优等特点,深受东南亚及拉美消费者的青睐.那么女装类目在哪个市场的增长潜力 ...

  5. 跨境shopee虾皮电商五天没上架完50款产品会怎么办?

    我们都知道虾皮店铺下来后前期有个新手任务,就是要在五天内上架五十款产品.很多刚做虾皮的新手因为没接触过电商,上架一个宝贝对他来说比较吃力,或者是有些人因为一些事情耽搁了没有及时的在店铺下来后的五天内完 ...

  6. 企业跨境电商平台服务解决方案,跨境电子商务贸易业务框架搭建运维

    跨境电商平台服务提供商[ 数 商 云]公司拥有十多年的跨境电商网站开发经验,能够实现快速搭建企业跨境贸易电商平台,无缝对接海关.物流.支付等接口,帮助跨境电子商务平台从容面对业务高峰.安全威胁,助力跨 ...

  7. 人民银行印发《关于支持外贸新业态跨境人民币结算的通知》

    为贯彻落实<国务院办公厅关于加快发展外贸新业态新模式的意见>和<国务院办公厅关于推动外贸保稳提质的意见>,近日,人民银行印发<关于支持外贸新业态跨境人民币结算的通知> ...

  8. 数商云:跨境美妆步入下半场,跨境电商商城系统助力企业打好“出海”攻坚战

    近年来,伴随着消费结构不断升级,叠加疫情对线下零售渠道的冲击,全球美妆行业线上交易规模迅速攀升,为国内美妆品牌出海提供了新的市场机遇.根据中国海关发布的数据显示,2021年中国美容化妆品及洗护用品的出 ...

  9. 什么样的产品适合跨境电商?这里告诉你答案!

    这个话题,其实就是一个选品的选择问题. 跨境电商选品的核心要求:品质的商品,优势的价格,符合跨境销售特性,满足目标海外市场需求,突出自己的特色竞争优势. 什么样的产品适合做跨境电商? 这个问题也是非常 ...

最新文章

  1. 程序员的自我修养--链接、装载与库笔记:Windows下的动态链接
  2. python中的np where_numpy中的np.where
  3. 怎么查看jre版本_javac和java版本不一致问题
  4. MVC webuploader 图片
  5. vi/vim多行注释和取消注释
  6. Linux学习笔记-命名管道(FIFO)
  7. python快速入门步骤_Python快速入门
  8. 对于 Netty ByteBuf 的零拷贝(Zero Copy) 的理解
  9. MongoDB 教程 | 菜鸟教程
  10. linux 文件可执行_深入理解linux内核——可执行文件执行过程(2)
  11. [ssh] remote host key has changed
  12. SQL数据去重复 Distinct 和 row_number() over()
  13. 大数据时代背景下智能工厂的能源管理系统
  14. 【知易行难】RS485组网连接示意图
  15. md5是什么,md5的这些作用你都知道吗
  16. 爱你穿越时间,两行来至秋末的眼泪
  17. 【钉钉杯大学生大数据挑战赛】初赛 A:银行卡电信诈骗危险预测 Baseline
  18. 影响手机成像质量的因素
  19. JAVA 并发编程之三:CountDownLatch(门闩)、CyclicBarrier(栅栏)和Semaphore(信号量) 三种并发策略
  20. 递推最小二乘法RLS的轮胎侧偏刚度估计(原书缺失代码已补全)

热门文章

  1. ubuntu下安装AndroidStudio
  2. 关于Google app sign 签名的der文件引起的问题
  3. 国产雅特力32位MCU兼容替代ST、GD
  4. 【东北师范大学】考研初试复试资料分享
  5. 推荐:一个画出高大上的机器学习图的神器(论文必备)
  6. TPS2552DBVR精密可调节限流配电开关TI
  7. 基于javaweb+jsp的酒店管理系统(java+SSM+jsp+mysql+maven)
  8. 百度地图总结第二篇--POI检索功能
  9. 股票分析中的 KDJ指标
  10. oppoA83怎么升级android版本,OPPO A83 A1刷机教程_OPPO A83 A1卡刷升级更新官方系统包...