Download the PHP package wi1dcard/baidu-mini-program-sdk without Composer
On this page you can find all versions of the php package wi1dcard/baidu-mini-program-sdk. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download wi1dcard/baidu-mini-program-sdk
More information about wi1dcard/baidu-mini-program-sdk
Files in wi1dcard/baidu-mini-program-sdk
Package baidu-mini-program-sdk
Short Description 百度小程序第三方 PHP SDK,助力智能小程序开发。
License MIT
Informations about the package baidu-mini-program-sdk
Baidu Smart Mini-Program SDK for PHP
🐾 百度小程序第三方 PHP SDK,遵循 PSR-7、支持 PHP 5.4,助力智能小程序开发。
🎉 支付宝开放平台第三方 PHP SDK,微信小程序转百度小程序注意事项。
- 目录
- 主要目的
- 如何使用
- 其它资源
- 感想
- 协议
主要目的
目前,百度智能小程序暂时未推出官方 PHP SDK,而仅有的百度收银台 SDK 也只具备生成、验证签名功能,不足以支撑实际开发。
本项目着眼于「小程序」,集成以下功能。
- 登录
- 解密
- 模版消息(又称「消息模板」)
- 支付(百度收银台)
- 支付通知
- 深入
如何使用
墙裂建议:阅读以下文档时,请同时阅读对应方法、类的 PHPDoc,我们准备了详细的参考链接和说明。
准备
-
安装。
-
创建
BaiduClient
。App Key
/App Secret
可通过 「小程序开发者后台」-「智能小程序首页」-「设置」-「开发设置」查看。BaiduClient
通常情况会贯穿整条业务,除非你须要在同一套代码内处理多个小程序,否则只需在初始化阶段创建一次即可。如无特殊说明,以下
$app
均为此处的BaiduClient
实例。
登录
详细流程 官方文档 解释得十分详尽,遵循 OAuth 2.0、过程类似微信,在此不再赘述。
例如:小程序端通过 swan.login
得到 code
,随后使用 swan.request
发送请求,将 code
发至我方服务端。
我方服务端示例代码如下。
若成功,$credential
为数组,格式如下。
若失败,则会抛出 BaiduResponseException
。
如无特殊说明,以下 $credential
均为此返回值。
解密
智能小程序可以通过各种前端接口获取百度提供的开放数据,而这些数据返回给小程序时是加密过的。
例如:小程序端通过 swan.getUserInfo
得到 data
和 iv
,随后使用 swan.request
发送请求,将其发至我方服务端解密。
我方服务端示例代码如下。
若成功,$decrypted
为解密后的原始数据。
模版消息
在智能小程序开发者后台创建「消息模板」后,即可发送「模板消息」,过程与微信小程序类似。不过,百度小程序支持调用开放接口增删模板消息,这为部分业务场景提供了更加便捷的解决方案。
根据 官方文档, 相关接口本 SDK 调用例子如下。
支付
支付部分比较特殊,百度收银台是独立的聚合支付产品线,所以小程序接入稍显复杂,需要单独注册账号并认证。
首先,按照 官方文档 说明,入驻平台、创建服务等。
这里单独说明 设置中心 内几处需要注意的地方。
-
生成密钥可使用本 SDK 附带的一键脚本。
-
开发者公钥保存后,需要稍等并刷新才会有平台公钥生成。
- 平台公钥导出后并非 PEM 格式,无法被 OpenSSL 正确识别,需进行转换;同样可使用 SDK 附带的脚本。
截至 2018.10.15,我司提交的百度支付认证审核已持续一周处在「审核中」状态。短时间内支付部分可能无法测试,如有哪位大佬审核通过,欢迎通过 Issue 联系我。
支付通知
在支付成功等场景,百度会主动发起通知请求到我方服务器。我方服务器需对请求签名进行验证,确保此请求来自百度服务器,且数据未被篡改。
同时,百度规定了响应格式,我方接口必须按照指定格式响应请求。
在本 SDK 内,可直接使用如下方式实现以上两点。
有点类似 JavaScript 的异步回调;在回调函数内,所有异常均会被妥善处理为指定格式响应,你需要关心的只有你的业务逻辑,并在第二个回调函数内记录一切发生的异常即可。
你也可以使用任意 Callable 代替闭包。
深入
本 SDK 遵循「PSR-7 HTTP Message」、HTTP 客户端基于「HTTPlug」,因此你可以任意定制 HTTP 客户端,只要兼容 PSR-7 即可。
通常情况下,本 SDK 使用内置的 php-http/curl-client,经过修改后支持 PHP 5.4。
当然,你可以替换成自己喜欢的客户端,查看受支持的 客户端列表。
例如替换为 Guzzle 6.x
。
或者,你也可以自行编写一个实现 Http\Client\HttpClient
接口的客户端,然后在类构造函数内传入即可。
例如替换为 YourHttpClient
。
其它资源
- 百度智能小程序官方文档
- 百度智能小程序官方支付文档
- 百度小程序开发资源汇总
- 微信小程序转百度小程序评估
感想
在研究小程序支付部分时,居然发现其 签名过程、SDK 等几乎与 支付宝开放平台 SDK 一模一样。但从修改日期来看,支付宝是 2014 年,百度是 2016 年,且百度的代码相对规范些。
难不成... 是大佬被挖走了?
协议
MIT
欢迎 Issue / PR。
欢迎关注我们的产品。
All versions of baidu-mini-program-sdk with dependencies
ext-openssl Version *
php-http/httplug Version ^1.0
php-http/message Version ^1.0
guzzlehttp/psr7 Version ^1.0