日期: 2022-09-20 15:50:04 浏览数:9

上往建站提供服务器空间服务商,百度快照排名,网站托管,百度推广运营,致力于设计外包服务与源代码定制开发,360推广,搜狗推广,增加网站的能见度及访问量提升网络营销的效果,主营:网站公司,百度推广公司电话,官网搭建服务,网站服务企业排名,服务器空间,英文域名等业务,专业团队服务,效果好。
庆阳网站推广【庆阳办理400电话】庆阳SEO优化、庆阳微信公众号APP客户端小程序开发、庆阳网站托管、庆阳APP开发

庆阳,习称“陇东”,是甘肃省辖地级市,甘肃的石油天然气化工基地、长庆油田主产区。截至2020年7月,辖1个区、7个县,总面积27119平方公里,总人口265万,常住人口227.88万人,城镇人口90.98万。
庆阳地处中国西部地区、甘肃省东部,东接陕西省的宜君、黄陵、富县、甘泉、志丹等县;北邻陕西省定边、吴起、志丹县及宁夏回族自治区盐池县;西与宁夏回族自治区固原市原州区、彭阳县、同心县接壤;南与甘肃省的泾川县及陕西的彬州市、长武、旬邑县相连。被誉为“红色圣地、岐黄故里、农耕之源、能源新都”,素有“陇东粮仓”的美称。 [1-2]
庆阳市是是“环江翼龙”和“黄河古象”的故乡,中国“第一块旧石器”的出土地,中华民族早期农耕文明的发祥地之一,中医药文化的发祥地、中医鼻祖岐伯的出生地,甘肃的革命老区,长庆油田的发源地。
2019年,庆阳市完成生产总值742.94亿元,同比增长5.3%。 [3] 2020年,庆阳市实现地区生产总值754.73亿元,比2019年增长4.3%。
现以大家熟悉的微信公众号开发平台的验签为例,进行说明。
微信的加密/校验流程如下:
1、 将token、timestamp、nonce三个参数进行字典序排序
2、将三个参数字符串拼接成一个字符串进行sha1加密
3.、开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
参考:以上内容摘自接入指南 - 微信公众平台开发者文档。
首先,需要实现过滤器接口PhalApi_Filter::check()。通常我们约定返回ret = 402时表示验证失败,所以当签名失败时,我们可以返回ret = 402以告知客户端签名不对。根据微信的检验signature的PHP示例代码,我们可以快速实现自定义签名规则,如:
//$ vim ./Shop/Common/Request/WeiXinFilter.php
<?php
class Common_Request_WeiXinFilter implements PhalApi_Filter {
public function check() {
$signature = DI()->request->get('signature');
$timestamp = DI()->request->get('timestamp');
$nonce = DI()->request->get('nonce');
$token = 'Your Token Here ...'; // TODO
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode($tmpArr);
$tmpStr = sha1( $tmpStr );
if ($tmpStr != $signature) {
throw new PhalApi_Exception_BadRequest('wrong sign', 1);
}
}
}
随后,我们只需要再简单地注册一下过滤器服务即可,在对应项目的入口文件index.php中添加:
//$ vim ./Public/shop/index.php
// 微信签名验证服务
DI()->filter = 'Common_Request_WeiXinFilter';
当我们再次请求接口时,此时的签名方案就会从原来默认的md5加密算法切换到这个新的签名验证方案上。实现的要点是,当签名失败时,抛出401错误码。而异常类PhalApi_Exception_BadRequest表示客户端非法请求,其异常码的基数是400,所以第二个构造函数参数传1即可。
2.2 接口响应
对于接口响应,PhalApi默认使用了HTTP+JSON。通过HTTP/HTTPS协议进行通讯,返回的结果则使用JSON格式进行传递。正常情况下,当接口服务正常响应时,如前面的Hello World接口,可能看到以下这样的响应头部信息和返回内容。
HTTP/1.1 200 OK
Content-Type: application/json;charset=utf-8
... ...
{"ret":200,"data":"Hello World","msg":""}
而当接口项目抛出了未捕捉的异常,或者因PHP语法问题而出现Error时,则没有内容返回,并且得到一个500的响应状态码。类似如下:
HTTP/1.1 500 Internal Server Error
若运行环境中PHP的display_errors配置为On时,还是会返回200的,并直接显示错误信息。在生产环境上,则切记需要把display_errors设置为Off。
下面,我们将重点学习正常响应情况下的响应结构和返回格式,在线调试以及异常情况下如何进行问题排查与定位。
2.2.1 响应结构
继续来回顾一下默认接口服务返回的内容。类似如下:
{
"ret": 200,
"data": {
"title": "Hello World!",
"content": "PHPer您好,欢迎使用PhalApi!",
"version": "1.4.0",
"time": 1492776704
},
"msg": ""
}
ret字段是返回状态码,200表示成功;data字段是项目提供的业务数据,由接口开发人员定义;msg是异常情况下的错误提示信息。下面分别说之。
业务数据 data
业务数据data为接口和客户端主要沟通对接的数据部分,可以为任何类型,由接口开发人员定义定义。但为了更好地扩展、向后兼容,建议都使用可扩展的集合形式,而非原生类型。也就是说,应该返回一个数组,而不应返回整型、布尔值、字符串这些基本类型。所以,Hello Wolrd接口服务返回的数据类型是不推荐的,因为返回的是整型。
业务数据主要是在Api层中返回,即对应接口类的方法的返回结果。如下面的默认接口服务?service=Default.Index的实现代码。
// $ vim ./Shop/Api/Default.php
<?php
class Api_Default extends PhalApi_Api {
... ...
public function index() {
return array(
'title' => 'Hello World!',
'content' => T('Hi {name}, welcome to use PhalApi!', array('name' => $this->username)),
'version' => PHALAPI_VERSION,
'time' => $_SERVER['REQUEST_TIME'],
);
}
实际上,具体的业务数据需要一段复杂的处理,以满足特定业务场景下的需要。后面我们会对如何开发接口服务和使用数据库、高效缓存再进行讨论讲解。这里暂且知道接口结果是在Api层返回,对应接口类成员方法返回的结果即可。
庆阳网站推广【庆阳办理400电话】庆阳SEO优化、庆阳微信公众号APP客户端小程序开发、庆阳网站托管、庆阳APP开发
上往建站提供搭建网站,域名注册,官网备案服务,网店详情页设计,企业网店,专业网络店铺管理运营全托管公司咨询电话,服务器空间,微信公众号托管,网页美工排版,致力于域名申请,竞价托管,软文推广,全网营销,提供标准级专业技术保障,了却后顾之忧,主营:虚拟主机,网站推广,百度竞价托管,网站建设,上网建站推广服务,网络公司有哪些等业务,专业团队服务,效果好。
服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)