支付宝小程序开发踩坑笔记(支付宝、学习强国小程序)

这篇具有很好参考价值的文章主要介绍了支付宝小程序开发踩坑笔记(支付宝、学习强国小程序)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、接口请求安卓端回调 success,IOS 端回调 fail

原因:dataType 设置不对,默认是 json 格式,对返回数据会进行 json 解析,如果解析失败,就会回调 fail 。加密传输一般是 text 格式。

启动支付宝小程序后,运行frida_main.py,笔记,学习,小程序

2、input 禁止输入空格

inputtextarea 组件默认不会双向绑定,需要借助 setData 进行中转。

  <textarea value="{{valueTextarea}}" onInput="handleTextarea" ></textarea>
  <input value="{{valueInput}}" onInput="handleInput" />
  Page({
  data: {
    valueTextarea: '',
    valueInput: ''
  },
  // textarea
  handleTextarea: function(e) {
    this.setData({
      valueTextarea: e.detail.value,
    });
  },
  // input
  handleInput: function(e) {
    this.setData({
      valueInput: e.detail.value,
    });
  },
});

如果仅是这样,只能实现双向绑定,无法达到禁止输入空格的预期,所以需要对数据进行处理。

this.setData({
  value: e.detail.value.replace(/\s+/g, ''),
});

输入时对输入的值进行替换,将空格过滤掉。可惜这样也只能实现一半,与预期还是有出入,因为虽然 data 中的值没有空格了,但是页面展示中依然会有空格。神奇的是,打印出来的结果也是没有空格的。所以还需要更进一步处理,其实这一点官方文档中是有提到的,只需将下面的属性改为 true 即可。

启动支付宝小程序后,运行frida_main.py,笔记,学习,小程序

3、点击 tabBar 页面不更新

需要注意页面栈深度。正常使用 my.switchTab 跳转时可以触发页面更新的。

启动支付宝小程序后,运行frida_main.py,笔记,学习,小程序
但是如果点击底部按钮切换,不会触发更新,不过官方提供了一个 API onTabItemTap ,这是小程序自带的事件处理函数,可以监听到 tabBar 被点击事件。

官方文档-页面运行机制

启动支付宝小程序后,运行frida_main.py,笔记,学习,小程序

4、加密算法

官方提供了一个API my.rsa,不过能力很弱,仅支持 RSA 加解密能力,如需更多加解密的能力,建议使用 crypto-js

使用方法如下:

# 安装
npm install crypto-js

示例 AES 加密:

const CryptoJS = require("crypto-js")

/**
 * @description 加密
 * @param word 加密内容
 * @param key 密钥
 */
export function encrypt(word, key) {
  const keyStr = CryptoJS.enc.Utf8.parse(key);
  const srcs = CryptoJS.enc.Utf8.parse(word);
  const encrypted = CryptoJS.AES.encrypt(srcs, keyStr, {
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7,
  });
  return encrypted.toString();
}

/**
 * @description 解密
 * @param word 解密内容
 * @param key 密钥
*/
export function decrypt(word, key) {
  const keyStr = CryptoJS.enc.Utf8.parse(key);
  const base64 = CryptoJS.enc.Base64.parse(word);
  const src = CryptoJS.enc.Base64.stringify(base64);
  const decrypt = CryptoJS.AES.decrypt(src, keyStr, {
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7,
  });
  return decrypt.toString(CryptoJS.enc.Utf8);
}

官方文档-my.rsa

5、网络请求封装

小程序因为要用自带的API my.request,请求的格式需要按照要求去写。

my.request({
  url: 'https://httpbin.org/post',
  method: 'POST',
  data: {
    from: '支付宝',
    production: 'AlipayJSAPI',
  },
  headers: {
    'content-type': 'application/json', //默认值
  },
  dataType: 'json',
  success: function (res) {
    my.alert({ content: 'success' });
  },
  fail: function (error) {
    console.error('fail: ', JSON.stringify(error));
  },
  complete: function (res) {
    my.hideLoading();
    my.alert({ content: 'complete' });
  },
});

如果每次请求都要完整的写一遍上面的内容,那真的很令人绝望,尤其是需要改变服务器地址时,每次都全局替换,也绝对不是一个好的方式。

以下为请求封装示例(仅供参考,实际场景要比示例复杂很多):

/**
  * @description 接口封装
  * @param url 接口路径
  * @param params 接口数据
  * @param method 请求类型 GET、POST...
  * @param type content-type,默认application/json
*/
export function request(url, params, method, type = 'application/json') {
	return new Promise((resolve, reject) => {
		my.request({
		  url: `https://****{url}`,
		  headers: {
		    'content-type': type
		  },
		  method: method,
		  dataType: 'text',
		  data: params,
		  success: (res) => resolve(res.data),
		  fail: (err) => resolve(err),
		});
	}
}

6、base64编解码

小程序不是浏览器,btoa()atob() 这样的写法在低版本中未必支持,且即使不支持,小程序也不会提示,因此在遇到不支持的语法时,很难定位问题。

百度可以搜索到自己写的 base64 编解码函数,不幸的是,与 btoa()atob() 对某些字符的编码未必一致,所以未必可用。幸运的是,小程序提供了 base64 编解码的API,但也有其限制,仅支持 ArrayBufferbase64 之间编解码。

基础库 2.7.3 或更高版本支持

// 将 Base64 字符串转成 ArrayBuffer 对象
my.base64ToArrayBuffer()

// 将 ArrayBuffer 对象转成 Base64 字符串
my.arrayBufferToBase64()

遇到再更,如有不同看法或需要作者补充,欢迎在评论区留言,看到会及时补充。

WAIT…文章来源地址https://www.toymoban.com/news/detail-822630.html

到了这里,关于支付宝小程序开发踩坑笔记(支付宝、学习强国小程序)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序开发学习笔记

    Color: red Color: rgb(255, 99, 71) Color: rgba(red, green, blue, alpha) Color: #ff6347 background-color:指定元素的背景色 opacity:指定元素的透明度,取值在0~1之间 background-image:指定元素的背景图像,在水平和垂直方向上都会重复图像 background-repeat:配合background-image使用,指定图像重复方向或者

    2024年02月09日
    浏览(49)
  • 微信小程序开发学习笔记《8》tabBar

    博主正在学习微信小程序开发,希望记录自己学习过程同时与广大网友共同学习讨论。tabBar官方文档 tabBar这一节还是相当重要的。 tabBar是移动端应用常见的页面效果, 用于实现多页面的快速切换 。小程序中通常将其分为: 底部 tabBar 顶部 tabBar 注意: tabBar中只能配置最少2个、

    2024年02月02日
    浏览(43)
  • 我的学习笔记——微信小程序开发“渲染层错误”

    报错信息 [渲染层错误] Framework inner error (expect FLOW_CREATE_NODE but get another)(env: Windows,mp,1.06.2209190; lib: 2.25.4) [渲染层错误] Error: Framework inner error (expect FLOW_CREATE_NODE but get another)     at ln (http://127.0.0.1:38316/__pageframe__/__dev__/WAWebview.js?t=wechats=1667714729240v=2.25.4:1:2018909)     at sn (http:/

    2024年02月09日
    浏览(44)
  • 小程序入门笔记(一) 黑马程序员前端微信小程序开发教程

    微信小程序基本介绍 小程序和普通网页有以下几点区别: 运行环境:小程序可以在手机的操作系统上直接运行,如微信、支付宝等;而普通网页需要在浏览器中打开才能运行。 开发技术:小程序采用前端技术进行开发,如HTML、CSS、JavaScript等;而普通网页也是使用类似的前

    2024年02月08日
    浏览(65)
  • 小程序开发安卓/ios兼容踩坑合集

    时间格式时IOS不兼容的问题 原因:iOS系统不能识别XXXX-XX-XX(2020-05-20 12:00:00)格式的,需要将格式转换成 2020/05/20 12:00:00 解决: margin在IOS真机中失效 情境:在页面中元素使用margin值,在某些IOS设备下会出现失效的情况,而安卓机则正常显示。 解决:此问题暂无直接的解决方

    2024年02月09日
    浏览(67)
  • 抖音小程序开发,收银台支付回调通知

    大家好,我是小悟 关于抖音小程序收银台支付,可阅读【抖音小程序开发,唤起收银台,包括抖音支付、支付宝支付、微信支付】。 做支付功能最重要的一步就是异步回调通知,所谓回调通知就是唤起收银台支付,支付成功后,平台会通过提前设置好的回调地址,将用户支

    2024年02月13日
    浏览(38)
  • 微信小程序支付踩坑notify_url(支付回调)

    最近做了微信小程序支付,支付成功之后发现notify_url回调地址竟然没有访问。 检查了无数次代码,下单结果里面的回调地址看了又看,都没有错啊。 把回调地址复制出来到浏览器上面,外网也是可以访问的啊。 然后我再分析,为什么以前公众号支付都没有出现这种类型的错

    2024年02月11日
    浏览(46)
  • 微信小程序开发学习笔记——2.11navigator页面链接导航

    跟着b站up主“咸虾米_”学习微信小程序开发中,把学习记录存到这方便后续查找。 课程连接: https://www.bilibili.com/video/BV19G4y1K74d?p=14 https://developers.weixin.qq.com/miniprogram/dev/component/navigator.html 属性之一          navigate可以记录上一个缓存页,点击左上角返回按钮可以跳转回

    2024年02月22日
    浏览(48)
  • 微信小程序开发实战11_1 微信支付下单

    微信支付存在多个业务流程,包括微信支付流程、退款流程等。本章节主要介绍微信的支付下单流程,图12-1是微信支付流程的交互图: 重点环节说明 步骤1:小程序端用户向商户服务器发起支付请求,重点是提供用户信息、商品信息、支付金额等参数。 步骤3:商户服务器调

    2024年02月09日
    浏览(47)
  • 微信小程序开发学习笔记——3.4for循环列表渲染的用法

    跟着b站up主“咸虾米_”学习微信小程序开发中,把学习记录存到这方便后续查找。 课程连接:https://www.bilibili.com/video/BV19G4y1K74d?p=18vd_source=9b149469177ab5fdc47515e14cf3cf74 https://developers.weixin.qq.com/miniprogram/dev/reference/wxml/list.html data.js文件的data部分:  data.wxml文件中添加如下代码:

    2024年02月22日
    浏览(72)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包