Dokumentasi WeChat JS-SDK
WeChat JS-SDK dokumentasi
WeChat JS-SDK disediakan oleh platform awam WeChat untuk pembangun web berdasarkan WeChat Kit alat pembangunan web dalam.
Dengan menggunakan WeChat JS-SDK, pembangun web boleh menggunakan WeChat untuk menggunakan keupayaan sistem telefon mudah alih dengan cekap seperti mengambil gambar, memilih gambar, suara dan lokasi Pada masa yang sama, mereka boleh terus menggunakan WeChat untuk berkongsi , imbasan, kupon, bayar, dll. Keupayaan unik WeChat memberikan pengguna WeChat pengalaman web yang lebih baik. 🎜🎜
Dokumen ini memperkenalkan cara menggunakan WeChat JS-SDK dan langkah berjaga-jaga yang berkaitan untuk pembangun web. Langkah-langkah untuk menggunakan "Tetapan Fungsi" JSSDK Isikan "nama domain keselamatan antara muka JS".
Nota: Selepas log masuk, anda boleh melihat kebenaran antara muka yang sepadan dalam "Pusat Pembangun".
Langkah 2: Import fail JSPerkenalkan fail JS berikut ke halaman yang perlu memanggil antara muka JS (menyokong https): http://res.wx.qq.com/open/js/jweixin-1.0.0.js Jika anda perlu menggunakan Untuk fungsi periferal goncang, sila perkenalkan http://res.wx.qq.com/open/js/jweixin-1.1.0.js Nota: Menyokong penggunaan AMD /Kaedah pemuatan modul standard CMD Memuatkan Langkah 3: Suntikan konfigurasi pengesahan kebenaran melalui antara muka konfigurasi Semua halaman yang perlu menggunakan konfigurasi JS-SDK terlebih dahulu. tidak boleh dipanggil (URL yang sama hanya perlu dipanggil Sekali, apl web SPA yang menukar URL boleh dipanggil setiap kali URL berubah. Pada masa ini, klien Android WeChat tidak menyokong ciri H5 baharu pushState, jadi menggunakan pushState untuk melaksanakan halaman apl web akan menyebabkan tandatangan gagal. appId: '', // Diperlukan, pengecam unik akaun rasmi cap masa: , // Diperlukan, digunakan untuk menjana tandatangan nonceStr: '', // Diperlukan, jana rentetan tandatangan rawak tandatangan: '', // Diperlukan, tandatangan. , lihat Lampiran 1 jsApiList: [] // Diperlukan, senarai antara muka JS yang perlu digunakan, lihat Lampiran 2 untuk senarai semua antara muka JS }); . , dan semua panggilan antara muka mesti Selepas antara muka konfigurasi memperoleh keputusan, konfigurasi ialah operasi tak segerak pada bahagian klien, jadi jika antara muka yang berkaitan perlu dipanggil apabila halaman dimuatkan, antara muka yang berkaitan mesti dipanggil dalam fungsi sedia untuk pastikan pelaksanaan yang betul apabila dicetuskan oleh pengguna, ia boleh dipanggil terus dan tidak perlu diletakkan dalam fungsi sedia });.. dilaksanakan, seperti apabila tandatangan tamat tempoh Pengesahan gagal Maklumat ralat khusus boleh dilihat dalam mod nyahpepijat konfigurasi atau dalam parameter res yang dikembalikan Untuk SPA, tandatangan boleh dikemas kini di sini });. . Semua antara muka dipanggil melalui objek wx (objek jWeixin juga boleh digunakan parameter adalah objek. Selain daripada parameter yang perlu dilalui). itu sendiri, terdapat parameter Umum berikut: 1.success: fungsi panggil balik dilaksanakan apabila panggilan antara muka berjaya. 2.fail: Fungsi panggil balik dilaksanakan apabila panggilan antara muka gagal. 3.complete: Fungsi panggil balik yang dilaksanakan apabila panggilan antara muka selesai, akan dilaksanakan tanpa mengira kejayaan atau kegagalan. 4.batal: Fungsi panggil balik apabila pengguna mengklik batal Ia hanya digunakan oleh beberapa API apabila pengguna membatalkan operasi. 5.trigger: Kaedah yang dicetuskan apabila butang dalam Menu diklik Kaedah ini hanya menyokong antara muka yang berkaitan dalam Menu. Nota: Jangan cuba gunakan permintaan asynchronous ajax dalam pencetus untuk mengubah suai kandungan bahagian ini, kerana operasi perkongsian pelanggan adalah operasi segerak, dan paket pulangan menggunakan ajax tidak akan dikembalikan pada masa ini. Fungsi di atas semuanya mempunyai satu parameter, iaitu jenis objek Selain data yang dikembalikan oleh setiap antara muka itu sendiri, terdapat juga atribut umum errMsg, yang format nilainya adalah seperti berikut: Apabila. panggilan berjaya : "xxx:ok", dengan xxx ialah nama antara muka yang dipanggil Apabila pengguna membatalkan: "xxx:cancel", di mana xxx ialah nama antara muka yang dipanggil Apabila panggilan gagal: nilainya ialah mesej ralat khusus Tentukan sama ada versi klien semasa menyokong antara muka JS yang ditentukan success: function(res) { // Kembalikan dalam bentuk kunci- pasangan nilai, nilai api yang tersedia adalah benar, Jangan gunakan False f // Contohnya: {"CheckResult": {"choooseimage": true}, "ErRMSG": "Checkjsapi: OK"}}}); Nota: Antara muka checkJsApi ialah antara muka tersimpan yang baru diperkenalkan dalam klien 6.0.2 Antara muka yang dibuka pada fasa pertama boleh dikesan tanpa menggunakan checkJsApi. Sila berhati-hati untuk tidak mendorong perkongsian dan aktiviti haram yang lain Untuk tingkah laku perkongsian terdorong, kebenaran antara muka akaun rasmi akan dibatalkan secara kekal. Soalan Lazim Pengurusan Moments. Dapatkan status klik butang "Kongsi ke Momen" dan sesuaikan antara muka kandungan perkongsian pautan: '', // Kongsi pautan imgUrl: '', // Kongsi ikon kejayaan: fungsi () { // Fungsi panggil balik dilaksanakan selepas pengguna mengesahkan perkongsian }, }, {取 // Pengguna membatalkan fungsi panggil balik yang boleh dilaksanakan selepas berkongsi }}); . desc: '', // Kongsi penerangan pautan: '', // Kongsi pautan dataUrl: '', // Jika jenis ialah muzik atau video, pautan data mesti disediakan, lalainya kosong berjaya : fungsi () { - - akan dilaksanakan selepas pengguna mengesahkan perkongsian, ‐ ‐ () { Fungsi panggil balik dilaksanakan selepas pengguna membatalkan perkongsian Dapatkan status klik butang "Kongsi ke QQ" dan sesuaikan antara muka kandungan perkongsian wx.onMenuShareQQ({ ) tajuk desc: '', // Kongsi penerangan pautan: '', // Kongsi pautan imgUrl: '', // Kongsi ikon kejayaan: fungsi () { 享 // Pengguna mengesahkan fungsi panggil balik yang dilaksanakan selepas perkongsian }, Batal: Fungsi () { // Pengguna membatalkan fungsi panggil balik yang dikongsi // Pengguna membatalkan fungsi panggil balik yang dikongsi }} }); wx.onMenuShareWeibo({ title: '', // 分享标题 desc: '', // 分享描述 link: '', // 分享链接 imgUrl: '', // 分享图标 success: function () { // 用户确认分享后执行的回调函数 }, cancel: function () { Fungsi panggil balik dilaksanakan selepas pengguna membatalkan perkongsian wx.onMenuShareQZone({ title: '', // 分享标题 desc: '', // 分享描述 link: '', // 分享链接 imgUrl: '', // 分享图标 success: function () { // 用户确认分享后执行的回调函数 }, cancel: function () { Fungsi panggil balik dilaksanakan selepas pengguna membatalkan perkongsian Antara muka untuk mengambil foto atau memilih gambar daripada album mudah alih Kiraan: 1, / / Lalai 9 sizeType: ['original', 'compressed'], // Anda boleh menentukan sama ada ia adalah imej asal atau imej mampat, kedua-duanya tersedia secara lalai sourceType: ['album' , 'kamera'], // Anda boleh menentukan sama ada sumbernya ialah album foto atau kamera Secara lalai, kedua-duanya tersedia: fungsi (res) { Atribut src teg memaparkan imej } }); wx.previewImage({ semasa: '', // pautan http untuk memaparkan imej pratonton Senarai pautan http gambar }); isShowProgressTips: 1, // Lalai ialah 1, paparan progres Kejayaan: fungsi (res) { var serverId = res.serverId ; }); Nota: Imej yang dimuat naik adalah sah selama 3 hari Anda boleh menggunakan antara muka multimedia WeChat untuk memuat turun imej ke pelayan anda sendiri. . antara muka muat naikImej isShowProgressTips: 1, // Lalai ialah 1, menunjukkan petua kemajuan kejayaan: fungsi (res) { } }); Antaramuka untuk menghentikan pemantauan rakaman secara automatik wx.onVoiceRecordEnd({ ) // Masa hentian penuh akan dihentikan apabila satu minit rakaman dihentikan lengkap : function ( res) { var localId = res.localId; } }); wx.playVoice({ ) localId: '' // ID setempat bagi audio yang akan dimainkan🜎 }) ; audio setempat yang perlu dijeda({ ): audio setempat sed diperolehi oleh antara muka stopRecord }); . }); Antara muka untuk memantau penyiapan main balik suara wx.onVoicePlayEnd({ ) fungsi setempat: d = res.localId; / Kembalikan audio ID Tempatan } }); isShowProgressTips: 1, // Lalai ialah 1, paparan progres success: function (res) { } }); Nota: Suara yang dimuat naik adalah sah selama 3 hari Anda boleh menggunakan antara muka multimedia WeChat untuk memuat turun suara ke pelayan anda sendiri antara muka muat turun adalah 10,000 kali/hari Jika perlu, tingkatkan kekerapan, sila log masuk ke platform awam WeChat dan memohon untuk meningkatkan had atas sementara dalam senarai kebenaran antara muka pembangunan. Muat turun antara muka suara antara muka muat naikVoice isShowProgressTips: 1, // Lalai ialah 1, menunjukkan petua kemajuan kejayaan: fungsi (res) { } }); Antara muka untuk mengecam audio dan mengembalikan hasil pengecaman lewat localId: '', // perlu untuk dikenal pasti ID tempatan audio, diperoleh daripada antara muka berkaitan rakaman isShowProgressTips: 1, // Lalai ialah 1, paparkan gesaan kemajuan kejayaan: fungsi (res) { alert(res.translateResult); // Hasil pengecaman pertuturan } }); Dapatkan antara muka status rangkaian var networkType = res.networkType; // Kembalikan jenis rangkaian 2g, 3g, 4g, wifi } Gunakan antara muka paparan peta terbina dalam WeChat longitud: 0, // Longitud, nombor titik terapung, julat ialah 180 ~ -180 nama: '', // Nama lokasi . alamat: ' ', // Butiran alamat skala: 1, // Aras zum peta, nilai membentuk, antara 1 hingga 28. Lalai ialah maksimum infoUrl: '' // Dipaparkan di bahagian bawah antara muka lokasi paparan Hiperpautan, klik untuk melompat }); wx.getLocation ({ ) Jenis: 'WGS84', // lalai adalah koordinat WGS84 GPS. OpenLocation Coordinates, boleh dihantar dalam 'gcj02' Kejayaan: fungsi (res) { var latitud = res.latitude; // Latitud, nombor titik terapung, julat ialah 90 ~ -90 var longitud = res.longitud; // Longitud, nombor titik terapung, julat ialah 180 ~ -180 var speed = res.speed; Ketepatan kedudukan } }); Buka antara muka untuk mencari peranti ibeacon di sekeliling { complete:function(argv){ //Dayakan fungsi panggil balik selepas carian selesai }); Nota: Jika anda perlu mengakses fungsi periferal goncang, sila rujuk kepada: Mohon untuk mengaktifkan persisian goncang Tutup carian peranti ibeacon persisian. acons ({ lengkap:fungsi(res){ //Tutup fungsi panggil balik selepas carian selesai } Dengar antara muka peranti ibeacon persisian wx.onSearchBeacons({ )fungsi } }); Catatan: Untuk langkah berjaga-jaga penggunaan antara muka persisian Shake Shake yang dinyatakan di atas dan lebih banyak arahan hasil pemulangan, sila rujuk: Peranti Shake Shake untuk mendapatkan maklumat peranti Sembunyikan antara muka menu sudut kanan atas wx.hideOptionMenu(); Tunjukkan antara muka menu sudut kanan atas Tutup antara muka tetingkap halaman web semasa wx.closeWindow(); wx. hideMenuItems( { menuList: [] // Item menu yang hendak disembunyikan hanya boleh menyembunyikan butang "Propagation" dan "Protection". Lihat Lampiran 3 untuk semua item menu Batch Button Function Function Interface Wx.ShowMenuItems ({ ) Menulis: [] // item menu untuk dipaparkan, lihat Lampiran 3 untuk semua item menu } ; Tunjukkan semua antara muka butang fungsi wx.showAllNonBaseMenuItem(); Sediakan antara muka imbasan WeChat perlukanHasil: 0, // Lalai Jika ia ialah 0, hasil imbasan akan diproses oleh WeChat, jika 1, hasil imbasan akan dikembalikan terus, scanType: ["qrCode","barCode"], // Anda boleh menentukan sama ada untuk mengimbas kod QR atau kod 1D, dan kedua-duanya tersedia secara lalai Success: function (res) { var result = res.resultStr; // Apabila needResult ialah 1, hasilnya dikembalikan dengan mengimbas kod } }); Lompat ke halaman produk WeChat }); Sijil tandatangan api_ticket yang digunakan dalam antara muka Kad dan Tiket WeChat berbeza daripada sijil tandatangan jsapi_ticket yang digunakan dalam proses memanggil Kad dan Tiket WeChat JS-SDK Dua tandatangan berbeza perlu dilengkapkan mengikut urutan dan bukti kelayakan mesti dicache. . Nota kepada pembangun: 1.api_ticket yang digunakan untuk tandatangan antara muka kad dan kupon adalah berbeza daripada jsapi_ticket yang digunakan untuk menyuntik konfigurasi pengesahan kebenaran melalui antara muka konfigurasi dalam langkah 3. 2 Memandangkan bilangan panggilan api untuk mendapatkan api_ticket adalah sangat terhad, penyegaran api_ticket yang kerap akan menyebabkan panggilan api terhad dan menjejaskan perniagaan mereka sendiri. . wx_card Parameter Keterangan "errmsg":"ok", "tiket":"bxLdikRXVbTPdHSM05e5u5sUoXNKdvsdshFKA", "expires_in":7200} Tarik senarai kad dan kupon yang berkenaan dan dapatkan maklumat pemilihan pengguna wx.chooseCard({ Store Id Jenis kad : '' , // Jenis kad dan kupon kadId: '', // Id kad dan kupon cap masa: 0, // Cap masa tandatangan kad dan kupon nonceStr: '', / nonceStr: '', / Kad dan tandatangan kupon adalah rawak Rentetan tandaJenis: '', //Kaedah tandatangan, lalai ialah 'SHA1' kadSign: '', //Tandatangan kad dan kupon kejayaan: res) { var cardList = res.cardList; // Maklumat senarai kad dipilih oleh pengguna } }); nama parameter Perhatian khusus untuk pembangun: Ralat tandatangan akan menyebabkan senarai kad tarik menjadi kosong secara luar biasa. Sila semak dengan teliti kesahihan parameter yang terlibat dalam tandatangan. . . Pembangun diminta untuk menyiasat sebab kedudukan mengikut urutan. Interface untuk menambah kad dalam batches wx.addcard ({ kadExt: '' ... }); Perlu diperhatikan bahawa parameter card_ext di sini mesti konsisten dengan parameter yang mengambil bahagian dalam tandatangan dan formatnya ialah rentetan dan bukannya Objek, jika tidak ralat tandatangan akan dilaporkan. Adalah disyorkan bahawa pembangun menambah tidak lebih daripada 5 kad pada satu masa, jika tidak, mereka akan menghadapi ralat tamat masa. Lihat antara muka kad dan kupon dalam pakej kad WeChat wx.openCard({ ) kad ID Kad: '', kod: '' }]// Senarai kad dan kupon yang perlu dibuka }); Memulakan permintaan pembayaran WeChat cap masa: 0, // Cap masa tandatangan pembayaran, Nota bahawa semua medan cap masa yang digunakan dalam WeChat jssdk adalah huruf kecil, bagaimanapun, nama medan timeStamp yang digunakan oleh versi terkini latar belakang pembayaran untuk menjana tandatangan mesti menggunakan huruf besar huruf S nonceStr: '', // Rentetan rawak tandatangan pembayaran, tidak lebih daripada pakej 32-bit: '', // Nilai parameter prabayar_id dikembalikan oleh antara muka pembayaran bersatu, format penyerahan ialah: prepay_id=***) jenis tanda: '', // Kaedah tandatangan, lalai ialah 'SHA1 ', anda perlu memasukkan 'MD5' untuk menggunakan versi pembayaran baharu paySign: '', // Tandatangan pembayaran }}); Catatan: prepay_id diperolehi melalui antara muka pesanan bersatu WeChat Pay menggunakan kaedah penjanaan tandatangan WeChat Pay Sign bahawa appId di sini juga perlu mengambil bahagian dalam tandatangan , yang merupakan parameter terakhir yang terlibat dalam tandatangan Terdapat appId, timeStamp, nonceStr, pakej, signType. Dokumentasi pembangunan pembayaran WeChat: https://pay.weixin.qq.com/wiki/doc/api/index.html Lampiran 1-JS-SDK tandatangan kebenaran . Dalam keadaan biasa, tempoh sah jsapi_ticket ialah 7200 saat, yang diperoleh melalui access_token. Memandangkan bilangan panggilan api untuk mendapatkan jsapi_ticket adalah sangat terhad, penyegaran semula jsapi_ticket yang kerap akan menyebabkan panggilan api terhad dan menjejaskan perniagaan anda sendiri 1. Rujuk dokumen berikut untuk mendapatkan access_token (sah adalah 7200 saat, pembangun mesti cache access_token secara global dalam perkhidmatan mereka sendiri): ../15/54ce45d8d30b6bf6758f68d2e95bc.html menggunakan diperolehi dalam langkah pertama Gunakan http GET untuk meminta jsapi_ticket ( ): https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token= ACCESS_TOKEN&type= jsapi berjaya mengembalikan JSON berikut: { "errcode":0, " " " "tiket":" bxL dikRXVbTPdHSM05e5u5sUoXNKd8-41ZO3MhKoyN5OfkWITDGnr2fwJ0m9E8NYzWKVZvdVtaUgWvsdshFKA ", "tamat tempoh 2 Selepas mendapatkan jsapi_ticket, anda boleh menjana tandatangan untuk pengesahan kebenaran JS-SDK. . , Tiada Mengandungi # dan bahagian berikut ialah tandatangan=sha1(string1). contohnya dfl2fzFy1AOcHKP7qg url=http://mp.weixin.qq.com?params=value Langkah 1. Isih semua parameter yang akan ditandatangani mengikut kod ASCII nama medan daripada kecil ke besar (urutan leksikografik ), dan gunakan URL Format pasangan kunci-nilai (iaitu key1=value1&key2=value2...) disambungkan ke dalam rentetan rentetan1: SlYy3-Sl-HhTdfl2fzFy1AO cHKP7qg&noncestr=Wm3WZYTPz0wzccnW×tamp= . ed Nota 1. Noncestr dan cap waktu yang digunakan untuk tandatangan mestilah sama dengan nonceStr dan timestamp dalam wx.config. 2. URL yang digunakan untuk tandatangan mestilah URL lengkap halaman yang memanggil antara muka JS. 3.Atas sebab keselamatan, pembangun mesti melaksanakan logik tandatangan di bahagian pelayan. Jika ralat seperti tandatangan tidak sah berlaku, sila rujuk Lampiran 5 untuk ralat dan penyelesaian biasa. Lampiran 2 - Senarai semua antara muka JS Versi 1.0.0 antara muka onMenuShareTimeline onMenuShareAppMessage onMenuShareQQ onMenuShareWeibo startRecord stopRecord onVoiceRecordEnd playVoice pausevoice stopvoice onvoiceplayendendroice downloice chooseimage previewimage uploadimage downloadimage translateVoice getNetworkType openLocation getLocation hideOption hideOption hideMenuItems showMenuItems hideAllNonBaseMenuItem showAllNonBaseMenuItem closeWindow scanQRCode chooseWXPay CificProView ProductView addCard chooseCard openCard Mod hari: "menuItem:dayMode"Mod malam: "menuItem:nightMode" Refresh: "menuItem:refresh" Lihat akaun rasmi (ditambah): "menuItem:profile" Lihat akaun rasmi (tidak ditambah): "menuItem:addContact" Kategori komunikasi kepada kawan : "menuItem:share:appMessage" Share to Moments: "menuItem:share:timeline" Share to QQ: "menuItem:share:qq" Share to Weitembo:"Share to Weitembo:" :weiboApp" Kumpul: "Item menu:kegemaran" Kongsi ke FB: "Item menu:kongsi:facebook" Kongsi ke ruang/Item menu QQ:kongsi:QZone . Mod membaca: "menuItem:readMode" Buka dalam pelayar QQ: "menuItem:openWithQQBrowser" Buka dalam Safari: "menuItem:openWith Tandatangan kad dan kupon serta tandatangan JSSDK adalah bebas sepenuhnya Algoritma dan maksud kedua-duanya adalah berbeza sama sekali. Tandatangan JSSDK ialah lapisan pengesahan yang diperlukan untuk menggunakan semua antara muka JS Ia digunakan untuk mengenal pasti identiti pemanggil dan tiada kaitan dengan kupon itu sendiri. Kedua, untuk tandatangan kad dan kupon, satu set protokol tandatangan bebas telah direka dengan mengambil kira kebolehskalaan protokol dan pencegahan mudah gangguan data. Di samping itu, atas sebab sejarah, antara muka JS kad dan kupon muncul sebelum JSSDK pada masa itu tidak mempunyai sistem pengesahan, jadi maklumat identiti appsecret/api_ticket turut ditambahkan pada tandatangan kad dan. kupon. Saya harap pembangun akan faham. Kad dan kupon api_ticket Kad dan kupon api_ticket ialah tiket sementara yang digunakan untuk memanggil antara muka yang berkaitan dengan kad dan kupon melalui akses kepada 7200 saat. Beri perhatian di sini untuk membezakannya daripada jsapi_ticket. Memandangkan bilangan panggilan api untuk mendapatkan kad dan tiket api_ticket adalah sangat terhad, penyegaran kad dan tiket api_ticket yang kerap akan menyebabkan panggilan api terhad dan menjejaskan perniagaan mereka sendiri Pembangun mesti menyimpan kad dan tiket api_ticket secara global dalam mereka sendiri perkhidmatan . . 2. Gunakan access_token yang diperoleh pada langkah pertama untuk meminta kad dan kupon api_ticket menggunakan kaedah http GET (tempoh sah ialah 7200 saat, pembangun mesti cache kad dan kupon api_ticket secara global dalam perkhidmatan mereka sendiri): https:/ /api.weixin. qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=wx_card Kad dan kupon sambungan kad medan Ext 🎜🎜🎜🎜🎜🎜🎜🎜 medan medan kad itu sendiri rentetan , itulah yang dilakukan oleh pedagang Maklumat unik yang diberikan kepada setiap kad dan kupon, termasuk medan berikut: 🎜🎜. Arahan tandatangan 1. Tukar api_ticket (Nota khas: api_ticket lebih selamat daripada appsecret, dan serasi dengan appscret yang digunakan dalam versi lama dokumen sebagai bukti kelayakan, kod. Nilai nilai openid dan nonce_str melakukan pengisihan leksikografi rentetan. 2. Gabungkan semua rentetan parameter menjadi satu rentetan dan lakukan penyulitan sha1 untuk mendapatkan tandatangan. 3. Medan cap masa dan nonce dalam tandatangan mestilah konsisten dengan medan cap masa dan nonce_str dalam card_ext. 4.code = jonyqin_1434008071, timestamp = 1404896688, card_id = pjz8yt1xgilfi-fusewpnnolggzk, api_ticket = ojz8ytyvyr30heh injonyqin_1434008071ojz8ytyvyr30hhhh3cm73y7h4jje pjz8yt1xgilfi-fusewpnnolggzk) Pembangun amat disyorkan supaya menggunakan SDK alat tandatangan dalam pakej maklumat kad dan kupon untuk menandatangani atau menggunakan alat nyahpepijat untuk pengesahan: http://mp.weixin.qq.com/debug/cgi -bin/kotak pasir ?t=cardsign Arahan untuk cardSign Arahan untuk cardSign Lampiran 5 - Ralat dan Penyelesaian Biasa Apabila memanggil antara muka konfigurasi, masukkan nyahpepijat parameter: benar untuk mendayakan mod nyahpepijat dan halaman akan memaklumkan mesej ralat. Berikut adalah ralat dan penyelesaian biasa: 1.domain url tidak sah Nama domain halaman semasa tidak terikat dengan aplikasi yang digunakan Sila pastikan anda mengisi nama domain terikat dengan betul 443 (https) disokong, jadi tidak perlu mengisi nombor port (satu appid boleh terikat kepada tiga nama domain yang sah). 2. ralat tandatangan tidak sah. Adalah disyorkan untuk menyemak mengikut susunan berikut: 1. Sahkan bahawa algoritma tandatangan adalah betul, dan anda boleh menggunakan http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t =jsapisign alat halaman untuk pengesahan. 2. Sahkan bahawa nonceStr (modal standard S dalam kotak unta dalam js) dan cap waktu dalam konfigurasi adalah konsisten dengan noncestr dan cap masa yang sepadan yang digunakan dalam tandatangan. 3. Sahkan bahawa url tersebut ialah url lengkap halaman (sila sahkan pada makluman halaman semasa(location.href.split('#')[0])), termasuk 'http(s):// ' bahagian, dan '? 'Bahagian parameter GET selepas ', tetapi tidak termasuk bahagian selepas '#'hash. 4. Sahkan bahawa appid dalam konfigurasi adalah konsisten dengan appid yang digunakan untuk mendapatkan jsapi_ticket. 5. Pastikan cache access_token dan jsapi_ticket. 6.Pastikan URL yang anda perolehi untuk ditandatangani diperoleh secara dinamik Untuk halaman dinamik, sila rujuk pelaksanaan PHP dalam kod contoh. Jika ia adalah halaman statik html, url dihantar ke hujung belakang untuk tandatangan melalui ajax di hujung hadapan perlu menggunakan js untuk mendapatkan pautan halaman semasa kecuali bahagian cincang '#' (boleh diperolehi oleh location.href.split('#')[0], dan encodeURIComponent diperlukan), kerana setelah halaman dikongsi, klien WeChat akan menambah parameter lain di penghujung pautan anda Jika pautan semasa tidak diperoleh secara dinamik, tandatangan halaman kongsi akan gagal. 3.nilai kebenaran adalah pengesahan luar talian Ralat ini adalah kerana konfigurasi tidak dilaksanakan dengan betul, atau JSAPI yang dipanggil tidak dihantar ke parameter jsApiList konfigurasi. Adalah disyorkan untuk menyemak dalam susunan berikut: 1. Sahkan bahawa konfigurasi diluluskan dengan betul. 2. Jika JSAPI dipanggil semasa halaman dimuatkan, ia mesti ditulis dalam panggilan balik wx.ready. 3. Sahkan bahawa parameter jsApiList konfigurasi mengandungi JSAPI ini. 4.kebenaran ditolak Akaun rasmi tidak mempunyai kebenaran untuk menggunakan JSAPI ini, atau JSAPI yang dipanggil tidak dihantar ke dalam parameter konfigurasi jsApiList (sesetengah antara muka memerlukan pengesahan sebelum ia boleh digunakan). 5 fungsi tidak wujud Versi klien semasa tidak menyokong antara muka ini, sila naik taraf kepada versi baharu untuk mengalaminya. 6 Mengapa config: ok dalam versi 6.0.1, tetapi tidak ok selepas versi 6.0.2 (kerana tiada pengesahan kebenaran sebelum versi 6.0.2, jadi konfigurasi semuanya ok, tetapi ini tidak bermakna bahawa dalam konfigurasi anda Tandatangan OK, sila semak sama ada tandatangan yang betul dijana dalam 6.0.2 untuk memastikan bahawa konfigurasi OK dalam versi yang lebih tinggi) 7 Perkongsian tidak boleh dilakukan pada iOS dan Android (sila sahkan bahawa akaun rasmi telah disahkan. Hanya akaun rasmi yang diperakui mempunyai kebenaran untuk berkongsi antara muka yang berkaitan. Jika ia benar-benar disahkan, semak sama ada antara muka mendengar dicetuskan dalam wx.ready callback function ) 8 Selepas servis online, jsapi_ticket tidak boleh diperolehi. (Oleh kerana access_token dan jsapi_ticket mesti dicache pada pelayan anda sendiri, jika tidak, had kekerapan akan dicetuskan selepas pergi ke dalam talian. Sila pastikan untuk cache token dan tiket untuk mengurangkan 2 permintaan pelayan. Ini bukan sahaja akan mengelakkan daripada mencetuskan had kekerapan, tetapi juga mempercepatkan perkhidmatan anda sendiri Pada masa ini, 10,000 pemerolehan disediakan untuk kemudahan ujian Selepas ambang melebihi, perkhidmatan tidak akan tersedia lagi Sila pastikan akses_token dan jsapi_ticket dicache secara global. . Kedua-duanya sah selama 7200 saat, jika tidak, ia akan dicetuskan apabila mereka pergi ke dalam talian Had kekerapan, perkhidmatan tidak akan tersedia lagi ). . Tidak boleh memuat naik imej yang dipilih secara tempatan (antara muka pilihImej itu sendiri menyokong pratonton, tiada sokongan tambahan diperlukan) 11 Lompat ke pautan B melalui pautan a (contohnya, pertama kali membenarkan log masuk melalui WeChat), tandatangan tidak sah gagal (pautan untuk menjana tandatangan di latar belakang ialah pautan semasa menggunakan jssdk, iaitu pautan b selepas lompatan. , sila jangan gunakannya) Pautan yang dibenarkan untuk log masuk WeChat digunakan untuk pengiraan tandatangan URL yang ditandatangani latar belakang mestilah URL lengkap halaman semasa jssdk tolak bahagian '#') A konfigurasi: ralat gagal berlaku (ini disebabkan oleh parameter konfigurasi yang tidak lengkap yang diluluskan) Sebab, sila pastikan anda memasukkan appId, cap waktu, nonceStr, tandatangan dan jsApiList yang betul untuk digunakan) 13 dimuat naik oleh jsapi ke WeChat ke pelayan anda sendiri (sila rujuk antara muka muat naikVoice dan muat naikImej dalam Nota dokumen) 14 Android dimuat naik ke pelayan WeChat melalui jssdk, dan pihak ketiga memuat turunnya dari WeChat ke miliknya sendiri. pelayan. Kebisingan akan berlaku (pasukan WeChat telah menyelesaikan masalah ini, dan bahagian belakang telah dioptimumkan dan dalam talian sekarang) 15. Ikat nama domain induk dan semak sama ada nama subdomainnya juga tersedia (ya, nama subdomain yang sah ada disokong sepenuhnya selepas mengikat nama domain induk) 16 Dalam iOS WeChat versi 6.1, pautan luar gambar yang dikongsi tidak dipaparkan Hanya gambar yang dipautkan dalam halaman akaun rasmi atau gambar pelayan WeChat Ini telah ditetapkan dalam 6.2 17 Adakah anda perlu mengemas kini pautan? Jadikan versi anda sendiri serasi (jssdk serasi dengan versi yang lebih rendah dan tidak memerlukan pihak ketiga untuk melakukan lebih banyak kerja, tetapi beberapa antara muka baru diperkenalkan dalam 6.0.2 dan hanya boleh dipanggil. oleh versi baharu) 18 Orang awam Tandatangan pembayaran tidak sah dan transaksi tidak boleh dimulakan (sila pastikan jweixin.js yang anda gunakan adalah versi dalam talian rasmi. Ia bukan sahaja dapat mengurangkan trafik pengguna, tetapi juga membetulkan pepijat tertentu dan menyalinnya ke pelayan pihak ketiga untuk digunakan Rasmi Kami tidak akan memberikan jaminan untuk sebarang masalah yang timbul) 19. Pada masa ini, pelanggan Android WeChat tidak menyokong ciri H5 baharu pushState. , jadi menggunakan pushState untuk melaksanakan halaman apl web akan menyebabkan tandatangan gagal dalam Android 6.2 Dibetulkan di tengah 20 Kadangkala Android tidak akan melaksanakan muat naik Imej dalam panggilan balik Android6.2 akan menyelesaikan masalah ini. Jika anda perlu menyokong versi yang lebih rendah, anda boleh meletakkan panggilan uploadImage dalam setTimeout dan menangguhkannya sebanyak 100ms 21 Ralat .require menandakan bahawa anda belum melanggan akaun ujian ini hanya akan muncul untuk akaun ujian 22 Koordinat yang dikembalikan oleh getLocation adalah berat sebelah dalam openLocation, kerana getLocation mengembalikan koordinat gps, dan peta Tencent yang dibuka oleh openLocation ialah koordinat Marikh, yang memerlukan pihak ketiga untuk menukar sendiri Sejak versi 6.2, pemerolehan terus koordinat Mars telah disokong 23. Lihat akaun rasmi (tidak ditambah): "menuItem:addContact" tidak dipaparkan pada masa ini, hanya pautan yang tersebar dari akaun rasmi boleh dipaparkan 24. Penyegerakan data pemfailan ICP ditangguhkan selama satu hari Jadi sila ikat pada hari kedua Lampiran halaman 6-DEMO dan kod sampel 🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜 🎜 🎜http://demo.open.weixin.qq.com/jssdk🎜 Kod contoh: http://demo.open.weixin.qq.com/jssdk/sample.zip Nota: Pautan ke-, java dan java: Kod sampel adalah untuk rujukan pihak ketiga ingat untuk cache token akses dan jsapi_ticket untuk memastikan had kekerapan tidak dicetuskan. Lampiran 7-Maklum Balas Masalah Alamat e-mel: weixin-open@qq.com Subjek e-mel: [Maklum balas WeChat JS-SDK] Perihalan kandungan e-mel: Huraikan masalah dalam bahasa ringkas dan terangkan dengan jelas senario di mana masalah itu dihadapi, Tangkapan skrin anda boleh dilampirkan maklum balas akan diproses secepat mungkin.
taip: '', // Kongsi taip, muzik, video atau pautan, jika dibiarkan kosong, lalainya ialah pautanParameter Adakah ianya perlu access_token ialah Bukti kelayakan panggilan antara muka . Nama parameter Penerangan kod Eror errmsg mesej ralat tiket api_ticket, sijil yang diperlukan untuk mendaftar masuk kad dan antara muka kupon expires_in masa sah
Nilai teladan. ID Kedai. shopID digunakan untuk menapis keluar dan mengeluarkan senarai kupon dengan location_list (shopID) yang ditentukan, yang tidak diperlukan. cardType No string(24) GROUPON Tiada🎜🎜🎜string(24)🎜🎜🎜🎜GROUPON🎜ard🎜 yang telah digunakan untuk jenis kad🎜 untuk tarik keluar Apabila cardType kosong, senarai semua kad dan kupon akan dikeluarkan secara lalai, yang tidak diperlukan.. Kad ID, digunakan untuk menarik senarai kad ID kad yang ditentukan Bila kadId Bila kosong, senarai semua kad dan kupon akan dikeluarkan secara lalai, yang tidak diperlukan. timestamp ialah rentetan(32) 1430000000 nonceStr ialah rentetan (32) sduhi123 🎜. cardSign ialah string(64)abcsdijcous123 Ditandatangani. Arahan
kod Tidak ialah kod kupon yang ditentukan oleh , yang hanya boleh dituntut sekali. Kad dan kupon dalam mod kod tersuai mesti diisi, tetapi kad dan kupon dalam mod bukan tersuai dan mod kod pra-simpan tidak perlu diisi. Untuk butiran, lihat: Sama ada untuk menyesuaikan kod openid Tidak ialah hanya penerima yang boleh menerimanya. Kad dan kupon yang medan bind_openid adalah benar mesti diisi; medan bind_openid adalah palsu dan tidak perlu diisi. cap masa ialah ialah cap masa, pedagang menjana bilangan saat: 00 dari 00 saat ini masa , dan akhirnya Ia perlu ditukar kepada bentuk rentetan; ia dijana oleh pedagang dan dihantar masuk. Cap masa permintaan tambah yang berbeza mesti dijana secara dinamik Jika diulang, koleksi akan gagal! . nonce_str No ialah rentetan rawak yang ditetapkan oleh pembangun, boleh diisi semula. Rentetan rawak, tidak lebih daripada 32 aksara. Adalah disyorkan untuk menggunakan huruf besar dan kecil dan Nonces untuk permintaan penambahan yang berbeza mesti dijana secara dinamik Jika berulang, pengumpulan akan gagal. fixed_begintimesmp Ia hanya digunakan apabila jenis tempoh sah kad dan kupon ialah DAT E_TYPE_FIX_TERM Ia mengenal pasti masa sah sebenar kad dan kupon, dan digunakan untuk menyelesaikan masalah penyegerakan antara masa mula dan. masa pengumpulan dalam sistem pedagang. .Signature adalah tandatangan - . seperti berikut; oleh peniaga Tandatangani mengikut spesifikasi dan kemudian masukkannya.