opensoft/inkrouter-php-sdk

此包的最新版本(2.0.0)没有提供许可证信息。

连接到 OpenSoft 工作提交界面的小型 SDK

2.0.0 2023-08-24 16:36 UTC

This package is auto-updated.

Last update: 2024-08-24 19:02:24 UTC


README

InkRouter 的 PHP SDK 是 InkRouter 打印网络的作业提交接口。要从您的网站直接发送打印订单到 InkRouter,您将使用此处文档化的 InkRouter PHP SDK。

InkRouter PHP SDK 是一个库,用于从 PHP 简单地与 InkRouter 界面进行交互。

Build Status

要求

此 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 对象的数组,您可以根据需要使用它。