美文网首页
微信小程序移植到支付宝小程序

微信小程序移植到支付宝小程序

作者: 青菜白玉堂 | 来源:发表于2019-01-16 12:10 被阅读36次

    好久没写文章了,最近正好把公司的微信小程序移植到支付宝,期间遇到的问题总结一下。

    首先:使用这个工具https://github.com/foxitdog/wx2ali
    将微信小程序转阿里小程序,期间工具会帮我们替换掉绝大部分的名称。

    接下来就是要调试我们的支付宝小程序了。

    1. xx.js的问题
    xx.js的文件,一般是在js中引入并使用,这里主要需要注意的是两边引入方式的不同。
    - 微信
    var xx = require("../../xx.js") 
    - 支付宝
     import xx from '../../utils/xx.js'
    
    1. xx.wxs的问题
    一般项目中我们都会封装xx.wxs这个工具文件在wxml中处理一些数据,支付宝也是支持的,
    但是,它的后缀是xx.sjs
    然后就是引入的问题,
    - 微信
    在wxml文件中是这样<wxs src="../../xx.wxs" module="xx" />引入的。
    - 支付宝
    在axml文件中需要改为<import-sjs name="xx" from="../../xx.sjs"/>
    
    1. str.match is not a function报错
    这个是我遇到最大的坑了,因为微信小程序一开始是后台写的,
    wx:for='{{xxArray}}' wx:key
    这种写法在微信里不会报错,但是到了支付宝中
    a:for="{{xxArray}}" a:key
    会导致程序无法运行,而且报错提示不准确,无法定位问题,
    网上也没找到问题,解决全靠蒙的【😓】,改为下面这种就行了,
    a:for="{{xxArray}}" a:key='key'
    

    4.rem的坑

    还是因为微信项目是后台写的,后台还是根据h5改的,
    导致项目中同时存在了,px,rpx,rem,三种单位,
    在微信中显示是没有问题的,在支付宝中会导致极大的差别,
    我粗略的转换了一下,1px=2rpx;1rem=32rpx;
    效果最后和微信差不多,也就不追究啦
    

    5.wx.showModal与my.showToast

    工具转换,好像是忽略掉了这两个的区别,只是把外面名称换了,
    内部没有换,在wx.showModal里的titile,
    my.showToast需要换成content,否则提示信息显示不完整
    

    5.statusCode需要替换为status

    项目中有可能使用statusCode判断了接口返回的状态,在支付宝中需要替换为status
    

    5.支付的问题

    - 微信
    wx.requestPayment
    - 支付宝
    my.tradePay
    它们两个的区别是,参数多少,以及对成功的判定,微信是没支付就不会走sucess的方法,支付宝是
    只要不是异常都会走sucess,但是会在sucess的返回值里做区分,别的没有太大坑
    

    然后,吐槽下支付宝的坑

    它的console输出区域,连第几行打印都显示的不准确。
    每编辑一个文件都要单独保存一下,很容易忘记。
    真机调试不方便
    命名不能有@
    xx.sjs页面中使用,如果数据出问题,可能导致整个页面不加载,也不报错
    ......

    相关文章

      网友评论

          本文标题:微信小程序移植到支付宝小程序

          本文链接:https://www.haomeiwen.com/subject/joopdqtx.html