mirahost/amazonproductapi
Composer 安装命令:
composer require mirahost/amazonproductapi
包简介
PHP library to perform product lookup and searches using the Amazon Product API.
README 文档
README
PHP library to perform product lookup and searches using the Amazon Product API.
Installation
This library requires the SimpleXML and Curl extensions to be installed and uses PHP 7+ . Installation is simple using Composer:
composer require mirahost/amazonproductapi
Amazon Product API
It also assumes that you have some basic knowledge of Amazon's Product API and have set up an Amazon Associate account see: Amazon Product API Set Up.
You'll need an AWS key, secret key, and associate tag. Ensure that you keep these safe!
Examples
I've added some simple examples in examples.php. To run them create a file called secretKeys.php containing your secret keys:
<?php $keyId = 'YOUR-AWS-KEY'; $secretKey = 'YOUR-AWS-SECRET-KEY'; $associateId = 'YOUR-AMAZON-ASSOCIATE-ID'; ?>
and then run the examples with:
php examples.php
Quick Start
Include the library in your code using the Composer autoloader and create an AmazonUrlBuilder with your credentials
require('vendor/autoload.php'); use MarcL\AmazonAPI; use MarcL\AmazonUrlBuilder; // Keep these safe $keyId = 'YOUR-AWS-KEY'; $secretKey = 'YOUR-AWS-SECRET-KEY'; $associateId = 'YOUR-AMAZON-ASSOCIATE-ID'; // Setup a new instance of the AmazonUrlBuilder with your keys $urlBuilder = new AmazonUrlBuilder( $keyId, $secretKey, $associateId, 'uk' ); // Setup a new instance of the AmazonAPI and define the type of response $amazonAPI = new AmazonAPI($urlBuilder, 'simple'); $items = $amazonAPI->ItemSearch('harry potter', 'Books', 'price');
Note: Keep your Amazon keys safe. Either use environment variables or include from a file that you don't check into GitHub.
Locale
This library supports all Product Advertising API locales and you can set it as you construct the AmazonUrlBuilder class with your keys.
At this time, these are the current supported locales:
- Brazil ('br')
- Canada ('ca')
- China ('cn')
- France ('fr')
- Germany ('de')
- India ('in')
- Italy ('it')
- Japan ('jp')
- Mexico ('mx')
- Spain ('es')
- United Kingdom ('uk')
- United States ('us')
Item Search
To search for an item use the ItemSearch() method:
// Search for harry potter items in all categories $items = $amazonAPI->ItemSearch('harry potter'); // Search for harry potter items in Books category only $items = $amazonAPI->ItemSearch('harry potter', 'Books');
Default sort
By default, the ItemSearch() method will search by featured. If you want to sort by another category then pass a 3rd parameter with the name of the category you wish to sort by. These differ by category type but the two you'll probably need are price (sort by price low to high) or -price (sort by price high to low). See ItemSearch Sort Values for more details.
// Search for harry potter items in Books category, sort by low to high $items = $amazonAPI->ItemSearch('harry potter', 'Books', 'price'); // Search for harry potter items in Books category, sort by high to low $items = $amazonAPI->ItemSearch('harry potter', 'Books', '-price');
To determine valid categories for search call GetValidSearchNames():
// Get an array of valid search categories we can use $searchCategories = $amazonAPI->GetValidSearchNames();
Item Lookup
To look up product using the product ASIN number use ItemLookup():
// Retrieve specific item by id $items = $amazonAPI->ItemLookUp('B003U6I396'); // Retrieve a list of items by ids $asinIds = array('B003U6I396', 'B003U6I397', 'B003U6I398'); $items = $amazonAPI->ItemLookUp($asinIds);
Data Transformation
By default the data will be returned as SimpleXML nodes. However, you can ask for the data to be transformed differently, depending on your use case for the API. Pass a type when instantiating the AmazonAPI class as follows:
// Default return type is XML $amazonAPI = new AmazonAPI($amazonUrlBuilder); $items = $amazonAPI->ItemSearch('harry potter'); var_dump($items);
This will output:
class SimpleXMLElement#2 (2) {
public $OperationRequest =>
class SimpleXMLElement#3 (3) {
public $RequestId =>
string(36) "de58449e-0c1a-47ac-9823-00fd049c52df"
public $Arguments =>
class SimpleXMLElement#5 (1) {
public $Argument =>
array(11) {
...
// Return simplified data $amazonAPI = new AmazonAPI($amazonUrlBuilder, 'simple'); $items = $amazonAPI->ItemSearch('harry potter'); var_dump($items);
This will return a simplified version of each item with minimal data but enough for simple use cases.
array(10) {
[0] =>
array(8) {
'asin' =>
string(10) "B00543R3WG"
'url' =>
string(212) "http://www.amazon.co.uk/Harry-Potter-Complete-8-Film-Collection/dp/B00543R3WG%3FSubscriptionId%3D1BM0B8TXM1YSZ1M0XDR2%26tag%3Ddjcr-21%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB00543R3WG"
'rrp' =>
double(44.99)
'title' =>
string(58) "Harry Potter - The Complete 8-Film Collection [DVD] [2011]"
'lowestPrice' =>
double(23.4)
'largeImage' =>
string(53) "http://ecx.images-amazon.com/images/I/51qa9nTUsEL.jpg"
'mediumImage' =>
string(61) "http://ecx.images-amazon.com/images/I/51qa9nTUsEL._SL160_.jpg"
'smallImage' =>
string(60) "http://ecx.images-amazon.com/images/I/51qa9nTUsEL._SL75_.jpg"
}
[1] =>
array(8) {
'asin' =>
string(10) "0747558191"
'url' =>
string(212) "http://www.amazon.co.uk/Harry-Potter-Philosophers-Stone-Rowling/dp/0747558191%3FSubscriptionId%3D1BM0B8TXM1YSZ1M0XDR2%26tag%3Ddjcr-21%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D0747558191"
'rrp' =>
double(6.99)
'title' =>
string(40) "Harry Potter and the Philosopher\'s Stone"
…
The different data transformation types are defined as follows. Feel free to raise an issue if you'd like the data transforming to a new type.
- xml - (Default) returns data as SimpleXML nodes.
- array - Returns data as PHP arrays and objects.
- simple - Returns data as simplified arrays and doesn't contain all API data. Use this if you just need prices, title and images.
- json - Returns data as a JSON string. Use this for returning from a server API endpoint.
TODO
- Need to make the simplified data less hardcoded!
Thanks
This library uses code based on AWS API authentication For PHP by David Drake but has been mostly rewritten.
LICENSE
See LICENSE
mirahost/amazonproductapi 适用场景与选型建议
mirahost/amazonproductapi 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 1.32k 次下载、GitHub Stars 达 0, 最近一次更新时间为 2017 年 12 月 10 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「api」 「product」 「amazon」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 mirahost/amazonproductapi 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 mirahost/amazonproductapi 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 mirahost/amazonproductapi 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
This package includes a script and fail2ban configuration that allows you to use fail2ban when utilizing AWS elastic load balancer (ELB) and an apache webserver.
Simple RSS generator library for PHP 5.5 or later. clone from Bhaktaraz Bhatta ttps://github.com/bhaktaraz/php-rss-generator
A PSR-7 compatible library for making CRUD API endpoints
Display your categories and products on front end of your website
Product catalog for your Symfony2 applications.
SilverCommerce module that adds customisable products (adding dropdowns, radio buttons or textfields to a product)
统计信息
- 总下载量: 1.32k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 17
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2017-12-10