
سه مقاله قبلی در مورد پروکسی آمازون مربوط به API تبلیغات محصول آمازون نسخه 4 . در آغاز سال 2020 ، آمازون آن را با نسخه جدید نسخه 5.0 جایگزین می کند. این بدان معنی است که تغییرات اساسی در حال تغییر است و برای کاربران PA-API تقریباً هیچ سنگی در هنگام جابجایی از V4 به V5 وجود ندارد. در این مقاله به تفاوت های نسخه های API 4 و 5 ، مهاجرت کلیدهای API و نوت بوک جدید می پردازیم. سپس سرور پروکسی آمازون به نسخه جدید 5.0 Amazon PA-API به روز شد.
با PA-API 5.0 چه تغییر می کند؟
البته ، API جدید بهتر ، باریک تر و سریعتر است. ؛-) موارد زیر بسیار جالب است:
- کلیدهای دسترسی جدید (اعتبار) – حداقل کلیدهای قدیمی تر باید منتقل شوند. ما توضیح خواهیم داد که آیا این در واقع در بخش بعدی ضروری است.
- دریافت دیگر در قالب XML نیست ، اما داده JSON (قلب برنامه نویسان سریعتر ضرب می شود).
- امضای پرس و جو ارسال شده امن تر می شود (اما منجر به کد بسیار طولانی تری نیز می شود).
- گروه های پاسخگویی لغو شده اند (که مضر نیست) ، اکنون [ منابع وجود دارد.
- جدید است Scratchpad .
- و البته اسناد جدید وجود دارد.
بررسی کلیدهای API موجود
آمازون می گوید که کلیدهای API قبل از 29 سپتامبر 2017 ایجاد شده را باید منتقل کنید. احتمالاً جدیدتر نیست. برای امنیت ، بیایید آن را با استفاده از Scratchpad امتحان کنیم. اگر نمی دانید یک نوت بوک چیست ، باید قسمت اول این سری از مقالات را دوباره بخوانید ، حتی اگر هنوز هم برای نسخه PA-API نسخه 4. اعمال شود.
همانطور که گفته شد ، جدید برای API 5.0 Scratchpad وجود دارد. کارهایی مشابه قدیمی است ما آن را صدا می کنیم و به می روید جراحی را در GetItems انتخاب کنید.

و در اینجا داده های دسترسی خود را وارد می کنیم. علاوه بر این که نامها کمی تغییر کرده اند و نوع شریک تقریبا مطابق با نوشته های موجود در نوت بوک قدیمی است.
در بخش GetItems را در زیر مشخص می کنیم ArticleIds صحیح آمازون ASIN را وارد کنید ASIN (یعنی شماره محصول) و هر نوع را برای مثال انتخاب کنید. همه را انتخاب کنید. با کلیک روی فرمان اجرای در سمت راست نشان می دهد که آیا کلیدهای دستی کار می کنند یا خیر. اگر پیام خطایی مانند را به عنوان پاسخ به پاسخ ارسال شده دریافت کنیم ، بدین معنی است که کلیدهای دسترسی ما با API 5.0 سازگار نیستند و باید منتقل شوند .

کلیدهای مهاجرت API
آمازون همچنین به این زبان دستورالعمل های انگلیسی دارد ، اما موضوع بسیار ساده است. این مهم است که بدانید کلیدهای جدید در طی فرآیند مهاجرت تولید می شوند. نسخه های قدیمی حفظ می شوند و هنوز هم می توانند با PA-API 4 استفاده شوند – حداقل تا زمانی که API 4 در دسترس باشد. جفت اصلی جدید با PA-API 4 و PA-API 5 کار می کند.
برای انجام مهاجرت ، به Amazon PartnerNet وارد شوید ، به عنوان مثال از طریق لینک درآمد در SiteStripe بیش از هر صفحه از محصول آمازون. سپس در منو به Tools و API تبلیغ محصول بروید .

تحت مدیریت داده های دسترسی اکنون می توانیم با استفاده از دکمه حرکت را مدیریت کنیم. مهم است که کلیدهای دسترسی جدید را به طور ایمن ذخیره کنید – کلید مخفی آنقدر مخفی است که بعداً نمی توانید به آن دسترسی پیدا کنید.
ساختار داده را با صفحه خراش
بررسی کنید [ساختار[scratchpad] بسیار شبیه به ساختار قدیمی است. مهمتر از همه این است که گروههای پاسخگویی ناپدید شده اند و در عوض منابع وجود دارد. زمینه های داده پاسخ (عنوان محصول ، توضیحات ، قیمت) را که می خواهید بدست آورید مشخص می کند. در گذشته ، کل لیست ها انتخاب می شدند ، مانند بزرگ ، که هرگز درست نبود. اکنون می توانید منابع فردی را بصورت جداگانه یا در گروه های کوچک انتخاب کنید. در ابتدا ، این کمی مشکل ساز است ، اما منجر به پاسخ های جمع و جور تر از API می شود
دومین تغییر آشکار را می توان در قالب پاسخ مشاهده کرد . در اوایل XML توسط JSON جایگزین شد که برای من بسیار خوشایند تر است. XML هرگز مرا گرم نکرده است. به جز اینکه همه نام ها و کل ساختار تغییر کرده اند ، رویه مانند گذشته است. ما باید به جستجوی مکانهایی در داده های حاوی اطلاعات لازم بپردازیم. من قبلاً این کار را برای سرور پروکسی آمازون انجام داده ام – در زیر مراجعه کنید.
اگر اکنون فکر می کنید که اطلاعات بیشتری وجود دارد ، باید سریعاً شما را ناامید کنم. از ژانویه سال 2020 کمتر از گذشته خواهد بود. به عنوان مثال بازبینی ویرایش که شامل توضیحات محصول است ، در PA-API 5.0 وجود ندارد (هنوز).
و اکنون ما به بخش هایی از کد و آن برای پی اچ پی نگاه می کنیم. خبرهای خوب و بد وجود دارد:
الف) کد PHP PHP بهتر و کامل تر است. اگر فقط درخواست قدیمی بر روی صفحه خراش قدیمی تنظیم و امضا شده باشد ، پرس و جو نیز در مورد جدید انجام می شود و جواب نمایش داده می شود. (بنابراین وقتی کد برنامه را بر روی سرور خود قرار می دهید و اجرا می کنید.)
b) به دلیل امضای پیچیده تر (کلاس AwsV4) و منابع تعریف شده به صورت جداگانه ، کد بسیار طولانی تر است.
هر دو باعث شد که من کد نمونه از PHP (تا حد زیادی) را بپذیرم. اما من آن را مستقیماً در برنامه amaprox.php نمی سازم ، بلکه در عوض یک پرونده پیوست پیوست ایجاد می کنم.
اصلاح پروکسی آمازون برای PA-API 5.0
تاکنون ، این مقاله در مورد آمازون تبلیغات محصول API 5.0 خود API 5.0 و نوآوری در مقایسه با نسخه 4 بود. اکنون ما در مورد چگونگی صحبت خواهیم کرد. سرور پروکسی آمازون من در مورد قسمت دوم این سری از مقاله ها صحبت می کنم که می توانید به PA-API 5.0 مهاجرت کنید. خبر خوب اول: کار محدود به مؤلفه سرور PHP پروکسی آمازون است. پروکسی مشتری و ادغام آن با WordPress یا وب سایت های دیگر بدون تغییر باقی مانده است.
paapi5.php
این پرونده جدید اضافه شده است که حاوی است که من قبلاً نیز به آن اشاره کردم و تا حد زیادی با نمونه کد PHP تولید شده توسط Amazon PA-API 5.0 Scratchpad مطابقت دارد.
setRegionName (منطقه $)؛
$ Awsv4 -> setServiceName (نام سرویس $)؛
$ awsv4-> setPath ($ uriPath)؛
$ awsv4-> setPayload (بار $)؛
$ awsv4-> setRequestMethod ("پست")؛
$ awsv4-> addHeader ("رمزگذاری محتوا" ، "amz-1.0")؛
$ awsv4-> addHeader (& # 39؛ نوع محتوا & # 39؛، & # 39؛ برنامه / json؛ charset = utf-8 & # 39؛)؛
$ awsv4-> addHeader (& # 39؛ میزبان & # 39؛، $ میزبان)؛
$ awsv4-> addHeader (& # 39؛ x-amz-target & # 39؛، & # 39؛ com.amazon.paapi5.v1.ProductAdvertisingAPIv1.GetItems & # 39؛)؛
$ headers = $ awsv4-> getHeaders ()؛
$ headerString = "http://blog.helmutkarger.de/"؛
foreach ($ هدر به عنوان $ key => مقدار) {
$ headerString. = کلید $. ":". ارزش $ " R n"؛
}
$ params = آرایه (
"Http" => آرایه (
"Header" => $ headerString ،
"روش" => "POST"
"محتوا" => $ payload
)
)؛
$ stream = stream_context_create ($ Params)؛
$ fp =fopen (& # 39؛ https: //' ؛.$host.$uriPath،'؛ rb & # 39؛، false، stream $)؛
اگر (! $ fp) {
بازگشت به باطل؛
}
پاسخ $ =stream_get_contents ($ fp)؛
پاسخ $ بازگشت؛
}
کلاس AwsV4
خصوصی $ accessKey = null؛
خصوصی $ secretKey = null؛
مسیر $ private = null؛
خصوصی $ regionName = null؛
سرویس $ $ name = null؛
خصوصی $ httpMethodName = null؛
خصوصی $ queryParametes = آرایه ()؛
خصوصی $ awsHeaders = آرایه ()؛
خصوصی $ payload = "http://blog.helmutkarger.de/"؛
خصوصی $ HMACAlgorithm = "AWS4-HMAC-SHA256"؛
خصوصی $ aws4Request = "aws4_ درخواست"؛
خصوصی $ strSignedHeader = null؛
خصوصی $ xAmzDate = null؛
$ $ فعلیDate = null؛
عملکرد عمومی __construct ($ accessKey ، $ secretKey) {
$ this-> accessKey = $ accessKey؛
$ this-> secretKey = $ secretKey؛
$ this-> xAmzDate = $ this-> getTimeStamp ()؛
$ this-> currentDate = $ this-> getDate ()؛
}
تابع setPath (مسیر $) {
$ this-> path = $ path؛
}
تابع setServiceName ($ serviceName) {
$ this-> serviceName = $ serviceName؛
}
تابع setRegionName ($ منطقه نام) {
$ this-> regionName = $ regionName؛
}
تابع setPayload ($ بار) {
$ this-> load = $ load؛
}
تابع setRequestMethod (روش $) {
$ this-> روش httpMethodName = $؛
}
تابع addHeader ($ headerName ، $ headerValue) {
$ this-> awsHeaders [$headerName] = $ headerValue؛
}
تابع خصوصی Prepar_CanonicalRequest ()
$ canonicalURL = "http://blog.helmutkarger.de/"؛
$ canonicalURL. = $ this-> httpMethodName. " N"؛
$ canonicalURL. = $ this-> مسیر. " N" " N"؛
$ signHeaders = "http://blog.helmutkarger.de/"؛
foreach ($ this-> awsHeaders به عنوان $ key => مقدار $) {
$ SignatureHeaders. = کلید $. "؛"
$ canonicalURL. = کلید $. ":". ارزش $ " N"؛
}
$ canonicalURL. = " n"؛
$ this-> strSignedHeader = substr ($ ointHeaders، 0، - 1)؛
$ canonicalURL. = $ this-> strSignedHeader. " N"؛
$ canonicalURL. = $ this-> generateHex ($ this-> payload)؛
$ canonicalURL را بازگردانید
}
تابع خصوصی PreparateStringToSign ($ canonicalURL)
$ stringToSign = "http://blog.helmutkarger.de/"؛
$ stringToSign. = $ this-> HMACAlgorithm. " N"؛
$ stringToSign. = $ this-> xAmzDate. " N"؛
$ stringToSign. = $ this-> currentDate. "/". $ this-> منطقه نام. "/". $ this-> خدمات نام. "/". $ this-> aws4 درخواست. " N"؛
$ stringToSign. = $ this-> generateHex ($ canonicalURL)؛
بازگشت $ stringToSign؛
}
امضای توابع خصوصی ثبت نام ($ stringToSign) {
$ SignatureKey = $ this-> getSignatureKey ($ this-> secretKey، $ this-> currentDate، $ this-> regionName، $ this-> serviceName)؛
$ Signature = hash_hmac ("sha256" ، $ stringToSign ، $ SignatureKey ، true)؛
$ strHexSignature = strtolower (bin2hex (امضای $))؛
بازگشت $ strHexSignature؛
}
عملکرد عمومی getHeaders ()
$ this-> awsHeaders ['x-amz-date'] = $ this-> xAmzDate؛
ksort ($ this-> awsHeaders)؛
// مرحله 1: یک برنامه کاربردی کانن داشته باشید
$ canonicalURL = $ this-> PreparCanonicalRequest ()؛
// مرحله 2: ایجاد یک STRING برای ورود به سیستم
$ stringToSign = $ this-> PreparStringToSign ($ canonicalURL)؛
// مرحله 3: نشانه محاسبه
$ Signature = $ this-> جایگزین Signature ($ stringToSign)؛
// مرحله 4: رئیس مرکز اعتبار را محاسبه کنید
اگر (امضای $) {
$ this-> awsHeaders ['Authorization'] = $ this-> buildAuthorizationString (امضای $)؛
$ $-- awsHeaders را بازگردانید.
}
}
عملکرد خصوصی buildAuthorizationString ($ strSignature)
الگوریتم $ this-> HMAC را برمی گرداند. "Http://blog.helmutkarger.de/." "صدور گواهینامه =". $ this-> accessKey. "/". $ this-> getDate (). "/". $ this-> منطقه نام. "/". $ this-> خدمات نام. "/". $ this-> aws4 درخواست. "". "SuedHeaders =". $ this-> strSignedHeader. "". "امضا =". $ StrSignature؛
}
تابع خصوصی ایجاد کنید ($ $) {
strtolower Return (bin2hex (هش ("sha256" ، داده $ ، درست)))؛
}
عملکرد خصوصی getSignatureKey (کلید $ ، تاریخ $ ، نام منطقه ، نام سرویس $ نام) {
$ kSecret = "AWS4". کلید $؛
$ kDate = hash_hmac ("sha256" ، تاریخ $ ، $ kSecret ، درست)؛
$ kRegion = hash_hmac ("sha256" ، $ regionName ، $ kDate ، درست)؛
$ kService = hash_hmac ("sha256" ، $ serviceName ، $ kRegion ، درست)؛
$ kSigning = hash_hmac ("sha256" ، $ this-> aws4 درخواست ، $ kService ، درست)؛
بازگشت $ kSigning؛
}
عملکرد خصوصی getTimeStamp ()
بازگشت gmdate ("Ymd THIS Z")؛
}
عملکرد خصوصی getDate ()
بازگشت gmdate ("Ymd")؛
}
}
؟>
نیمی دیگر از برنامه ، یعنی کلاس AwsV4
کاملاً بدون تغییر است و مطابق با خروجی 1: 1 از نوت بوک است. در نیمه بالا اصلاحات زیر را انجام دادم :
- من کل قسمت بالای برنامه را در عملکرد
paapi5
که 4 پارامتر گذراند ، انجام دادم. این عملکرد داده های ارسال شده به API ($ paypoad
) را گردآوری می کند ، آن را امضا می کند ، درخواستی را به آمازون می فرستد و پاسخی با فرمت JSON را به تماس گیرنده برمی گرداند. - برای این منظور ، من از چهار پارامتر انتقال استفاده کردم که در برنامه مثال به عنوان متغیر ذخیره شده بودند – مثلاً در بارگذاری. با این حال ، پارامترهایی که برای نیازهای سرور پروکسی آمازون تغییر نمی کنند ، مانند بازار ، منابع و منطقه ، در عملکرد کاملاً تعریف می شوند. این ظریف نیست بلکه عملی است. پاسخ
- پاسخ echo به نفع بازگشت حذف شد پاسخ $ بازگشت .
- دو پیام خطا
با استفاده از یک استثناء جدید
من نیز حذف کردم و [] عبارت دروغین
را حذف کردم. در صورت بروز خطا Proxy Amazon باید در سکوت بمیرد و نباید پیام های خطایی را در وبلاگ وردپرس منتشر کند.
تغییرات در amaprox.php
این ] کامپوننت سرور PHP پروکسی آمازون از قسمت 2 این مجموعه مقالات است. این برنامه شامل نه بخش از برنامه است که من در ابتدا به فقط به مواردی که با PA-API 5.0 تغییر یافته اند ، اشاره خواهم کرد. سپس تمام کد ها دوباره در یک قطعه ظاهر می شوند.
I. تعاریف
<؟ پی اچ پی نیاز به "paapi5.php"؛ $ access_key = "ABCDEFGHIJKLMNO"؛ $ secret_key = "AbCdEfGhIjKlMnOpQrStUvWxYz"؛ $ Associate_tag = "wwwmeinesite-21"؛ $ cachefolder = "حافظه نهان"؛ $ amaprox_homeURL = "https://www.meine-site.de/amaprox"؛ موفق19659038ولوها با شروع دستورالعمل_st19459030] به
نیاز دارد که حاوی پرونده پیوست است. این برنامه فرض می کند که در همان فهرستamaprox.php
قرار دارد اما مطمئناً نیازی به انجام آن نیست. سپس به همان شکل مانند برنامه قدیمی ، کلیدهای و Associate Tag را ادامه دهید. مهم: از کلیدهای مناسب در اینجا استفاده کنید PA-API 5.0 . در صورت لزوم زودتر مهاجرت کنید. برخی از تعاریف برنامه قبلی در اینجا حذف شده اند - آنها در یک فایل پیوست ذخیره می شوند.IV. ایجاد یک پرس و جو
این بخش کاملاً حذف شده است - عملکرد آن به یک پرونده پیوست منتقل شده است.
V. از آمازون سؤال کنید و به [j65=paapi5($access_key،$secret_key،$Associate_tag،$asin)پاسخدهید
پرس و جو کاملاً متفاوت است – این عملکرد را در پرونده پیوست فراخوانی می کند و جواب خطای false
را دریافت می کند و در صورت موفقیت ، ساختار JSON باز می گردد.
VI. تجزیه و تحلیل پاسخ
if ($ json === FALSE) {
بازگشت؛
}
پاسخ $ = json_decode ($ json)؛
اگر (پاسخ $ === FALSE)
بازگشت؛
}
اگر (! خالی ($ پاسخ -> خطا)) {
بازگشت؛
}
if (! $ پاسخ-> ItemsResult-> موارد [0] -> ASIN)
بازگشت؛
}
if ($ bers-> ItemsResult-> موارد [0] -> ASIN! == $ asin) {
بازگشت؛
}
$ ama_title = $ پاسخ-> ItemsResult-> موارد [0] -> ArticleInfo-> عنوان-> DisplayValue؛
$ ama_medium = $ پاسخ-> ItemsResult-> موارد [0] -> تصاویر-> اولیه-> متوسط؛
$ ama_page_url = $ پاسخ-> ItemsResult-> موارد [0] -> جزئیاتPageURL؛
$ ama_preis = $ پاسخ-> ItemsResult-> موارد [0] -> پیشنهادات-> پیشنهادات [0] -> Price-> DisplayAmount؛
if (! $ خالی (پاسخ $) - آیتم ها نتیجه>> موارد [0] -> ArticleInfo-> ویژگی ها-> DisplayValues)) {
$ ama_feature = & # 39؛ & # 39 ؛؛
foreach ($ پاسخ-> ItemsResult-> موارد [0] -> ArticleInfo-> ویژگی ها-> نمایشValues به عنوان $ ویژگی) {
$ ama_feature. = & # 39؛ - & # 39؛. ویژگی $ & # 39؛
& # 39 ؛؛
}؛
$ ama_feature. = & # 39؛
& # 39 ؛؛
$ ama_beschreibung = $ ama_feature؛
} دیگه
$ ama_beschreibung = "http://blog.helmutkarger.de/"؛
}
از یک طرف ، به جای XML JSON تجزیه و تحلیل می شود ، از سوی دیگر ساختار متفاوت است و تمام داده های نسخه 4 مانند بررسی تحریریه در دسترس نیست. اگر می خواهید در اینجا تغییراتی ایجاد کنید ، باید از Scratchpad برای یافتن قسمتهای داده مورد نظر استفاده کنید.
VII. بارگیری تصاویر
$ mediumImg = $ cachefolder. "/". $ Asin ". JPG"؛
$ ch = curl_init ($ ama_medium-> URL)؛
$ targetfile = fopen ($ mediumImg ، "w")؛
curl_setopt ($ ch ، CURLOPT_FILE ، پرونده مقصد)؛
curl_setopt ($ ch ، CURLOPT_TIMEOUT ، 600)؛
curl_exec ($ ch)؛
fclose (پرونده مقصد $)؛
فقط نام پرونده از پرونده تصویری در اینجا تغییر می کند. از آنجا که در داده های JSON شناسه اختصاصی وجود ندارد من از ASIN به عنوان نام پرونده استفاده می کنم. (که البته فرض می کند که فقط یک تصویر برای محصول ایجاد شده است.)
amaprox.php کامل
همانطور که گفتم ، من فقط آن بخش ها را ذکر کرده ام که در مقایسه با نسخه 4 تغییر یافته اند. اکنون برنامه کاملاً در دسترس است :
10)) {
باز کردن لینک (پرونده $)؛
}
}
// IV. یک پرس و جو ایجاد کنید
// قابل استفاده نیست - این کار توسط paapi5.php انجام می شود
// V. پرسش و پاسخ آمازون
$ json = paapi5 ($ access_key، $ secret_key، $ Associate_tag، $ asin)؛
// VI. تجزیه و تحلیل پاسخ
if ($ json === FALSE)
بازگشت؛
}
پاسخ $ = json_decode ($ json)؛
اگر (پاسخ $ === FALSE)
بازگشت؛
}
اگر (! خالی ($ پاسخ -> خطا)) {
بازگشت؛
}
if (! $ پاسخ-> ItemsResult-> موارد [0] -> ASIN)
بازگشت؛
}
if ($ bers-> ItemsResult-> موارد [0] -> ASIN! == $ asin) {
بازگشت؛
}
$ ama_title = $ پاسخ-> ItemsResult-> موارد [0] -> ArticleInfo-> عنوان-> DisplayValue؛
$ ama_medium = $ پاسخ-> ItemsResult-> موارد [0] -> تصاویر-> اولیه-> متوسط؛
$ ama_page_url = $ پاسخ-> ItemsResult-> موارد [0] -> جزئیاتPageURL؛
$ ama_preis = $ پاسخ-> ItemsResult-> موارد [0] -> پیشنهادات-> پیشنهادات [0] -> Price-> DisplayAmount؛
if (! $ خالی (پاسخ $) - آیتم ها نتیجه>> موارد [0] -> ArticleInfo-> ویژگی ها-> DisplayValues)) {
$ ama_feature = & # 39؛ & # 39 ؛؛
foreach ($ پاسخ-> ItemsResult-> موارد [0] -> ArticleInfo-> ویژگی ها-> نمایشValues به عنوان $ ویژگی) {
$ ama_feature. = & # 39؛ - & # 39؛. ویژگی $ & # 39؛
& # 39 ؛؛
}؛
$ ama_feature. = & # 39؛
& # 39 ؛؛
$ ama_beschreibung = $ ama_feature؛
} دیگه
$ ama_beschreibung = "http://blog.helmutkarger.de/"؛
}
// VII. عکس بگیرید
$ mediumImg = $ حافظه پنهان. "/". $ asin ". jpg"؛
$ ch = curl_init ($ ama_medium-> URL)؛
$ targetfile = fopen ($ mediumImg ، "w")؛
curl_setopt ($ ch ، CURLOPT_FILE ، پرونده مقصد)؛
curl_setopt ($ ch ، CURLOPT_TIMEOUT ، 600)؛
curl_exec ($ ch)؛
fclose (پرونده مقصد)؛
// VIII. کد HTML تولید کنید
سوئیچ (قالب $)
مسکن "گسترده"
$ a = ""؛
$ a. = & # 39؛
عرض. "http://blog.helmutkarger.de/" height = "http://blog.helmutkarger.de/". $ ama_medium-> قد. "http: // blog. helmutkarger.de/" border = "0"> & # 39 ؛؛
$ a. = ""؛
$ a. = ""؛
$ a. = ""؛
$ a. = & # 39؛ & # 39؛. $ ama_title. & # 39؛ & # 39 ؛؛
$ a. = "
"؛
$ a. = & # 39؛ قیمت: & # 39؛. $ ama_preis. & # 39؛
& # 39 ؛؛
$ a. = & # 39؛ & # 39؛. $ ama_beschreibung. & # 39؛ & # 39 ؛؛
$ a. = ""؛
$ a. = ""؛
$ a. = ""؛
شکستن؛
"smallbox":
شکستن؛
پرونده "پیوند":
$ a = ""؛
$ a. = & # 39؛ & # 39 ؛؛
$ a. = ""؛
شکستن؛
به طور پیش فرض:
$ A = "http://blog.helmutkarger.de/"؛
}
// IX. ارسال HTML
هدر ("نوع-محتوا: text / html؛ charset = UTF-8")؛
echo $ a؛
؟>
اگر هنوز کمی از کد برنامه احساس ناراحتی می کنید ، توصیه می کنم قسمت دوم این سری از مقاله ها را جستجو کنید. این هنوز در مورد PA-API 4 است ، اما PHP پروکسی آمازون در جزئیات بیشتر توضیح داده شده است. از این مقاله همچنین می خواهم تکرار کنم که آمازون پروکسی یک ساختار نسبتاً ساده است که کار می کند ، اما به پیشرفت نیز نیاز دارد. به عنوان مثال ، با استفاده از برچسب زدن به تبلیغات ، دکمه Buy ، خطای بهتر ، وارد شدن به سیستم ، گزارش هنگامی که دیگر محصولات آمازون در دسترس نیستند ، یا ذخیره سازی ، بهبودهایی را ارائه می دهد. پتانسیل زیادی وجود دارد.
و چه چیز دیگری؟
امیدواریم که API 5.0 آگهی تبلیغاتی محصول آمازون برای مدتی بوده باشد و چنین تغییرات بزرگی به زودی توسط آمازون برنخورد. حکایتی در سایت: Amazon Partners (Associates) که به درآمد خود در Amazon Partnerset نگاه می کنند ، هنوز در ژانویه سال 2020 عنوان را دریافت می کنند: جدید: افزونه سازنده لینک و لینک مربوطه. هر کسی که را کلیک کند ، Amazon Associates Link Builder را دریافت خواهد کرد: یک یادداشت دریافت می کند: هشدار: Amazon Associate Link Builder در تاریخ 9 مارس 2020 خارج خواهد شد. احتمالاً این نخستین تلاش آمازون برای ارائه افزونه وردپرس برای لینک های مربوط به محصولات خود است. بنابراین ، شرم آور نیست ، این بخش از نظر محافظت از داده ها بسیار سؤال برانگیز بوده است و اکنون ظاهراً قدمی برداشته نشده است تا PA-API 5.0 . مانند بسیاری از افزونه های دیگر WordPress که این کار را انجام می دهند ، آنها این کار را نمی کنند. من فکر می کنم که بیش از حد به پنجره تکیه نمی دهم با پیش بینی اینکه پس از غیرفعال کردن PA-API 4 هیچ افزونه تبلیغاتی رایگان آمازون وجود نخواهد داشت که همچنین با GDPR مطابقت خواهد داشت. تمام کاری که شما باید انجام دهید اینست که افزونه مناسب را خریداری کنید و یا خود آن را برنامه ریزی کنید – من به شما نشان دادم که چگونه می توانید در این سری مقاله ها این کار را انجام دهید.
مقالات دیگر در این بخش: