preluigi / ontraport
Ontraport PHP Rest API 库
Requires
- php: >=5.6.0
- phpunit/phpunit: >=5.0.9
This package is auto-updated.
Last update: 2022-02-01 12:53:09 UTC
README
Ontraport REST API 的 PHP 库
安装 - 使用 Composer
为了使用此库,您需要更新 composer.json 中的 require 配置如下
"require": { "preluigi/ontraport": "dev-master" },
简单概述和用法
首先,您需要使用您的 AppId 和 Key 凭证实例化一个新的 Ontraport 对象实例
$ontraport = new Ontraport\Ontraport ( 'my_app_id', 'my_app_key' );
然后,您可以像这样访问 OP 对象及其 CRUD 函数
$my_contact = $ontraport->Contacts->read ( 55 ); //Where 55 is the ID of the contact print_r ( $my_contact ); /** * Ouputs something like: * stdClass Object * ( * [code] => 0 * [data] => stdClass Object * ( * [name] => Customer Name * [price] => 119.95 * [id] => 340 * [owner] => 2 * [firstname] => * [lastname] => * [email] => * [address] => * [city] => * [state] => * [zip] => * [birthday] => * [date] => 1448207931 * [notes] => * [status] => * [category] => * [lead_source] => * ) * [updates] => Array * ( * ) * [notifications] => Array * ( * ) * [account_id] => 27801 * ) **/ $new_product = array ( 'name' => 'An awesome product!', 'price' => 119.95 ); $result = $ontraport->Products->create ( $new_product ); print_r ( $result ); /** * Outputs something like: * stdClass Object * ( * [code] => 0 * [data] => stdClass Object * ( * [name] => An awesome product! * [price] => 119.95 * [id] => 19 * ) * * [updates] => Array * ( * ) * * [notifications] => Array * ( * ) * * [account_id] => 27801 * ) **/
支持的 Ontraport 对象类型
目前支持以下 Ontraport 对象类型
- 联系人
- 备注
- 对象
- 产品
- 购买
- 运输
- 员工
- 标签
- 税收
您可以使用已看到的语法访问它们
$ontraport->{Object type classname, eg: Contacts}->{method to call}
对象类型方法
每个对象类型都有以下默认方法
find ( string $field, mixed $value, string $operand = '=', string $type = 'auto' )
create ( array $attrs )
read ( int $id )
get ( array $ids )
update ( object $object )
delete ( int $id )
更改 API 版本
默认情况下,该库使用 REST API 的版本 1(目前可用的唯一版本)。您可以使用 Ontraport\Ontraport->set_version 方法更改版本以符合您的需求(??)
$ontraport = new Ontraport\Ontraport ( 'my_app_id', 'my_app_key' ); $ontraport->set_version ( '2.1.2' );
更改默认端点
默认情况下,该库初始化以下端点
array ( 'object' => "https://api.ontraport.com/1/object", 'objects' => "https://api.ontraport.com/1/objects", 'objects_meta' => "https://api.ontraport.com/1/objects/meta", 'objects_tag' => "https://api.ontraport.com/1/objects/tag", 'form' => "https://api.ontraport.com/1/form", 'message' => "https://api.ontraport.com/1/message", 'task_cancel' => "https://api.ontraport.com/1/task/cancel", 'task_complete' => "https://api.ontraport.com/1/task/complete", 'transaction_processmanual' => "https://api.ontraport.com/1/transaction/processManual", 'transaction_refund' => "https://api.ontraport.com/1/transaction/refund", 'transaction_converttodecline' => "https://api.ontraport.com/1/transaction/convertToDecline", 'transaction_converttocollections' => "https://api.ontraport.com/1/transaction/convertToCollections", 'transaction_void' => "https://api.ontraport.com/1/transaction/void", 'transaction_voidpurchase' => "https://api.ontraport.com/1/transaction/voidPurchase", 'transaction_reruncommission' => "https://api.ontraport.com/1/transaction/rerunCommission", 'transaction_markpaid' => "https://api.ontraport.com/1/transaction/markPaid", 'transaction_rerun' => "https://api.ontraport.com/1/transaction/rerun", 'transaction_writeoff' => "https://api.ontraport.com/1/transaction/writeOff", 'transaction_order' => "https://api.ontraport.com/1/transaction/order", 'transaction_resendinvoice' => "https://api.ontraport.com/1/transaction/resendInvoice" );
您可以使用 Ontraport\Ontraport->set_endpoint 方法更改这些端点中的一个或全部
$ontraport = new Ontraport\Ontraport ( 'my_app_id', 'my_app_key' ); $my_endpoints = array ( 'object' => "my_custom_endpoint_for_single_object", 'objects' => "my_custom_endpoint_for_multiple_objects", ); $ontraport->set_endpoint ( $my_endpoints ); // Will only change the endpoints defined in $my_endpoints $ontraport->set_endpoint ( $my_endpoints, true ); // Will substitute all endpoints with only those defined in $my_endpoints
请注意,自定义定义的端点将 不会 使用 API 版本属性生成调用端点,因此您需要传递完整的端点 URI。
库的工作原理
在您开始深入了解 OntraportPHP 的更多高级用法之前,我敢打赌您想详细了解库是如何工作的。所以这里是答案:该库本身由一组按照该模式组织的类组成
class Ontraport --调用--> class Contacts,它扩展了 class Objects
目前,该库仅支持对 Ontraport 对象类型的操作;基本的 CRUD 方法定义在 Ontraport\Objects 类中,该类由特定于对象的类(如 Contacts 或 Products)扩展。因此,当您在 Ontraport\Ontraport 对象上调用 ->Contacts->read() 时,您只是从继承自 Ontraport\Objects 类的 Ontraport\Contacts->read() 方法接收结果。幕后发生的是从 Ontraport\Ontraport 类对象到调用类(例如:Ontraport\Contacts)的依赖注入,实际上这里有两组工作示例
$ontraport = new Ontraport\Ontraport ( 'my_app_id', 'my_app_key' ); /* * Outputs the object representing contact with id=55 */ print_r ( $ontraport->Contacts->read ( 55 ) ); $contacts = new Ontraport\Contacts ( $ontraport ); /* * Outputs the same object as above */ print_r ( $contacts->read ( 55 ) );
扩展库
建议您阅读前面的章节: 库是如何工作的,以便更好地理解以下说明。
基本上有两种方式可以扩展库,使用您自己的类
1) 通过使用自定义命名空间(推荐)
Ontraport\Ontraport 类公开了一个名为 set_namespace 的方法,您可以使用它来修改被调用对象类型类的命名空间,我认为最好有一个示例
namespace MyNamespace; // Using a custom namespace include ( __DIR__ . '/vendor/autoload.php' ); // Including the composer autoload /* * Defining a MyNamespace\Contacts class which extends Ontraport\Contacts */ class Contacts extends Ontraport\Contacts { // Overriding the parent method public function read ( $id ) { $result = parent::read ( $id ); // Adding the "example_field" to parent called method object result $result->data->example_field = 'Test'; return $result; } } $ontraport = new Ontraport\Ontraport ( 'my_app_id', 'my_app_key' ); $ontraport->Contacts->read ( 55 ); // Will return the Contact object with ID=55 /* * Changing the base namespace where Ontraport\Ontraport looks for class inclusion */ $ontraport->set_namespace ( 'MyNamespace' ); $ontraport->Contacts->read ( 55 ); // Will return the Contact object with ID=55 and added field "example_field"
使用这种方法,您可以覆盖任何对象类型类并定义自己的,同时保持 $ontraport->ClassName 清晰且紧凑的语法。
2) 通过使用依赖注入
这种方法与前面提到的第一种方法类似,但不是改变用于包含的基本命名空间,而是扩展对象类型类,并使用依赖注入将 Ontraport\Ontraport 对象传递给类构造函数。示例
namespace MyNamespace; // Using a custom namespace include ( __DIR__ . '/vendor/autoload.php' ); // Including the composer autoload /* * Defining a MyNamespace\Contacts class which extends Ontraport\Contacts */ class Contacts extends Ontraport\Contacts { // Overriding the parent method public function read ( $id ) { $result = parent::read ( $id ); // Adding the "example_field" to parent called method object result $result->data->example_field = 'Test'; return $result; } } $ontraport = new Ontraport\Ontraport ( 'my_app_id', 'my_app_key' ); $contacts_object = new Contacts ( $ontraport ); $contacts_object->read ( 55 ); // Will return the Contact object with ID=55 and added field "example_field"