首页 开发编程 正文

php怎么转api

问题出在网页端调起支付API接口中timeStamp参数,但是php默认生成的时间戳是int类型。API常见模式1、RPC(远程过程调用协议)RPC是一种进程远程调用的方式,2、SOAP(简单对象访问协议)SOAP其实是基于HTTP和XML的实现,特别是XML这种消息传递的方式会影响性能。但是SOAP提供了Session/Cookie...

php怎么转api,调用jsapi缺少参数sign?

问题出在网页端调起支付API接口中timeStamp参数,必须是string类型,但是php默认生成的时间戳是int类型。解决方法就是修改下 lib/Wxpay.Data.php约2731行处SetTimeStamp方法,修改为 $this->values['timeStamp'] = (string)$value;

PHP网站怎么调用别家的API?

首先我们要知道的是,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获取用户编号,再通过用户编号判断是否有相应权限。

本文转载自互联网,如有侵权,联系删除