apimqatic / subtain-apimatic-sdk
这是一个测试包发布,请忽略
Requires
- php: ^7.2 || ^8.0
- ext-json: *
- apimatic/core: ~0.3.0
- apimatic/core-interfaces: ~0.1.0
- apimatic/unirest-php: ^4.0.0
Requires (Dev)
- phan/phan: 5.4.2
- squizlabs/php_codesniffer: ^3.5
README
介绍
介绍
API集成
Maxio高级计费(以前称为Chargify API)可以通过我们的REST API与许多环境和编程语言集成。我们的部分用户已经贡献了各种编程语言中的API包装器。请查看API代码概述文档,了解包装器和可用的代码示例。
测试指南
Maxio高级计费已编制测试指南,其中涵盖了测试阶段需要考虑的重要因素列表。以下是我们的测试指南中涵盖的高级概述
- 测试信用卡基础
- 测试站点限制
- 实时模式与测试模式
我们强烈建议阅读测试指南以及整个基于应用程序的文档,以帮助您了解产品。
联系支持
我们总是喜欢(并感激)提前了解大型集成。如果您计划通过我们的API将大量数据导入Maxio,我们建议您向“support@chargify.com”发送“提醒”,以便我们可以与您协调,确保您的导入过程顺利。
虽然我们的API被认为是稳定的,但我们仍在不断改进和润色。如果您在集成Maxio高级计费API时遇到问题,请随时联系支持。
如果您对我们的文档有任何其他问题,请随时联系。
支持访问
目前,我们的API支持小组的访问仅限于购买我们更大Maxio支持计划的用户。
但请放心!有很多选择可以帮助您获得所需的答案
- 阅读我们的开发者文档
- 探索API文档中的端点
- 观看我们的视频和教程
- 查看Stack Overflow上的Chargify标签
API概述
Chargify API允许您从自己的应用程序以编程方式与我们系统交互。使用API,您可以与以下资源交互:
- 产品
- 订阅
- 客户
- 等。
API试图符合RESTful设计原则。您通过访问资源集合和元素URI以及使用HTTP动词(GET、POST、PUT和DELETE)与API公开的资源交互。Chargify通过API接受和返回JSON和XML数据。
您可能需要访问网络开发人员或程序员(如果您不是的话)才能充分利用API。
可用格式:JSON和XML
JSON是使用Chargify API的主要和推荐格式。对于需要XML的商家,也提供了向后兼容的XML选项。
认证
认证作为HTTP Basic Authentication over TLS >= 1.2(HTTPS)实现,如API认证中所述
URL
API请求的URL包括您正在工作的网站的子域名
https://<subdomain>.chargify.com/<资源URI>
响应数据
响应数据以XML或JSON形式发送,具体取决于请求的数据类型(HTTP内容类型头)或指定的接受类型(HTTP接受头)。
单个账单和发票的GET请求也可以使用application/pdf
或将.pdf
附加到资源URI作为PDF请求。
响应代码通过正常的HTTP响应代码发送,并且每个资源都有单独的文档。
对于布尔字段,请注意,null
值可能被视为false。但是,并非所有情况下都如此。请在此处做出良好的判断,或者如果有任何问题,请联系支持。
例如
null
可以表示该属性没有可用数据
分页
当端点返回项目列表时,它将被分页。通常,默认返回20个项目,您一次可以请求最多200个。分页通过查询字符串参数进行,例如:?page=5&per_page=200
响应时区
Chargify的API响应包含当前Chargify网站的时区。
另外,Chargify从全球发送的webhooks使用EST作为负载体中所有内容的时区。
请求数据
POST和PUT请求数据可以格式化为XML(application/xml
)或JSON(application/json
)。为了获得最佳结果,您应相应地设置HTTPContent-Type
请求头,尽管您也可以通过在资源URI上附加.xml
或.json
扩展来指定您的格式。
请注意,Chargify不接受以查询参数或表单编码数据发送的PUT或POST数据 - 数据必须以XML或JSON形式发送。如果您未将Content-Type
设置为application/xml
或application/json
,则请求可能会因触发伪造保护机制而失败。
关于十进制数
为了防止精度丢失,我们将十进制数字序列化为字符串,而不是作为JSON数字。
我们建议使用您编程语言的十进制数字库(例如Ruby中的BigDecimal
)将这些字符串解析为其十进制等价物,而不是依赖于浮点值或算术。
关于金额字段
包含金额值的字段以表示十进制货币整数的字符串给出。
例如,在货币"USD"
中,"1.23"
等于$1.23
。
并非所有字段都会四舍五入到最小货币单位。中间结果,例如来自行级税计算的中间结果,可能保留到8位小数的精度。但是,我们提供的顶级总计(例如total_amount
)将四舍五入到最小货币单位。
API消费者负责将字符串解析为十进制数字表示形式,并执行应用程序所需的所有四舍五入。
调试
如果您在通过我们的API执行请求时遇到困难,请尝试最简单的事情,并尝试使用以下示例中的curl命令行工具执行您的请求。将--verbose
标志添加到您的请求中,以接收更多调试信息。
另一个有用的工具是Beeceptor。您可以使用它来拦截您的请求,以查看确切发送了什么。
如果您根本无法连接,请确保您正在使用TLS 1.2或更高版本。
如果您看到“无法解析主机”错误,请务必检查URL是否正确,包括您的子域名。例如:mysite.chargify.com
。此错误意味着您的DNS服务器无法为您尝试连接的域名找到IP地址。
向下兼容性
我们认为以下更改是向下兼容的,并且可能会不预先通知就进行更改
- 添加新的API端点,或在现有端点的响应中添加新的属性
- 向现有API端点添加新的可选参数
- 向导出数据添加新字段
- 更改任何ID属性的类型或长度
- 例如,大多数ID目前是整数,但您不应假设这始终是这种情况。
此外,您不应依赖API响应中属性的顺序,因为这可能发生变化。
Chargify不会为明确定义为向下兼容的添加提供通知。
示例
以下示例使用curl命令行工具执行API请求。
订阅列表
请求
curl -u <api_key>:x -H Accept:application/json -H Content-Type:application/json https://acme.chargify.com/subscriptions.json
API访问限制
以下几种情况可能会导致API请求被阻止,即使凭证正确。请注意:如果以下任何条件成立,所有相关的API请求都将被阻止。这些限制也适用于Chargify Direct。
这些情况如下
- 您的Chargify订阅已取消。
- 您的Chargify试用已结束。
- 您请求的网站正在执行“清除站点数据”过程
- 注意:任何针对状态良好的其他网站的API请求都不会被阻止
- 您请求的网站已被删除。
- 注意:任何针对状态良好的其他网站的API请求都不会被阻止
有关您的Chargify订阅的更多信息,请在此处了解
API请求被阻止时会发生什么
请求将失败,并带有422
http状态码。响应还将包含一个说明请求被阻止原因的消息。例如
- 如果您的Chargify订阅已取消
{ "errors" => [ [0] "Your Chargify account has been canceled. Please contact support@chargify.com to reactivate." ] }
- 如果您的Chargify试用已结束并且您尝试执行API请求,则响应体将如下所示
{ "errors" => [ [0] "Your trial has ended, please contact sales." ] }
- 如果您请求的网站正在执行“清除站点数据”过程
{ "errors" => [ [0] "Site data clearing is in progress. Please try later." ] }
- 如果您请求的网站已被删除
{ "errors" => [ [0] "This site has been deleted." ] }
安全应用程序
请注意,无法直接从客户的浏览器或设备执行API请求。这样做会将您的API密钥暴露在客户端,任何拥有该密钥的人都可以完全访问您的所有Chargify数据。
相反,您需要使用Chargify.js或您网关提供的类似JavaScript库,对敏感信息进行标记化,然后将令牌和其他信息发送到您的服务器,您可以从那里对Chargify进行API调用。
故障排除
如果您尝试从客户的浏览器直接执行Chargify API请求,您可能会看到如下错误
Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
或
Origin 'https://example.com' is therefore not allowed access.` `The response had HTTP status code 404.
这是一个错误消息,表明Chargify服务器上未启用跨源资源共享(CORS)。
关系发票
关系型发票的API兼容性
本节描述了2018年1月引入的新的关系型发票样式的API。
如果您是2018年1月之前的老客户或未明确选择此新风格的发票,您可能需要查看描述发票-billing旧风格发票的“发票”部分。
这些新发票提供了对您所有Chargify计费的单一代价表示,无论您是自动收集还是通过汇款。
关于十进制数
为了防止精度丢失,我们将十进制数字序列化为字符串,而不是作为JSON数字。
我们建议使用您编程语言的十进制数字库(例如Ruby中的BigDecimal
)将这些字符串解析为其十进制等价物,而不是依赖于浮点值或算术。
关于金额字段
包含金额值的字段以表示十进制货币整数的字符串给出。
例如,在货币"USD"
中,"1.23"
等于$1.23
。
并非所有字段都会四舍五入到最小货币单位。中间结果,例如来自行级税计算的中间结果,可能保留到8位小数的精度。但是,我们提供的顶级总计(例如total_amount
)将四舍五入到最小货币单位。
API消费者负责将字符串解析为十进制数字表示形式,并执行应用程序所需的所有四舍五入。
关系型发票摘要
安装包
运行以下命令以安装包并自动将其依赖项添加到您的composer.json文件中
composer require "apimqatic/subtain-apimatic-sdk:2.4.69"
或者按照以下步骤手动将其添加到composer.json文件中
"require": { "apimqatic/subtain-apimatic-sdk": "2.4.69" }
您还可以在此处查看包:https://packagist.org.cn/packages/apimqatic/subtain-apimatic-sdk#2.4.69
初始化API客户端
注意:客户端的文档可在此处找到。链接
以下参数可配置API客户端
API客户端可以按照以下方式初始化
$client = AdvancedBillingClientBuilder::init() ->basicAuthCredentials( BasicAuthCredentialsBuilder::init( 'BasicAuthUserName', 'BasicAuthPassword' ) ) ->environment('production') ->subdomain('subdomain') ->domain('chargify.com') ->build();
环境
SDK可以配置为在制作API调用时使用不同的环境。可用环境包括
字段
授权
此API使用以下身份验证方案。
API列表
- API导出
- 高级发票
- 计费门户
- 自定义字段
- 基于事件的计费段
- 支付配置文件
- 产品系列
- 产品价格点
- 预开发票
- 原因代码
- 推荐代码
- 销售佣金
- 订阅组件
- 订阅组
- 订阅组发票账户
- 订阅组状态
- 订阅发票账户
- 订阅注释
- 订阅产品
- 订阅状态
- 优惠券
- 组件
- 客户
- 事件
- 洞察
- 发票
- 优惠
- 产品
- 网站
- 订阅
- Webhooks