关于shopee平台接口(php)对接示例
2018年8月之后,shopee开始使用新接口,需要进行授权操作
1.授权
public function getAuth(){
/**
* @param ShopApiShopee $model
*/
$httpType = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'))
? 'https://' : 'http://';
$redirectUrl = $httpType . $_SERVER['HTTP_HOST'] . '/';
$token = hash('sha256', $this->_ShopApiShopee->shopee_key . $redirectUrl);
$url = self::SHOPEE_GET_AUTH_URL
. '?id=' . $this->_ShopApiShopee->shopee_shop_id
. '&token=' . $token
. '&redirect=' . $redirectUrl;
header("Location: " . $url);
$this->_ShopApiShopee->token = $token;
if (!$this->_ShopApiShopee->save()) {
return self::fail(self::CODE_SAVE_ERROR,serialize($this->_ShopApiShopee->getErrors()));
}
}
2.拼接获取订单信息
static function getOrderList($shopApiShopee, $days = 1, $offsetDay = 0)
{
if(!empty($shopApiShopee) && $shopApiShopee instanceof ShopApiShopee )
{
$to_time_stamp = time() - $offsetDay * 86400;
$from_time_stamp = $to_time_stamp - 86400 * $days;
$arr = array(
'partner_id' => (int)$shopApiShopee->shopee_partner_id,
'shopid' => (int)$shopApiShopee->shopee_shop_id,
'timestamp' => time(),
'create_time_from' => $from_time_stamp,
'create_time_to' => $to_time_stamp,
'pagination_offset' => 0,
'pagination_entries_per_page' => 100
);
$result = self::_getCurlResponse($shopApiShopee, self::SHOPEE_GET_ORDER_LIST_URL, $arr);
return $result;
}
else
{
return self::fail(self::CODE_NO_FIND, 'shopee param invalid:' . serialize($shopApiShopee));
}
}
private static function _getCurlResponse($shopApiShopee, $url, $arr){
$arr = json_encode($arr);
$contentLength = strlen($arr);
$strConcat = $url.'|'.$arr;
$authorizationKey = hash_hmac('sha256', $strConcat, $shopApiShopee->shopee_key);
$header = array(
'Content-Type:application/json',
"Content-Length:" . $contentLength,
'Authorization:' . $authorizationKey
);
$params = array(
'base_uri' => $url,
'headers' => $header,
'verify' => false,
'body' => $arr
);
return self::_curl($params);
}
3.使用curl请求orderList数据
private static function _curl($params){
$ch = curl_init($params['base_uri']);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_HTTPHEADER, $params['headers']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
// curl_setopt($ch, CURLOPT_HEADER, TRUE); 返回打印信息中包含头文件
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params['body']);
$str = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if( $status === self::CODE_SUCCESS ){
return self::success(json_decode($str,true), self::CODE_SUCCESS);
}else{
return self::fail(json_decode($str,true), $status);
}
}
关于shopee平台接口(php)对接示例的更多相关文章
- 关于ebay平台接口(php)对接示例
获取订单接口示例 public function importEbayOrder(){ set_time_limit(0); if(empty( $this->_ShopApiEbay-> ...
- the5fire博客对接微信公众平台接口 | the5fire的技术博客
the5fire博客对接微信公众平台接口 | the5fire的技术博客 the5fire博客对接微信公众平台接口
- Spring Cloud 微服务开放平台接口
github源码地址:https://github.com/spring-cloud/spring-cloud-security 前言: 什么是开放平台接口 场景 : 总公司与子公司 对接接口 还有 ...
- 用vetr.x写一个HTTP接口适配器, 对接各种形式接口
用vetr.x写一个HTTP接口适配器, 对接各种形式接口 项目地址:https://github.com/hjx601496320/transmit 业务说明 在日常开发工作中,我们经常会遇到要和各 ...
- 关于调用三方平台接口与推送接口的总结<二>(2020.7.27)
前言:本篇博客是接着上篇总结写的,想了解怎么对接第三方平台接口的同学可以看我上一篇博客,地址是 https://www.cnblogs.com/alanturingson/p/13377500.ht ...
- JAVA 调用第三方短信平台接口发送短信
做了几个调用三方短信平台发送短信的例子,大部分需要 携带参数,向指定URL发送请求 回顾对接第一个平台时痛苦的乱码经历,这里放一份代码,算是个模版,再用到的时候过来copy一下就OK. 在进入主题之前 ...
- Java微信公众平台接口封装源码分享
前言: 这篇博客是在三月初动手项目的时候准备写的,但是为了完成项目只好拖延时间写这篇博客,顺便也可以在项目中应用我自己总结的的一些经验.今天看来,这些方法的应用还是可以的,至少实现了我之前的 ...
- .NET实现微博粉丝服务平台接口
[文章摘要]Senparc.Weixin.MP虽然是微信公众号的SDK,但由于易信公众号和新浪微博粉丝服务平台也提供了微信兼容接口,所以也可以使用其快速实现相应的服务,当然微博由于与微信存在差异,如果 ...
- 用c#开发微信 (19) 公众平台接口权限列表说明 - 订阅号、服务号认证后的区别
最新发现有些原来认证服务号的权限对认证的订阅号开放了,这里是官方的文档说明<公众平台接口权限列表说明>,明显比这里说得详细.准确多了<微信公众平台服务号.订阅号的相关说明>.另 ...
随机推荐
- centos破解压缩文件密码
rarcrack是linux系统端的一款破解加密压缩包的工具,rarcrack使用的穷举法进行破解已经加密的rar.zip和7z压缩包,支持设置多线程,和文件类型进行破解. 1.rarcrack下载页 ...
- Mysql—存储过程
该处代码可能存在中文的标点符号 存储过程 含义: 一组预先编译好的SQL语句的集合,理解成批处理语句 好处: 1.提高代码的重用性 2.简化操作 3.减少了编译次数并且减少了和数据库连接的次数,提高了 ...
- oracle批量修改字段长度
alter table 表名 modify (字段名1 字段类型1(长度1),字段名2 字段类型2(长度2)) alter table 表名 modify column_name varchar2(3 ...
- 下页小希学MVC5+EF6.2 学习记录三
目的:1 学习mvc+ef 2 写下日记也是对自己的督促 期待已久的EF终于来了. 学完本篇文章,你将会掌握基于EF数据模型的完整开发流程. 本次将会完成EF数据模型的搭建和使用. 基于这个模型 ...
- EXCEL排序(hdu 1862)
其实这个题吧,就是发出来玩玩,会用sort就很easy了,有一个小小的知识点:比较字符串字典序的大小用strcmp函数. strcmp(a,b)<0说明a的字典序小于b的字典序. 上题: Inp ...
- VUE学习(一)——使用npm安装项目
npm是node.js自带的功能 Node.js 安装配置 本章节我们将向大家介绍在 Windows 和 Linux 上安装 Node.js 的方法. 本安装教程以 Node.js v4.4.3 LT ...
- 尝试用kotlin做一个app(三)
新闻列表 添加新闻列表可以使用RecyclerView.但是有个问题,RecyclerView只会在内部滚动,不会带动整个屏幕滚动.所以在原根布局外层添加androidx.core.widget.Ne ...
- 洛谷 P5661 公交换乘(队列)
题目传送门 解题思路: 暴力模拟. AC代码: #include<iostream> #include<cstdio> #include<queue> using ...
- 移动端H5开发遇到的问题及解决方法
本篇文章给大家带来的内容是关于移动端H5开发遇到的问题及解决方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 微信分享签名错误invalid signature vue单页应用hi ...
- 201612-1 中间数 Java
思路: 先排序,两个count变量记录.有点暴力 import java.util.Arrays; import java.util.Scanner; public class Main { publ ...