Saya akan gigit karena saya baru-baru ini melakukan ini, itu adalah layanan REST API, tetapi sesuatu yang mirip dengan permintaan SOAP pasti mungkin. Jadi alih-alih detail, terutama hanya ikhtisar proses yang saya ambil:
1) BUAT MODEL SUMBER DAYA
Pertama Anda ingin membuat model sumber daya Magento baru, ada banyak contoh di luar sana untuk itu:
Berikut ini adalah contoh dari tabel yang saya buat selama modul saya instal (tentu saja sesuaikan dengan kebutuhan / persyaratan Anda).
CREATE TABLE IF NOT EXISTS mynamespace_mymodulename_logs (`id`int(11)unsigned NOT NULL AUTO_INCREMENT,`timestamp` datetime NOT NULL,`requestUrl` varchar(255) DEFAULT NULL,`method` varchar(10) DEFAULT NULL,`returnHttpCode` varchar(10) DEFAULT NULL,`returnError` TEXT NOT NULL,`requestXML` TEXT NOT NULL,`responseXML` TEXT NOT NULL,
PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Catatan: Saya juga berdebat tentang menyimpan permintaan dan respons XML dalam format gzip untuk menghemat ruang db, dan XML memampatkan dengan baik. Namun adminhtml Magento's Grid akan membutuhkan perender kustom, jadi saya menyimpan XML apa adanya untuk saat ini.
2) PERMINTAAN ISTIMEWA ISTIMEWA VUR PHP
Saya biasanya menggunakan satu kelas tunggal, misalnya: Rest.php dengan sesuatu yang serupa untuk panggilan API cepat dan tidak menyakitkan melalui CURL dalam modul saya. Saya percaya opsi lib / Varien dan Zendframework mungkin juga sesuatu yang perlu dipertimbangkan, namun saya telah sukses besar dengan potongan kecil yang mudah dibaca ini:
Saya juga menggunakan pustaka terpisah lain bernama Array2XML untuk membangun POSTpermintaan saya untuk digunakan dengan potongan permintaan REST sederhana ini.
*@param type $method*@param type $data*@param type $url*@param type $header*@param type $topNode*@returnboolean|xml*/publicfunctionRESTRequest($method, $url, $header, $data = array(), $topNode = array()){
Berikut adalah contoh penggunaan kelas Rest.php saya: (CATATAN: $restUrl, $apiKeydidorong dari konfigurasi).
Kemudian bungkus model sumber daya Anda yang baru dibuat di sekitar Rest.phppanggilan untuk mengumpulkan data sebelum dan setelah pengembalian dilakukan dari API pihak ke-3.
Alih-alih hanya mengembalikan objek CURL saya menggunakan SimpleXMLElement ($ response) untuk mengonversi respons API ke XML.
A try/ catchwith a $logModel->save();dan a Mage::logException($e);di Rest.php dapat lebih baik membantu debug setiap masalah dengan integrasi. Karena pengecualian fatal akan tetap sebagian masuk dalam model sumber daya Anda tetapi juga muncul divar/log/excpetions.log
4) ADMIN HTML GRID
Sekarang cukup buat adminhtml Magento khusus baru Grid ke meja Anda yang menyimpan data log.
Klik item baris Grid saya menjelaskan secara detail permintaan tunggal dengan data XML Respons dan Permintaan karena menampilkan data sebesar ini di Grid dapat menjadi masalah.
CATATAN
Selalu tambahkan Sistem -> opsi Konfigurasi untuk menghidupkan / mematikan logging karena dengan sejumlah besar permintaan melalui komunikasi API, tabel bisa menjadi sangat berat dan mempengaruhi kinerja. Saya biasanya akan menonaktifkan pencatatan setelah integrasi berfungsi dengan benar untuk sementara waktu.
Idealnya Anda dapat memanfaatkan Mage_Log dan cukup menambahkan tabel khusus Anda ke daftar tabelnya untuk dipangkas pada interval untuk membuatnya tetap ramping, namun saya tidak yakin dengan prosedur yang tepat untuk bidang tanggal / waktu tertentu mungkin diperlukan.
Anda juga dapat mempertimbangkan menggunakan atribut khusus untuk menyimpan data relasional Anda antara Magento dan API Pihak ke-3.
Semoga ini membantu dalam arah umum untuk mengambil integrasi dari pihak ke-3. Karena tidak semua persyaratan selalu sama. Namun demikian, mekanisme log logging umum dapat bermanfaat.
Jawaban:
Saya akan gigit karena saya baru-baru ini melakukan ini, itu adalah layanan REST API, tetapi sesuatu yang mirip dengan permintaan SOAP pasti mungkin. Jadi alih-alih detail, terutama hanya ikhtisar proses yang saya ambil:
1) BUAT MODEL SUMBER DAYA
Pertama Anda ingin membuat model sumber daya Magento baru, ada banyak contoh di luar sana untuk itu:
Berikut ini adalah contoh dari tabel yang saya buat selama modul saya instal (tentu saja sesuaikan dengan kebutuhan / persyaratan Anda).
Catatan: Saya juga berdebat tentang menyimpan permintaan dan respons XML dalam format gzip untuk menghemat ruang db, dan XML memampatkan dengan baik. Namun adminhtml Magento's Grid akan membutuhkan perender kustom, jadi saya menyimpan XML apa adanya untuk saat ini.
2) PERMINTAAN ISTIMEWA ISTIMEWA VUR PHP
Saya biasanya menggunakan satu kelas tunggal, misalnya: Rest.php dengan sesuatu yang serupa untuk panggilan API cepat dan tidak menyakitkan melalui CURL dalam modul saya. Saya percaya opsi lib / Varien dan Zendframework mungkin juga sesuatu yang perlu dipertimbangkan, namun saya telah sukses besar dengan potongan kecil yang mudah dibaca ini:
Sumber: http://singletonio.blogspot.com/2009/07/simple-php-rest-client-using-curl.html
Saya juga menggunakan pustaka terpisah lain bernama Array2XML untuk membangun
POST
permintaan saya untuk digunakan dengan potongan permintaan REST sederhana ini.Berikut adalah contoh penggunaan kelas Rest.php saya: (CATATAN:
$restUrl
,$apiKey
didorong dari konfigurasi).3) Tambahkan MASUK KE PERMINTAAN / TANGGAPAN
Kemudian bungkus model sumber daya Anda yang baru dibuat di sekitar
Rest.php
panggilan untuk mengumpulkan data sebelum dan setelah pengembalian dilakukan dari API pihak ke-3.Sesuatu seperti ini sebelumnya
curl_exec
:...
Dan setelah itu
curl_exec
:Alih-alih hanya mengembalikan objek CURL saya menggunakan SimpleXMLElement ($ response) untuk mengonversi respons API ke XML.
A
try
/catch
with a$logModel->save();
dan aMage::logException($e);
di Rest.php dapat lebih baik membantu debug setiap masalah dengan integrasi. Karena pengecualian fatal akan tetap sebagian masuk dalam model sumber daya Anda tetapi juga muncul divar/log/excpetions.log
4) ADMIN HTML GRID
Sekarang cukup buat adminhtml Magento khusus baru Grid ke meja Anda yang menyimpan data log.
Klik item baris Grid saya menjelaskan secara detail permintaan tunggal dengan data XML Respons dan Permintaan karena menampilkan data sebesar ini di Grid dapat menjadi masalah.
CATATAN
Selalu tambahkan Sistem -> opsi Konfigurasi untuk menghidupkan / mematikan logging karena dengan sejumlah besar permintaan melalui komunikasi API, tabel bisa menjadi sangat berat dan mempengaruhi kinerja. Saya biasanya akan menonaktifkan pencatatan setelah integrasi berfungsi dengan benar untuk sementara waktu.
Idealnya Anda dapat memanfaatkan Mage_Log dan cukup menambahkan tabel khusus Anda ke daftar tabelnya untuk dipangkas pada interval untuk membuatnya tetap ramping, namun saya tidak yakin dengan prosedur yang tepat untuk bidang tanggal / waktu tertentu mungkin diperlukan.
Anda juga dapat mempertimbangkan menggunakan atribut khusus untuk menyimpan data relasional Anda antara Magento dan API Pihak ke-3.
Semoga ini membantu dalam arah umum untuk mengambil integrasi dari pihak ke-3. Karena tidak semua persyaratan selalu sama. Namun demikian, mekanisme log logging umum dapat bermanfaat.
sumber