xolphin/xolphin-api-php

PHP的Xolphin API模块

v3.0.5 2024-01-29 17:11 UTC

README

xolphin-php-api是一个库,允许快速在PHP中集成Xolphin REST API,以实现SSL证书的自动化订购、签发和安装。

关于Xolphin

Xolphin是荷兰最大的SSL证书数字签名供应商。Xolphin拥有一支专业的团队,提供可靠的支持和快速签发来自行业领先品牌(如Sectigo、GeoTrust、GlobalSign、Thawte和Symantec)的SSL证书,价格合理。

库安装

库可以通过Composer安装

composer require xolphin/xolphin-api-php

并且通过以下方式更新

composer update xolphin/xolphin-api-php

升级指南:从v2.x到v3.x

  • $response->getPagination()->{{method}};访问分页属性
  • 请从您的代码中移除所有EE(EncryptionEverywhere)块,它们已被最终移除。
  • 确保您使用正确的类型,因为我们现在强制执行严格类型。

从v1.8.3升级到v2.x的指南

在您的composer.json文件中将xolphin/xolphin-api-php依赖项更新到^2.0

类名更改

所有端点类都已重命名为更通用的名称<resource>Endpoint。您应该更新您的使用。

调用端点类

所有端点类在启动时都会被创建。您可以使用$client->certificates->all()而不是$client->certificate()->all()来调用它们。

使用辅助器而不是字符串

在2.0.0版本中,我们引入了辅助器类。这些类包含所有静态字符串变量的常量(枚举)。请使用这些常量而不是字符串,因为我们将在更改API中相应值时更改这些常量。

例如,在创建域的DCV时

$dcvDomain = new Xolphin\Requests\DCVDomain('someDomain', Xolphin\Helpers\DCVTypes::EMAIL_VALIDATION, 'someemail@address.com');

证书下载()方法返回字符串

CertificatesEndpoint上的download()方法现在返回证书字符串,而不是GuzzlestreamInterface

用法

客户端初始化

<?php

require 'vendor/autoload.php';

$client = new Xolphin\Client('<username>', '<password>');

速率限制

当前限制

$limit = $client->getLimit();
echo $limit . PHP_EOL;

限制请求剩余次数

$requestsRemaining = $client->getRequestsRemaining();
echo $requestsRemaining . PHP_EOL;

请求

获取请求列表

$requests = $client->requests->all();
foreach($requests as $request) {
    echo $request->id . PHP_EOL;
}

通过ID获取请求

$request = $client->requests->get(1234);
echo $request->id;

请求证书

$products = $client->support->products();

// request Sectigo EssentialSSL certificate for 1 year
$request = $client->requests->create($products[1]->id, 1, '<csr_string>', DCVTypes::EMAIL_VALIDATION)
    ->setAddress("Address")
    ->setApproverFirstName("FirstName")
    ->setApproverLastName("LastName")
    ->setApproverPhone("+12345678901")
    ->setZipcode("123456")
    ->setCity("City")
    ->setCompany("Company")
    ->setApproverEmail('email@domain.com')
    //currently available languages defined in RequestLanguages
    ->setLanguage(RequestLanguage::ENGLISH)
    ->addSubjectAlternativeNames('test1.domain.com')
    ->addSubjectAlternativeNames('test2.domain.com')
    ->addSubjectAlternativeNames('test3.domain.com')
    ->addDcv(new \Xolphin\Requests\DCVDomain('test1.domain.com', DCVTypes::EMAIL_VALIDATION, 'email1@domain.com'))
    ->addDcv(new \Xolphin\Requests\DCVDomain('test2.domain.com', DCVTypes::EMAIL_VALIDATION, 'email2@domain.com'));

$client->requests->send($request);

重新签发证书

// Reissue a current certificate
$reissue = new \Xolphin\Requests\ReissueRequest('<csr_string>', DCVTypes::EMAIL_VALIDATION);
$reissue->setApproverEmail('email@domain.com');

$client->certificates->reissue(<certificate_id>, $reissue);

续订证书

// Renew a current certificate
$currentCertificate = $client->certificates->get(<certificate_id>);

$renew = new \Xolphin\Requests\RenewRequest($currentCertificate->product, <years>, '<csr_string>', DCVTypes::FILE_VALIDATION);
$renew->setApproverEmail('email@domain.com');

$client->certificates->renew(<certificate_id>, $renew);

创建笔记

$result = $client->requests->sendNote(1234, 'My message');

获取笔记列表

$notes =  $client->requests->getNotes(1234);
foreach($notes as $note){
    echo $note->messageBody . PHP_EOL;
}

发送"Sectigo订阅协议"电子邮件

//currently available languages defined in RequestLanguages
$client->requests->sendSectigoSAEmail(1234, 'mail@example.com', RequestLanguage::ENGLISH);

证书

证书列表和到期日期

$certificates = $client->certificates->all();
foreach($certificates as $certificate) {
    echo $certificate->id . ' - ' . $certificate->isExpired() . "\n";
}

下载证书

$certificates = $client->certificates->all();
$cert = $client->certificates->download($certificates[0]->id, CertificateDownloadTypes::CRT);
file_put_contents('cert.crt', $cert);

支持

产品列表

$products = $client->support->products();
foreach($products as $product) {
    echo $product->id . PHP_EOL;
}

解码CSR

$csr = $client->support->decodeCSR('<your csr string>');
echo $csr->type;

发票

发票列表

$invoices = $client->invoices->all();
foreach($invoices as $invoice) {
    echo $invoice->id . ' ' . $invoice->invoiceNr . ' ' . $invoice->amount . PHP_EOL;
}

以PDF格式下载发票

$invoices = $client->invoices->all();
$invoicePdf = $client->invoices->download($invoices[0]->id, InvoiceDownloadTypes::PDF);
file_put_contents('invoice.pdf' , $invoicePdf);