PHP code example of wi1dcard / baidu-mini-program-sdk

1. Go to this page and download the library: Download wi1dcard/baidu-mini-program-sdk library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

wi1dcard / baidu-mini-program-sdk example snippets


    use BaiduMiniProgram;

    $app = new BaiduClient('App Key', 'App Secret');
    

$credential = $app->session($code);

$decrypted = $app->decrypt($data, $iv, $credential['session_key']);

use BaiduMiniProgram\Services\BaiduTemplate; // 消息模板
use BaiduMiniProgram\Services\BaiduTemplateMessage; // 模板消息

// 获取 BaiduServiceClient 实例,此实例包含 HTTP Client,主要用于发送请求。
$serviceClient = $app->serviceClient();

// 创建 BaiduTemplate 实例,用于管理消息模板。
$template = new BaiduTemplate($serviceClient);
// 调用 $template 相关方法即可。

// 根据模板 ID,发送模板消息,可链式调用。
$data = (new BaiduTemplateMessage($templateId, $serviceClient))
    ->withKeywords([
        'keyword1' => 'foo',
        'keyword2' => 'bar',
    ])
    ->sendTo('小程序用户 Swan ID', 'Scene ID');
// $data 为发送结果,即接口响应的 `data` 字段。

$response = $payment->handleNotification(
    function ($parameters) {
        // 在这里编写业务逻辑,发生任何错误只需抛异常即可。
        // $parameters 是成功验证签名,并删除「签名」参数的请求参数数组。
        // 若业务逻辑成功处理,可返回一数组或对象,它将被直接填入响应 `data` 字段。
    },
    function (\Exception $exception) {
        // 在这里记录异常,例如发送到 Bugsnag 或 Sentry、记录至日志等。
        // 切勿输出任何内容,在回调通知请求内,你无法得知输出了啥。
    },
    $_POST // 此参数可忽略,默认即为 $_POST;通常用于非 PHP-FPM 等特殊场景(例如 Swoole)传入请求参数数组。
);

// 根据框架不同,可使用不同的方式输出 $response。
echo $response;

class YourHttpClient implements Http\Client\HttpClient
{
    public function sendRequest(Psr\Http\Message\RequestInterface $request) : Psr\Http\Message\ResponseInterface
    {
        // 发送兼容 PSR-7 RequestInterface 的请求
        // 返回兼容 PSR-7 ResponseInterface 的响应
    }
}

$app = new BaiduClient('App Key', 'App Secret', new YourHttpClient());

// 接下来,当调用 $app 内的方法、需要发送 HTTP 请求时,均会通过 YourHttpClient::sendRequest。