微信服務號開發——如何在微信中使用支付寶支付

由于微信支付寶的封殺大戰,導致無法在微信平臺中使用支付寶付款。但是考慮到某些用戶可能沒有開通微信支付,因此在一些應用情景下,實現微信端支付寶付款還是很有必要。最近擼的代碼正好有這個需求,所以研究了一下分享出來,希望對需要的小伙伴有所幫助。

實現思路:

在微信中,當我們點擊支付寶付款(點擊第一張圖中的“確定”)時,先到一個跳轉頁面,跳轉頁面中的JS邏輯如下所示,

  1. 判斷當前的運行環境,如果是微信內置的瀏覽器,則說明是在微信平臺中,此時通過document.body.innerHTML = '<img src="img/paySkip.png" id="mask" />';將頁面內容改為一張圖片,提示用戶點擊右上角 ... ,選擇在手機瀏覽器中打開;
  2. 用戶在手機瀏覽器中打開之后,則執行if (!isWeixin) {}中的邏輯,通過ajax向后臺請求數據;
  3. 得到ajax返回的data后,運行data中的script代碼,就會接入支付寶的移動網絡支付功能(data中的內容為dom(form表單,表單中的數據均已由后臺提供)+script(提交form表單的js代碼))
選擇支付方式.png
跳轉頁面—選擇在瀏覽器中打開.png
在瀏覽器中打開后js提交表單就會自動跳轉到該頁面(該頁面由支付寶接口提供).png

var orderNumber = url.split('&')[1].split('=')[1]; //判斷當前環境是否為微信內置瀏覽器 var ua = navigator.userAgent.toLowerCase(); var isWeixin = ua.indexOf('micromessenger') != -1; var url = window.location.href; if (!isWeixin) {//非微信內置瀏覽器,說明已經在瀏覽器中打開了,執行這段邏輯 _ShowWaiting();//顯示等待顯示框 //封裝好的ajax請求函數,通過ajax向后臺請求數據 HTTPRequestFunc( "get", 'http://v1dev.ebbaba.com/Interface/json/PayService.ashx?pagetype=aliwebpay', { ordernum: orderNumber }, function(data){ _CloseWaiting(); //返回的數據為一個form表單和提交該form的script,通過提交該表單(提交到支付寶,提交的數據等一系列內容已經全部包含在后臺返回的data數據中,我們只需要運行data中的script即可) var data = JSON.parse(data); if(data.status == 1){ document.body.innerHTML = data.data; //通過innerHTML添加的script代碼不會自動執行,需要我們手動來執行 var scripts = document.body.getElementsByTagName("script"); for(var i=0;i<scripts.length;i++){ //一段一段執行script eval(scripts[i].innerHTML); } }else{ _CloseWaiting();//關閉等待顯示框 mui.toast(data.info,{verticalAlign:"center", duration:"long"}); } }, function(status, info){ _CloseWaiting(); mui.toast(info,{verticalAlign:"center", duration:"long"}); }); }else{//微信瀏覽器,顯示‘在瀏覽器中打開’圖片 document.body.innerHTML = '<img src="img/paySkip.png" id="mask" />'; }

支付寶手機網站支付API

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容