magrao/client-side-api

Bibliomundi授权客户端的请求处理器。

dev-master 2021-12-15 20:38 UTC

This package is not auto-updated.

Last update: 2024-09-16 09:19:35 UTC


README

##关于API 我们是Bibliomundi,一家电子书发行商,我们制作了这个API的目的是将我们的电子书与您的商店平台集成。为了在您的商店商业化我们的电子书,确实需要编程知识。注意:此API需要PHP编程知识。如果您使用其他编码标准,我们已发布了完整的webservice,可以通过此链接访问。

要求

工作流程

  1. 导入我们的完整目录。我们将提供包含所有四个活跃电子书的完整ONIX标准XML。

  2. 根据ONIX标准从我们的数据库中插入电子书。

  3. 每天更新以验证是否有新的电子书,如果是元数据更新(例如,标题更改)或如果需要从销售中删除已停用的电子书。我们提供需要更新、添加或删除的电子书的ONIX标准XML。

  4. 在您的商店中启用电子书销售。

  5. 启用客户下载。

安装

只需下载(或克隆),添加到您的项目中,然后调用位于"lib"文件夹中的文件“autoload.php”。完成此步骤后,您将能够访问API的所有功能。

Ex: require 'lib/autoload.php'

步骤1 - 将电子书导入您的商店

通过发送您的凭据作为参数来实例化目录类。

$catalog = new BBM\Catalog('YOUR_API_KEY', 'YOUR_API_SECRET');

定义您将导入我们的电子书的环境是生产还是沙盒。

$catalog->environment = 'production';
ou
$catalog->environment = 'sandbox'; 

以下代码是可选的。它允许您筛选包含或不包含DRM保护的电子书。

 
$catalog->filters( array('drm' => 'no') );)//Will only deliver unprotected
ou
$catalog->filters( array('drm' => 'yes') );)// Will only deliver protected

另一段可选代码。我们提供导入预定大小的电子书封面选项,例如,可以帮助您节省服务器空间。

$catalog->filters( array('image_height' => 500) ););//Delivers covers at the height of 500px
...
$catalog->filters( array('image_width' => 700) ););//Delivers covers at the width of 700px
...
$catalog->filters( array('image_width' => 1024, 'image_height' => 768) );//Delivers covers at the width of 1024px e height de 768px

在此步骤结束时,验证您的凭据并导入电子书。

try
{
    $catalog->validate();//Validate your transactions
    $xml = $catalog->get();//Returns an XML, with the string format and ONIX standard, containing all the active ebooks in our platform
}
catch(\BBM\Server\Exception $e)
{
    var_dump($e);
}

XML返回的每个<Product>标签都是一个电子书。您将遍历所有这些标签,按照ONIX标准将它们插入到您的数据库中。

有关更多详细信息,请查看此处的示例。

步骤2 - 在您的商店中插入电子书

导入我们的电子书的XML后,您可以按您喜欢的任何方式工作,但我们强烈建议使用解析器,例如PHP的Simple XML。您将负责以基本信息的最少量插入电子书。我们还建议不要插入不可销售的标题,为此您必须检查标签<PublishingStatus>和<ProductAvailability>。通过单击此处,您将看到我们使用ONIX标准提供的XML示例以及我们认为最重要的信息。

步骤 3 - 每日更新

我们的常规是每天更新系统,您也需要这样做。创建一个每日例行程序来验证是否添加、更新或删除了新的标题。我们建议您在凌晨 01 至 06 点(GMT -3)之间创建一个任务提醒,以避免显示过时信息的电子书导致错误生成。

只需添加一个名为 'updates' 的第三个参数。

$catalog = new BBM\Catalog('YOUR_API_KEY', 'YOUR_API_SECRET', 'updates');

它不会改变常规的请求。

$catalog->environment = 'production';
ou
$catalog->environment = 'sandbox';

try
{
    $catalog->validate();//Validate your credentials
    $xml = $catalog->get();//Returns an XML with the ebooks and their respective routines (insert, update or delete) in a string format and ONIX

standard
}
catch(\BBM\Server\Exception $e)
{
    var_dump($e);
}

对于 XML 返回的每个 <Product> 标签,都有一个名为 <NotificationType> 的标签,指示要执行的操作。

例如:03 -> 添加。 04 -> 更新。 05 -> 删除。

步骤 4 - 交易

一旦您完成目录的导入,您的消费者就可以购买电子书了。每次消费者尝试从我们这里购买电子书时,您都需要在我们进行结账之前验证交易。请注意,您的验证和结账以及我们的验证和结账是两个不同的过程。您必须始终与我们进行验证和结账,以便我们知道交易已经完成,以便我们可以批准电子书的下载。请记住这一点。

工作流程:

  • 消费者购买我们的一个或多个产品。
  • 您通过 Validate() 函数验证交易。
  • 如果确认,您可以进行您和我们的结账。

通过发送您的凭证作为参数来实例化一个 Purchase 类。

$purchase = new BBM\Purchase('YOUR_API_KEY', 'YOUR_API_SECRET');

选择您的环境。

$catalog->environment = 'production';
ou
$catalog->environment = 'sandbox';

按照以下规则发送进行交易的用户信息。

$customer = [
    'customerIdentificationNumber' => 1, // INT, YOUR STORE CUSTOMER ID
    'customerFullname' => 'CUSTOMER NAME', // STRING, CUSTOMER FULL NAME
    'customerEmail' => 'customer@email.com', // STRING, CUSTOMER EMAIL
    'customerGender' => 'm', // ENUM, CUSTOMER GENDER, USE m OR f (LOWERCASE!! male or female)
    'customerBirthday' => '1991/11/03', // STRING, CUSTOMER BIRTH DATE, USE Y/m/d (XXXX/XX/XX)
    'customerCountry' => 'BR', // STRING, 2 CHAR STRING THAT INDICATE THE CUSTOMER COUNTRY (BR, US, ES, etc)
    'customerZipcode' => '31231223', // STRING, POSTAL CODE, ONLY NUMBERS
    'customerState' => 'RJ' // STRING, 2 CHAR STRING THAT INDICATE THE CUSTOMER STATE (RJ, SP, NY, etc)
];

$purchase->setCustomer($customer);

然后通过添加其 ID 和价格来插入电子书,并告知货币。

$purchase->addItem($ebookID, $ebookPrice, 'USD');

请在此处查看完整的列表:这里

OBS: 您可以通过简单地重复此程序添加所需的电子书数量。

然后验证电子书并继续结账。

try
{
    $purchase->validate();
    
    //A transaction key may be anything but we recommend using the same as the effective transaction. It will be requested when the attempting to download the ebooks related to this checkout.
    $purchase->checkout('TRANSACTION_KEY', time());
}
catch(\BBM\Server\Exception $e)
{
    var_dump($e);
}

完成。如果一切顺利,您已向我们注册了一笔销售。

有关更多详细信息,请参阅以下示例 这里

OBS..

  • 在验证我们之前,不要向您的客户销售电子书,因为存在一些可能使销售无效的条件,例如您的商店未激活或电子书存在问题。
  • 不要忘记与我们确认结账,并且您只能在向客户确认付款后进行一次。

退款购买(进行中)

有时您的客户可能要求退款,在这种情况下,您的商店需要向我们发送请求。

您只需要三个字段。

以下是一个代码示例。

$sale_reverser = new BBM\RefundPurchase(CLIENT_ID, CLIENT_SECRET);

$data = [
    'transaction_key' => 'MY_STORE_TRANSACTION',
    'ebook_ids' => [/*ebook_ids from the transaction*/],
    'refund_reason' => "Reason for the refund"
];

$response = $sale_reverser->requestRefund();

响应

在响应中,您将收到一个关联数组,其中的键是您在请求中发送的每个 ebook_ids。

有两种情况,退款将自动接受:

  • 在法律规定的期间内(七天内)提出请求;
  • 商店和电子书出版社属于同一家公司。

否则,请求将发送到出版社,您将必须等待他们的批准。

消息代码

错误

错误可能发生在所有阶段(完整、更新、验证、结账和下载),您负责处理它们并在必要时通知用户。无论正在执行什么请求,我们都会返回一个包含错误信息的异常。您可以在此处查看错误列表及其相应阶段 这里。我们还提供了由 PHPDoc 生成的 文档