php怎么转api,调用jsapi缺少参数sign?
问题出在网页端调起支付API接口中timeStamp参数,必须是string类型,但是php默认生成的时间戳是int类型。解决方法就是修改下 lib/Wxpay.Data.php约2731行处SetTimeStamp方法,修改为 $this->values['timeStamp'] = (string)$value;
PHP网站怎么调用别家的API?
首先我们要知道的是,API有很多种表现形式,对于不同形式的API,调用方式也是不同的。
1、RPC(远程过程调用协议)
RPC是一种进程远程调用的方式,主要用于异构平台间的进程通信,是Client/Server模式。RPC可以使用多种协议(如:HTTP协议、自定义协议等)和序列化方式(如:JSON、XML、二进程),RPC是基于TCP或者自定义协议来实现的,性能较高,但耦合度也较高。
2、SOAP(简单对象访问协议)
SOAP其实是基于HTTP和XML的实现,基于HTTP协议。在耦合度、维护性、扩展性上比RPC要好,但是性能上会低于RPC,特别是XML这种消息传递的方式会影响性能。
虽说SOAP是基于HTTP的,但是SOAP提供了Session/Cookie机制来维持状态,所以一些需要状态的(如:调用某些API前需要进行认证)业务中还能看见SOAP的身影。
3、RESTful
RESTful其实是一种架构风格,它不是一种标准!RESTful可以理解为是Json+HTTP+POST/GET/PUT/DELETE 的组合,同样是基于HTTP协议的。REST相比于SOAP和RPC,更加简洁明了。
RESTful的无状态特性使得其适合在分布式环境中使用,所以现在的API都推荐使用RESTful设计风格。
PHP中如何调用第三方提供的API?上面讲到了,API有很多种模式,对于不同模式我们调用的方法就不同。下面介绍下PHP如何计用常见模式的API。
1、RPC
如果对方提供的API是RPC形式的,那一般都会提供PHP版本的Client给你,你按说明进行调用即可。
另外PHP生态中也有不少RPC框架,如:PHPRPC、Thrift、gRPC等。
2、SOAP
PHP 5内置有php_soap扩展,此扩展实现了PHP对Web Services的支持。
3、RESTful
说白了RESTful就是HTTP协议,只不过使用了不同的HTTP动词进行请求区分,我们推荐使用cURL类库进行RESTful API的请求。
不建议使用file_get_contents 函数进行HTTP类型的API调用,很多人习惯使用此函数调用HTTP API,但是又不设置超时时间,当API不稳定时严重影响了网站速度。
以上就是我的观点,对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流 ~ 我是科技领域创作者,十年互联网从业经验,欢迎关注我了解更多科技知识!怎样从交易单号生成二维码?
1、当我们选择使用扫码支付,首先会出现下载微信sdk包,选择PHPsdk包进行下载,下载到本地后会发现是一个tp5框架,只是少了一个Common文件夹,把下载好的sdk包放进去。等待调用......
2、设置支付授权目录,扫码成功后的回调地址
3、支付模式二
4、实现代码:
<?php
namespace app\index\controller;
class Index
{
public function index()
{
require_once APP_PATH.'common/WxpayAPI/lib/WxPay.Api.php';
$input = new \WxPayUnifiedOrder();
// 设置商品描述
$input->SetBody('测试商品');
// 设置订单号 ---这里使用的时间,其实是自己生成的
$input->SetOut_trade_no(date('YmdHis'));
// 设置订单金额(单位:分)
$input->SetTotal_fee('1');
// 设置异步通知地址
$input->SetNotify_url('http://www.php.wx/index.php/index/Notify/index');
// 设置交易类型
$input->SetTrade_type('NATIVE');
// 设置商品ID
$input->SetProduct_id('123456780');
// 调用统一下单API
$result = \WxPayAPI::unifiedOrder($input);
// 生成二维码图片,在这里因为我们自己调试的需要修改配置common/lib/WxPay.Api.php的严格效验true修改为false
$code_url = $result['code_url'];
$img = '<img src=http://paysdk.weixin.qq.com/example/qrcode.php?data='.urlencode($code_url).' />';
echo $img;
}
}
?>
5、需要注意在微信支付异步处理中的回调地址,一定不是你的授权地址,处理微信支付异步请求的代码,Notify/index.php:
<?php
namespace app\index\controller;
class Notify
{
public function index()
{
require_once APP_PATH.'common/WxpayAPI/lib/WxPay.Api.php';
$msg = '';
\WxPayApi::notify(function($result){
// 签名校验通过
// 查询订单号,如果不存在,return;
// 如果订单已存在,且订单已经被处理过,return;
// 如果订单没有被处理,处理订单
},$msg);
}
}
?>
注意:如果异步验证的时候使用WxPay.Api.php对indx.php进行签名验证,是无法访问到这个方法的。
如何优雅的生成接口文档?
说到优雅的接口文档,很多人不免都想到了Swagger,但是Swagger真的好吗?众所周知,这个框架对代码有很大的侵入性,况且需要程序员自行开发,甚至可能会出现30分钟开发完业务,1个小时写Swagger注解的情况。
所以,Swagger不能被称之为优雅。那么,就不得不说一下YApi了。
YAPI,专为接口管理而生,友好的接口文档,基于websocket的多人协作接口编辑功能和类postman测试工具,让多人协作成倍提升开发效率。支持MockServer,基于Mock.js,使用简单而功能强大。
项目管理YAPI可以添加分组,可以为每个分组设置组长,组员,其他人无权限访问该分组。然后,分组内可创建项目,可定义基本路径,其实,可以简单理解为api接口的固定前缀,不单单指上下文根。例如,可以为 /shop/api 等。
创建接口项目创建完成后,即可进入详情页进行后续操作。
创建接口也比较简单,其内容通俗易懂,直接填写即可。
在设置界面,可对项目及接口进行相关设置,如域名等,也可以设置域名为本地。
还可以查看项目的动态,也就是变动日志。
如果你之前做过Swagger的集成,那么,在这里可以直接导入,不必一一创建,既贴心又方便。
还可以开发一个wiki,方便接口使用者及开发者了解项目详情,接口逻辑。
当然了,如果团队成员发生变动,如新进人员、离职人员等,可以再次对项目成员进行管理。
另外,还支持MOCK配置、环境配置、全局MOCK脚本、Swagger自动同步等。
介绍至此,大家已然明白,相较于Swagger,YAPI对系统的侵入,可以说是零。也很符合其优雅的接口管理系统美名。
关于其他更详细的使用方面的问题,大家可下载部署安装之后,亲自尝试尝试,即可领略其魅力。
关注@银河架构师,发现更多精彩内容。
PHPAPI接口怎么控制权限?
你好,控制权限主要和是否登陆,以及登陆用户的自身权限有关,但因为API接口不能使用session所以你需要使用其他的信息进行代替。我的建议是在app移动端发送登陆请求时,你就可以生产登陆后的Token信息。Token信息需要你根据用户编号进行加密处理,然后移动端保存,在每次做其他请求时,连同Token一起发送过来,你再判断是否存在Token,然后解密Token获取用户编号,再通过用户编号判断是否有相应权限。