跳到主要内容

Go SDK 使用教程

安装

go get github.com/anquanssl/golang-sdk

初始化

package main

import (
anquanssl "github.com/anquanssl/golang-sdk"
"github.com/anquanssl/golang-sdk/resource"
)

func main() {
client := anquanssl.NewClient("修改成 accessKeyId", "修改成 accessKeySecret", "")
product := resource.NewProduct(client)
order := resource.NewOrder(client)

_ = product
_ = order
}

如需指定 API 地址:

client := anquanssl.NewClient("accessKeyId", "accessKeySecret", "https://api.orion.pki.plus/api/v1")

产品及成本列表

接口文档

resp, err := product.ProductList()
if err != nil {
panic(err)
}
fmt.Println(resp["data"])

证书下单

接口文档

import (
"fmt"
"time"

"github.com/anquanssl/golang-sdk/request"
)

req := request.CertificateCreateRequest{
UniqueID: fmt.Sprintf("order_%d", time.Now().UnixNano()),
ProductID: "sslcom_dv_flex",
Period: "annually",
CSR: "-----BEGIN CERTIFICATE REQUEST-----\n...\n-----END CERTIFICATE REQUEST-----",
ContactEmail: "contact@example.com",
DomainDCV: map[string]string{
"example.com": "dns",
"www.example.com": "http",
},
NotifyURL: "https://app.example.com/notify",
}

resp, err := order.CertificateCreate(req)
if err != nil {
panic(err)
}
data := resp["data"].(map[string]interface{})
serviceID := data["service_id"].(string)

fmt.Println(resp)

查询证书

接口文档

req := request.CertificateDetailRequest{
ServiceID: serviceID,
}

resp, err := order.CertificateDetail(req)
if err != nil {
panic(err)
}
fmt.Println(resp)

修改 DCV

接口文档

当前 Go SDK 未封装 CertificateUpdateDCV 方法,可直接调用客户端:

resp, err := client.Post(
"/certificate/update-dcv",
map[string]string{},
map[string]interface{}{
"service_id": serviceID,
"domain_dcv": map[string]string{
"example.com": "dns",
"www.example.com": "https",
},
},
)
if err != nil {
panic(err)
}
fmt.Println(resp)

检查 DCV

接口文档

req := request.CertificateValidateDCVRequest{
ServiceID: serviceID,
}

resp, err := order.CertificateValidateDCV(req)
if err != nil {
panic(err)
}
fmt.Println(resp)

移除 SAN

接口文档

当前 Go SDK 未封装 CertificateRemoveSan 方法,可直接调用客户端:

resp, err := client.Post(
"/certificate/remove-san",
map[string]string{},
map[string]interface{}{
"service_id": serviceID,
"domain": "www.example.com",
},
)
if err != nil {
panic(err)
}
fmt.Println(resp)

证书重签

接口文档

resp, err := client.Post(
"/certificate/reissue",
map[string]string{},
map[string]interface{}{
"unique_id": fmt.Sprintf("reissue_%d", time.Now().UnixNano()),
"service_id": serviceID,
"csr": "-----BEGIN CERTIFICATE REQUEST-----\n...\n-----END CERTIFICATE REQUEST-----",
"contact_email": "contact@example.com",
"domain_dcv": map[string]string{
"example.com": "dns",
"www.example.com": "http",
},
},
)
if err != nil {
panic(err)
}
fmt.Println(resp)

证书退款

接口文档

req := request.CertificateRefundRequest{
ServiceID: serviceID,
}

resp, err := order.CertificateRefund(req)
if err != nil {
panic(err)
}
fmt.Println(resp)

错误处理

resp, err := product.ProductList()
if err != nil {
panic(err)
}
if success, _ := resp["success"].(bool); !success {
panic(resp["message"])
}