opensoft / inkrouter-php-sdk
此包的最新版本(2.0.0)没有提供许可证信息。
连接到 OpenSoft 工作提交界面的小型 SDK
2.0.0
2023-08-24 16:36 UTC
Requires
- php: >=7.2.0
- ext-curl: >=7.2
- ext-dom: 20031129
- ext-soap: >=7.2.0
- ext-xmlwriter: >=7.2.0
Requires (Dev)
- phpunit/phpunit: 8.*
README
InkRouter 的 PHP SDK 是 InkRouter 打印网络的作业提交接口。要从您的网站直接发送打印订单到 InkRouter,您将使用此处文档化的 InkRouter PHP SDK。
InkRouter PHP SDK 是一个库,用于从 PHP 简单地与 InkRouter 界面进行交互。
要求
此 SDK 需要
- PHP 5.0.x 及以上版本
- libxml PHP 扩展
安装
使用 Composer
$ composer require opensoft/inkrouter-php-sdk
不使用 Composer
- 下载 zip 文件 文件
- 将下载的 zip 文件解压到项目中的任何目录(例如 /path/to/your/project/libs/InkRouter)
- InkRouter PHP SDK 可以使用任何 PSR0 兼容的自动加载器,或者您可以使用
tests/bootstrap.php
中包含的自动加载器,通过简单的require_once
语句
InkRouter 工作流程
InkRouter 界面工作流程包括 6 个操作
- 获取 InkRouter 客户端实例
- 创建并填充 InkRouter_Models_OrderInfo 实例
- 向 InkRouter 创建订单
- 更新订单(可选)
- 挂起订单(可选)
- 取消挂起订单(可选)
- 取消订单(可选)
- 从 InkRouter 接收订单更新
获取 InkRouter 客户端实例
在执行任何操作之前,执行获取 InkRouter 客户端实例,示例
$InkRouterClient = new InkRouter_Client_Client($wsdl, $printCustomerId, $secretKey);
其中
$wsdl
是 InkRouter 服务的 URL$printCustomerId
是从 InkRouter 获取的唯一标识符$secretKey
是您的密钥
创建 InkRouter_Models_OrderInfo 实例(带示例数据)
$contact = new InkRouter_Models_Contact();
$contact->setName('contact_name')
->setPhone('contact_phone')
->setEmail('contact_email');
$headerInfo = new InkRouter_Models_HeaderInfo();
$headerInfo->setFromDomain('yoursite.com')
->setFromIdentity('your_identity');
$shipType = new InkRouter_Models_ShipType();
$shipType->setMethod('UPS')
->setServiceLevel('GROUND');
$shipAddress = new InkRouter_Models_ShipAddress();
$shipAddress->setAttention('Attention')
->setStreetAddress('742 Evergreen Terrace')
->setCity('Springfield')
->setState('CA')
->setZip('1234567')
->setCountry('USA');
$requester = new InkRouter_Models_Requester();
$requester->setName('Any Prints')
->setContract('STANDARD')
->setPayTerm('FREE');
$poInfo = new InkRouter_Models_PoInfo();
$poInfo->setAgentId('agentId')
->setCurrency('US');
$printAsset = new InkRouter_Models_PrintAsset();
$printAsset->setPositionX(4.98)
->setPositionY(3.1)
->setRotation(-90)
->setType('BARCODE')
->setHeight(0.543)
->setWidth(2.12);
$side = new InkRouter_Models_Side();
$side->setPageNumber(10)
->setFileUrl('http://server/img.jpg')
->setFileHash('0a0825909aa15a98b00574661f23aee7')
->setCoating('NONE')
->setOrientation('Landscape')
->addPrintAsset($printAsset);
$attributes = new InkRouter_Models_Attributes_ScalarBooleanAttribute();
$attributes->setType('LABELING');
$attributes->setValue(true);
$orderItem = new InkRouter_Models_OrderItem();
$orderItem->setPrintGroupId('pg4f7969f8a4811')
->setProductType('business cards')
->setPaperType('14PT')
->setQuantity(500)
->setRegionSize('US')
->setCost(20.3)
->addAttributes($attributes)
->addSide($side);
$order = new InkRouter_Models_Order();
$order->setPrintCustomerInvoice(123456789)
->setTsCreated(date(DATE_ATOM, strtotime('now')))
->setPriority(0)
->setShippingFee(10)
->setProductDiscounts(0)
->setShippingDiscounts(0)
->setVendorId('vendor_id')
->setContact($contact)
->setShipType($shipType)
->setRequester($requester)
->setShipAddress($shipAddress)
->addOrderItem($orderItem);
$orderInfo = new InkRouter_Models_OrderInfo();
$orderInfo->setHeaderInfo($headerInfo)
->setPrintCustomerId('ID')
->setPoInfo($poInfo)
->setOrder($order);
向 InkRouter 创建订单
创建 InkRouter Models_OrderInfo 实例后,按如下方式将订单创建到 InkRouter
try {
$orderId = $InkRouterClient->createOrder($timestamp, $orderInfo);
} catch (InkRouter_Exceptions_Exception $e) {
echo 'Create operation failed';
}
其中
$timestamp
是 Unix 时间戳(mktime() 函数的结果),如果您的最后操作失败,您可以使用相同的时间戳重新发送它$orderInfo
是 InkRouter_Models_OrderInfo 的实例(见示例)$orderId
是从 InkRouter 收到的订单标识符
更新订单
您首先创建 InkRouter Models OrderInfo 的实例并调用更新方法
try {
$InkRouterClient->updateOrder($orderId, $timestamp, $orderInfo);
} catch (InkRouter_Exceptions_Exception $e) {
echo 'Update operation failed';
}
其中
$orderId
是要更新的订单标识符
挂起订单
对于挂起 ID 为 $orderId
的订单,您应该这样做
try {
$InkRouterClient->placeOnHold($orderId, $timestamp);
} catch (InkRouter_Exceptions_Exception $e) {
echo 'Place on hold operation failed';
}
取消挂起订单
对于取消挂起 ID 为 $orderId
的订单,您应该这样做
try {
$InkRouterClient->removeHold($orderId, $timestamp);
} catch (InkRouter_Exceptions_Exception $e) {
echo 'Remove hold operation failed';
}
取消订单
对于取消 ID 为 $orderId
的订单,您应该这样做
try {
$InkRouterClient->cancelOrder($orderId, $timestamp);
} catch (InkRouter_Exceptions_Exception $e) {
echo 'Cancel operation failed';
}
从 InkRouter 接收订单更新
对于从 InkRouter 成功接收更新消息,您应该将任何可以接收 POST 请求的控制器,通过 InkRouter-dashboard 添加到您的帐户中的 URL。然后,您可以使用 InkRouter_Response_Response 类来解析 POST 内容中的 XML 字符串
$updates = InkRouter_Response_Response::fromPack($xml)->getUpdates();
其中 $updates
是 InkRouter_Response_Update 对象的数组,您可以根据需要使用它。