menu

PHP

更新时间: 2019-12-24 18:10:38 · 编辑者:宇链科技

概述

我们提供了官方的 PHP SDK,你可以方便地使用它来调用宇链区块链可信云的各类功能。

如果在使用中有任何建议或问题,欢迎在 Github 上提交 Issue。

使用说明

代码托管地址:https://github.com/vastchain/vctc-php-sdk

Github 上 Clone 本项目即可开始使用。

VctcApiClient.php 为 SDK 文件,index.php 为使用实例。

本 SDK 主要封装了下列功能:

  • API 接口签名
  • 异常处理
  • API 调用

在调用具体的 API 接口时,请遵循下列步骤:

  1. 在宇链云的 API 参考中找到对应 API 的 接口地址参数返回值说明
  2. 创建 VctcApiClient 的实例。
  3. 使用该实例的 getpostcallAPI 方法调用宇链云 API。
  4. 使用 catch 捕获 VctcException 类型的异常并进行错误处理。
  5. 对返回值进行解析。

由于 API 请求采用 HTTPS 协议,其依赖于代码运行环境的 CA 证书。如果调用出现证书相关错误,请检查 PHP 的 CURL 和 OPENSSL 模块是否正确设置了 CA 证书。

请注意:禁止使用网上某些人的解决方案禁用 CA 验证,这非常不安全!正确的处理方案应该是将 CA 证书配置在服务器的 PHP.ini 中。

代码参考

<?php
// 引用 SDK
require("./VctcApiClient.php");
/**
 * 请修改此处的 AppId 和 AppSecret
 */
$client = new VctcApiClient('', '');
try {
    // 演示 GET 请求
    var_dump($client->get("/"));
    // 演示 POST 请求
    // 此请求可成功插入一条数据在之前已经创建好的 bucket3 数据桶中
    $res = $client->callAPI("POST", "/common-chain-upload", NULL, array(
        'items' => array(
            array(
                'type' => 'data-item-create',
                'args' => array(
                    'id' => uniqid(),
                    'parentId' => 'bucket3',
                    'data' => array(
                        array(
                            'key' => 'hello',
                            'value' => 'world',
                            'type' => 'publicText'
                        )
                    )
                )
            )
        )
    ));
    // 演示出错请求(参见 Catch)
    $client->callAPI("POST", "/common-chain-upload", NULL, array(
        'items' => array()
    ));
} catch (VctcException $ex) {
    // 演示出错请求
    echo($ex);
    // $ex->rawResponse 可获得服务器原始完整错误
    // $ex->errorCode   可获得错误代码
}

API 参考

VctcApiClient Class

用于实现 API 请求的客户端类。

new VctcApiClient($appId, $appSecret)

使用指定的 appId 和 appSecret 初始化 API 客户端。

get($path, $query = NULL)

调用 GET 类型的方法,并自动进行签名。

  • $path:要请求的 API 路径,以 / 开头
  • $query:(可选)请求的 query 参数,以 array 形式提供,可以为 NULL

调用成功则返回 Array 类型的数据,失败则抛出 VctcException 异常

post($path, $query, $body)

调用 POST 类型的方法,并自动进行签名。

  • $path:要请求的 API 路径,以 / 开头
  • $query:请求的 query 参数,以 array 形式提供,可以为 NULL
  • $body:请求的 body 参数,可以为 stdClassarray 类型,将自动序列化为 JSON 格式,可以为 NULL

调用成功则返回 Array 类型的数据,失败则抛出 VctcException 异常

callAPI($method, $path, $query, $body)

调用 API,支持所有请求方式,并自动进行签名。如果你调用的 API 不使用 GET / POST 方法,可以使用该方法来调用。

  • $method:支持 GET / POST / PUT / DELETE
  • $path:要请求的 API 路径,以 / 开头
  • $query:请求的 query 参数,以 array 形式提供,可以为 NULL
  • $body:请求的 body 参数,可以为 stdClassarray 类型,将自动序列化为 JSON 格式,可以为 NULL

调用成功则返回 Array 类型的数据,失败则抛出 VctcException 异常

VctcException Class

用于封装服务端返回的错误。

VctcException->errorCode

获取服务端错误的错误代码。

VctcException->rawResponse

获取服务端错误的原始信息(Array 类型)