好久沒寫文章了,最近正好把公司的微信小程序移植到支付寶,期間遇到的問題總結(jié)一下。
首先:使用這個(gè)工具https://github.com/foxitdog/wx2ali
將微信小程序轉(zhuǎn)阿里小程序,期間工具會(huì)幫我們替換掉絕大部分的名稱。
接下來(lái)就是要調(diào)試我們的支付寶小程序了。
- xx.js的問題
xx.js的文件,一般是在js中引入并使用,這里主要需要注意的是兩邊引入方式的不同。
- 微信
var xx = require("../../xx.js")
- 支付寶
import xx from '../../utils/xx.js'
- xx.wxs的問題
一般項(xiàng)目中我們都會(huì)封裝xx.wxs這個(gè)工具文件在wxml中處理一些數(shù)據(jù),支付寶也是支持的,
但是,它的后綴是xx.sjs
然后就是引入的問題,
- 微信
在wxml文件中是這樣<wxs src="../../xx.wxs" module="xx" />引入的。
- 支付寶
在axml文件中需要改為<import-sjs name="xx" from="../../xx.sjs"/>
- str.match is not a function報(bào)錯(cuò)
這個(gè)是我遇到最大的坑了,因?yàn)槲⑿判〕绦蛞婚_始是后臺(tái)寫的,
wx:for='{{xxArray}}' wx:key
這種寫法在微信里不會(huì)報(bào)錯(cuò),但是到了支付寶中
a:for="{{xxArray}}" a:key
會(huì)導(dǎo)致程序無(wú)法運(yùn)行,而且報(bào)錯(cuò)提示不準(zhǔn)確,無(wú)法定位問題,
網(wǎng)上也沒找到問題,解決全靠蒙的【??】,改為下面這種就行了,
a:for="{{xxArray}}" a:key='key'
4.rem的坑
還是因?yàn)槲⑿彭?xiàng)目是后臺(tái)寫的,后臺(tái)還是根據(jù)h5改的,
導(dǎo)致項(xiàng)目中同時(shí)存在了,px,rpx,rem,三種單位,
在微信中顯示是沒有問題的,在支付寶中會(huì)導(dǎo)致極大的差別,
我粗略的轉(zhuǎn)換了一下,1px=2rpx;1rem=32rpx;
效果最后和微信差不多,也就不追究啦
5.wx.showModal與my.showToast
工具轉(zhuǎn)換,好像是忽略掉了這兩個(gè)的區(qū)別,只是把外面名稱換了,
內(nèi)部沒有換,在wx.showModal里的titile,
my.showToast需要換成content,否則提示信息顯示不完整
5.statusCode需要替換為status
項(xiàng)目中有可能使用statusCode判斷了接口返回的狀態(tài),在支付寶中需要替換為status
5.支付的問題
- 微信
wx.requestPayment
- 支付寶
my.tradePay
它們兩個(gè)的區(qū)別是,參數(shù)多少,以及對(duì)成功的判定,微信是沒支付就不會(huì)走sucess的方法,支付寶是
只要不是異常都會(huì)走sucess,但是會(huì)在sucess的返回值里做區(qū)分,別的沒有太大坑
然后,吐槽下支付寶的坑
它的console輸出區(qū)域,連第幾行打印都顯示的不準(zhǔn)確。
每編輯一個(gè)文件都要單獨(dú)保存一下,很容易忘記。
真機(jī)調(diào)試不方便
命名不能有@
xx.sjs頁(yè)面中使用,如果數(shù)據(jù)出問題,可能導(dǎo)致整個(gè)頁(yè)面不加載,也不報(bào)錯(cuò)
......