مكتبة PHP لأداء بحث المنتج والبحث باستخدام Amazon Product API.
تتطلب هذه المكتبة أن يتم تثبيت ملحقات SimpleXML و Curl وتستخدم PHP 7+. التثبيت بسيط باستخدام الملحن:
composer require marcl/amazonproductapiيفترض أيضًا أن لديك بعض المعرفة الأساسية لواجهة برمجة تطبيقات منتجات Amazon وأنشأت حساب Amazon Associate راجع: Amazon Product API.
ستحتاج إلى مفتاح AWS ، مفتاح سري ، وعلامة. تأكد من أنك تبقي هذه آمنة!
لقد أضفت بعض الأمثلة البسيطة في examples.php . لتشغيلها ، قم بإنشاء ملف يسمى secretKeys.php يحتوي على مفاتيحك السرية:
<?php
$ keyId = ' YOUR-AWS-KEY ' ;
$ secretKey = ' YOUR-AWS-SECRET-KEY ' ;
$ associateId = ' YOUR-AMAZON-ASSOCIATE-ID ' ;
?>ثم قم بتشغيل الأمثلة مع:
php examples.phpقم بتضمين المكتبة في الكود الخاص بك باستخدام Autoloader الملحن وإنشاء AmazonurlBuilder مع بيانات الاعتماد الخاصة بك
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 ' );ملاحظة: حافظ على آمنة Amazon Keys. إما استخدام متغيرات البيئة أو تضمين من ملف لا تتحقق منه في GitHub.
تدعم هذه المكتبة جميع مناطق API الإعلانية للمنتجات ويمكنك ضبطها أثناء إنشاء فئة AmazonurlBuilder مع مفاتيحك.
في هذا الوقت ، هذه هي اللغات الداعمة الحالية:
للبحث عن عنصر استخدم طريقة ItemSearch() :
// 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 ' ); بشكل افتراضي ، ستبحث طريقة ItemSearch() عن طريق المميز. إذا كنت ترغب في الفرز بفئة أخرى ، فمرر معلمة ثالثة باسم الفئة التي ترغب في فرزها. هذه تختلف حسب نوع الفئة ولكن الاثنين التي ستحتاجها على الأرجح هي price (الفرز حسب السعر المنخفض إلى مرتفع) أو -price (الفرز حسب السعر إلى مستوى منخفض). راجع قيم فرز العناصر لمزيد من التفاصيل.
// 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 ' ); لتحديد فئات صالحة لاستدعاء البحث GetValidSearchNames() :
// Get an array of valid search categories we can use
$ searchCategories = $ amazonAPI -> GetValidSearchNames (); للبحث عن المنتج باستخدام رقم ASIN ، استخدم رقم 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 );بشكل افتراضي ، سيتم إرجاع البيانات كعقد بسيطة. ومع ذلك ، يمكنك طلب تحويل البيانات بشكل مختلف ، اعتمادًا على حالة الاستخدام الخاصة بك في واجهة برمجة التطبيقات. تمرير نوع عند إنشاء فئة Amazonapi على النحو التالي:
// Default return type is XML
$ amazonAPI = new AmazonAPI ( $ amazonUrlBuilder );
$ items = $ amazonAPI -> ItemSearch ( ' harry potter ' );
var_dump ( $ items );هذا سوف يخرج:
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 );سيؤدي ذلك إلى إرجاع نسخة مبسطة من كل عنصر بأقل بيانات ولكن بما يكفي لحالات الاستخدام البسيطة.
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"
…
يتم تعريف أنواع تحويل البيانات المختلفة على النحو التالي. لا تتردد في إثارة مشكلة إذا كنت ترغب في تحويل البيانات إلى نوع جديد.
تستخدم هذه المكتبة رمزًا استنادًا إلى مصادقة AWS API لـ PHP بواسطة David Drake ولكن تمت إعادة كتابتها في الغالب.
انظر الترخيص