Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP
Code

Membina Pautan Gabungan Istimewa Dengan API Merchandising Produk Amazon

by
Difficulty:IntermediateLength:LongLanguages:

Malay (Melayu) translation by Seurion (you can also view the original English article)

Program Amazon Associates, bersamaan dengan Amazon Web Services (AWS), menawarkan pengembang cara yang kuat untuk mencari katalog Amazon Store menggunakan API RESTful dan mengintegrasikan data untuk hampir mana-mana listing produk ke laman web. Sekiranya anda seorang pemrogram dengan minda perniagaan dan mencari cara untuk mengewangkan laman web anda, anda boleh mendaftar sebagai afiliasi Amazon dan mendapat komisen setiap kali pengguna mengklik pautan produk anda dan melengkapkan pembelian. (Dan sejauh program pendapatan afiliasi pergi, komisen Amazon adalah antara yang paling murah hati.)

Bagi anda yang baru dengan idea pemasaran affiliate, katakan anda menjalankan blog atau laman web yang memaparkan tinjauan filem. Untuk setiap ulasan filem yang disiarkan, anda boleh mendapat manfaat dengan memasukkan pautan untuk pembaca untuk membeli filem di suatu tempat berhampiran artikel anda. Untuk menjadikannya lebih menarik untuk diklik, pautan boleh termasuk imej kecil DVD, nama filem penuh, harga terendah yang ada, dan butang "Beli".

Dalam tutorial ini, saya akan menunjukkan kepada anda cara membuat kelas khusus yang boleh digunakan dalam PHP yang menghubungkan ke API Merchandising Produk dan mengambil data XML berdasarkan nama produk dan kategori membeli-belah (dalam kes ini 'Filem'). Pada akhirnya, kami akan memasukkan data tersebut ke dalam templat HTML yang kecil dan sepenuhnya disesuaikan supaya kami dapat dengan demo kerja modul afiliasi mini. Mari kita mulakan.

[Sila ambil perhatian sebelum mengakses demo contoh bahawa jika anda memilih untuk membeli atau menyewa DVD dari pautan yang disediakan, ia akan menghasilkan pembayaran komisen kepada Envato Tuts+.]

Pendaftaran untuk ID Affiliate dan Mendapatkan Kredensial

Pertama, daftar akaun di affiliate-program.amazon.com. Ia percuma, dan anda hanya perlu mengikuti langkah-langkah untuk membuat profil untuk laman web anda. Anda akan diminta untuk mengesahkan identiti anda pada akhir proses dengan memasukkan nombor telefon anda, menerima panggilan automatik, dan memasukkan kod laluan yang anda berikan.

Sebaik sahaja anda melengkapkan pendaftaran, anda akan diberi ID Affiliate Amazon (dalam contoh ini, ia adalah "envtuts-20"). Log masuk ke kawasan akaun utama anda dengan nama pengguna dan kata laluan anda dan klik pada tab Merchandising API Produk. Di sana, klik pada pautan untuk memulakan menggunakan API.

Anda perlu mendaftar untuk Amazon Web Services (aws.amazon.com), jika anda belum melakukannya. Dalam konsol AWS, di bawah Kredensial Keselamatan, anda boleh menghasilkan kunci akses dan kunci rahsia untuk membuat permintaan API. (Nota: adalah penting untuk memastikan kelayakan ini bersifat peribadi dan selamat. Jangan sekali-kali mendedahkannya secara terbuka kepada GitHub atau mana-mana sahaja dalam talian.)

Menyediakan Kelas Pembantu PHP kami

Untuk tujuan contoh ini dan untuk menjaga perkara yang agak mudah, kami akan melaksanakan pola reka bentuk Singleton untuk membuat kelas pembantu statik yang dipanggil AmazonAssocHelper. Ia akan merangkumi kaedah awam yang menyambung ke API, mencari katalog, dan mengembalikan data produk menggunakan parameter tertentu yang kami lulus. Berikut adalah cara saya menubuhkannya:

Beberapa baris pertama mengisytiharkan ruang nama untuk kelas kami dan memasukkan kelas pihak ketiga yang kami perlukan untuk membuat permintaan yang ditandatangani kepada API dengan kelayakan kami. Tiga konstanta yang saya definisikan adalah ID afiliasi kami yang sangat penting, yang kami peroleh setelah mendaftar, dan kunci akses AWS dan kunci rahasia. Saat kami membuat permintaan API kami, ID afiliasi secara otomatis dimasukkan ke dalam tautan produk yang kami ambil sehingga pembelian dapat dilacak secara tepat ke akun kami dan kami dibayar! Pastikan untuk mengisi ketiga nilai ini untuk diri Anda sendiri.

Tiga pembolehubah peribadi merujuk kepada parameter carian yang akan kami sediakan untuk setiap permintaan. Saya menggunakan "ItemSearch" sebagai pilihan operasi untuk mencari keputusan. "2013-08-01" adalah tarikh versi API terkini, yang kami juga perlu membekalkan kepada permintaan yang ditandatangani kami, dan akhirnya, kami mesti menetapkan kumpulan tindak balas yang kami mahu kembali. Terdapat 55 pilihan sama sekali, dan mereka berbeza mengikut saiz dan jenis data yang dikembalikan. Untuk tujuan kami, kami mencari tajuk penuh filem dan URL penuh untuk halaman terperinci, kedua-duanya berada dalam kumpulan tindak balas "Kecil". Kami juga memerlukan imej kecil dari kumpulan tindak balas "Imej", dan harga baru terendah dari kumpulan "TawaranSummary".

Fungsi fetch_product_data() adalah kaedah umum kami yang terdedah yang mengambil dua parameter:

  1. frasa utama tertentu merujuk kepada nama produk yang ingin kami cari
  2. kategori produk Amazon yang diterima

Ia akhirnya akan mengembalikan pelbagai data yang berkaitan dengan hasil carian teratas dihuraikan dari respons XML. (Dalam banyak kes, hasil pertama adalah produk yang kita inginkan, dengan mengandaikan bahawa frasa utama yang kami sediakan adalah cukup spesifik. Sebagai alternatif, anda boleh membuat keputusan untuk mengubah contoh ini untuk mencari oleh nombor ASIN atau ID tertentu produk sebaliknya, tetapi terdapat kebaikan dan keburukan terhadap kaedah ini. Sekiranya anda mempunyai pangkalan data laman berita yang besar untuk filem yang berlainan, menggunakan pendekatan berasaskan nama kemungkinan besar akan membuktikan lebih berkesan, kerana ia akan membolehkan anda menjana pautan produk secara automatik untuk semua artikel anda serta-merta, dan menjimatkan masa tambahan dan usaha untuk secara manual mencari dan memasukkan ID untuk setiap satu.)

Menjana Permintaan yang Ditandatangani

Langkah seterusnya adalah untuk menambah kelas penolong yang akan membuat permintaan yang ditandatangani kepada API produk. Saya menggunakan fungsi pihak ketiga yang ditulis oleh Ulrich Mierendorff dan dibungkus dalam kelas statiknya sendiri yang dikenali sebagai AWSSignedRequest. Ia mengambil beberapa parameter, termasuk rantau ini (untuk kedai A.S., kami menggunakan "com"), pelbagai parameter permintaan, kunci AWS kami, kumpulan tindak balas, dan versi API yang telah kami tentukan. Kaedah get_signed_request() dasarnya membina dan mengembalikan rentetan permintaan URL penuh dari semua kepingan ini.

URL permintaan akhir yang ditandatangani akan kelihatan seperti ini:

Dalam kelas AmazonAssocHelper, letakkan panggilan untuk get_signed_request() dalam kaedah yang dipanggil get_search_results() dan lulus dalam array yang mengandungi empat parameter carian ($params) bersama dengan hujah-hujah lain seperti ditunjukkan di bawah:

Pelbagai $params kami termasuk operasi dan respons yang telah kami tentukan, serta nilai untuk "Tajuk" dan "SearchIndex". Dalam kes ini, SearchIndex hanyalah kategori produk yang kami cari. Sekarang, kita boleh menggunakan fungsi fail file_get_contents() yang terbina dalam PHP untuk menghasilkan maklum balas daripada permintaan itu, dan sejak respon adalah dokumen XML, kami menggunakan fungsi terbina dalam lain, simplexml_load_string(), untuk memuatkannya sebagai objek yang kita boleh dihuraikan.

Menguji Data Respon dan Pratonton XML

Pada ketika ini, kami akan dapat mencuba permintaan API kami dengan beberapa nilai produk sebenar supaya kami dapat melihat contoh sebenar data XML kami yang dikembalikan seperti sebelum menguraikannya. Seperti yang ditunjukkan di atas, tambah beberapa baris ujian untuk menetapkan header ke aplikasi/XML dan mencetak sambutan $sebelum ia dikembalikan.

Sekarang, buat fail yang akan berfungsi sebagai halaman utama di mana pautan produk akan ditunjukkan. Saya telah memutuskan untuk memanggilnya index.php. Di bahagian atas, tambahkan sedikit kod berikut:

Dua baris pertama mengisytiharkan ruang nama kami dan menyertakan fungsi global yang membolehkan fail kelas kami dimuatkan secara automatik, kerana kami tidak menggunakan rangka kerja PHP. Baris berikutnya adalah yang penting. Kami memanggil kaedah public fetch_product_data() di kelas AmazonAssocHelper kami dan memberikannya kepada pembolehubah array yang dipanggil $product_data, lulus dalam nama filem tertentu sebagai frasa utama (saya memilih "Jurassic World" dari senarai penjual terbaik semasa) dan "Filem" sebagai kategori.

Apabila anda memuatkan halaman anda, permulaan sambutan XML anda harus kelihatan seperti ini:

Sekiranya anda menatal dan mengimbas output, anda harus dapat melihat semua data yang berguna untuk demo kami, termasuk <detailPageURL> , <Title>, <LargeImage>, dan <LowNewUTL>. Terdapat nod yang akan kita fokuskan pada parsing.

Parsing Object Response

Di kelas AmazonAssocHelper, buat kaedah lain yang dipanggil get_top_result_data() yang mengambil objek tindak balas XML kami sebagai parameter. Kita kini boleh mula membaca nod yang mengandungi data yang kita mahu tangkap, tetapi sebelum kita pergi ke sana, mari kita merancang untuk menggabungkan beberapa pemeriksaan ralat.   Saya telah menambah beberapa baris di bahagian atas fungsi kami untuk menggunakan kaedah yang akan menjaga parsing Kesalahan nod untuk kami, dan saya akan menerangkannya dengan lebih terperinci ke arah akhir tutorial ini.

Seperti yang anda lihat dalam kod di atas, kita mulakan dengan mengambil nod item pertama (Item [0]) dari objek XML dan menyimpannya dalam pembolehubah ($first_item). Kemudian, kami beroperasi pada setiap anaknya untuk mengumpulkan maklumat yang kami mahukan ($item_title, $item_link, $item_image, $item_price). Akhirnya, kami membungkus semuanya ke array dengan atribut yang dinamakan dan mengembalikan array.

Mengendalikan Kesilapan

Buat kaedah yang disebut handle_errors() dan lulus objek XML yang sama. Berdasarkan cara API ini disusun, pelbagai nod ralat dengan kod dan mesej tertentu ditetapkan untuk muncul sama ada node <OperationRequest> atau Item node <Request>. Anda boleh menguji mereka dengan menetapkan indeks carian atau kumpulan tindak balas tidak sah. Gelung kod berikut melalui setiap nod dan menolak mesej ralat ke dalam array yang kami kembali:

Menyeberang Data dalam Template HTML

Pada ketika ini, anda boleh mengalih keluar panggilan ujian XML kerana kami bersedia untuk melihat output data akhir. Dalam index.php, cetak $product_data array yang dikembalikan dan muatkan halaman. Anda harus melihat sesuatu seperti ini:

Sebaik sahaja anda telah mengesahkan bahawa data kelihatan betul untuk setiap empat sifat yang kami berminat, anda boleh cuba menjalankan panggilan pada filem atau produk lain untuk perbandingan. Perhatikan bahawa ID sekutu (dalam kes ini "envtut-20") secara automatik dimasukkan ke dalam "pautan" seperti yang kita jangkakan.

Sebagai langkah terakhir, mari kodkan blok HTML mudah untuk memaparkan data filem kami dan menjadikannya pautan ke halaman pembelian. Dalam index.php, tambahkan yang berikut di bawah blok PHP:

Perhatikan bahawa sekiranya ralat dikembalikan, saya telah memilih untuk menyembunyikan paparan sama sekali, tetapi secara alternatif, anda boleh memaparkan mesej ralat yang sesuai di tempatnya.

Kini, dengan gaya CSS ditambah, output akhir akan kelihatan seperti ini:

Amazon Affiliate Link Demo

Dan di sana anda memilikinya! Sebaik sahaja anda melancarkan modul afiliasi anda ke dunia, anda boleh mengesan semua pembelian dan pendapatan dengan melog masuk ke akaun anda.

Kesimpulan

Dalam tutorial ini, kami melengkapkan semua langkah yang diperlukan untuk programmer PHP untuk membina penyelesaian kod berskala yang secara langsung menghasilkan pautan afiliasi tersuai untuk hampir mana-mana produk di Amazon Store. Berdasarkan keperluan atau keutamaan anda, anda boleh memutuskan untuk menukar atau memperluaskan contoh ini dengan parameter yang berbeza.

Anda juga boleh menerokai dokumentasi API dengan lebih terperinci mengenai anda sendiri untuk mengetahui lebih lanjut apa yang mungkin. Kuasa sebenar dalam menggunakan API Merchandising Produk terletak pada fleksibiliti yang disediakan untuk mengatur dan memaparkan pelbagai maklumat masa nyata mengenai produk atau senarai produk. Dengan penjana pautan lalai Amazon (tiada pengetahuan pengekodan diperlukan), anda tidak mendapat hampir jumlah kawalan yang sama, dan pilihan anda terhad.

API benar-benar bersinar di laman web yang dijana secara dinamik dan pada halaman di mana anda memerlukan tahap kawalan yang lebih tinggi ke atas penampilan pautan anda, jadi jika anda bekerja di laman web atau blog di sepanjang baris ini dan ingin memasukkan pengewangan, saya harap bahawa anda telah mendapati tutorial ini berguna.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.