uniapp 解决安卓App使用uni.requestPayment实现沙箱环境支付宝支付报错

背景:uniapp与Java实现的安卓端app支付宝支付,本想先在沙箱测试环境测支付,但一直提示“商家订单参数异常,请重新发起付款。”,接着报错信息就是:{
    "errMsg": "requestPayment:fail [payment支付宝:62009]未知错误",
    "errCode": -100,
    "code": -100
}

本以为是uni.requestPayment传参问题,但只有两个参数,下面是官网示例代码:

uni.requestPayment(OBJECT) | uni-app官网

uni.requestPayment({provider: 'alipay',orderInfo: 'orderInfo', //微信、支付宝订单数据 【注意微信的订单信息,键值应该全部是小写,不能采用驼峰命名】success: function (res) {console.log('success:' + JSON.stringify(res));},fail: function (err) {console.log('fail:' + JSON.stringify(err));}
});

其中,orderInfo是后端返回的字符串,本来一直以为是后端传来的参数不对,便使用客户端调试工具测试。

后端返回的值(支付宝客户端处理加密过后的字符串):

调试方法:(使用安卓手机)

1. 下载支付宝沙箱版

这个可以在支付宝开发者中心沙箱环境里面扫二维码进行下载

2. 下载客户端调试工具

客户端调试工具下载

具体客户端使用请参照: 蚂蚁技术支持客户端调试工具使用教程

通过上面的方法测试后,使用那段长参数值是可以正常支付的。

可问题是,使用uni.requestPayment调用就是不行,继续翻支付宝官网文档,发现一重要注意事项。小程序文档 - 支付宝文档中心

解决:沙箱测试时需要添加一段代码:EnvUtils.setEnv(EnvUtils.EnvEnum.SANDBOX);

知道问题在哪了,但这段代码怎么在uniapp中使用呢?

下面附上我的部分代码,作为参考:

// #ifdef APP-PLUS
// 获取后端返回的支付宝客户端处理加密过后的字符串
await API_Trade.initiatePay(paymentMethod, paymentClient, params).then((signXml) => {//如果支付异常if (!signXml.data.success) {uni.showToast({title: signXml.data.message,duration: 2000});return;}let payForm = signXml.data.result;// 由于测试阶段采用沙箱支付,下面两行代码需要配置var EnvUtils = plus.android.importClass('com.alipay.sdk.app.EnvUtils');EnvUtils.setEnv(EnvUtils.EnvEnum.SANDBOX);uni.requestPayment({provider: 'alipay',orderInfo: payForm || '',success: (e) => {console.log('成功的返回值', e);uni.showToast({icon: "none",title: "支付成功!",});this.callback(paymentMethod)},fail: (e) => {console.log('失败的返回值', e);this.exception = e;uni.showModal({content: "支付失败,如果您已支付,请勿反复支付",showCancel: false,});},});}
);
// #endif

ok,沙箱环境下支付宝支付莫得问题了。

注意的是:关于EnvUtils.setEnv(EnvUtils.EnvEnum.SANDBOX);的代码段在使用生产环境支付时就需要注释了。

参考地址:学习记录:关于Uniapp与Java实现支付宝沙箱APP内支付_uniapp支付宝沙箱-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/604965.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【书生大模型00--开源体系介绍】

书生大模型开源体系介绍 0 通用人工智能1 InternLM性能及模型2 从模型到应用 大模型成为目前很热的关键词,最热门的研究方向,热门的应用;ChatGPT的横空出世所引爆,快速被人们上手应用到各领域; 0 通用人工智能 相信使…

[蓝桥杯学习] 线段树

学习blibli 定义 线段树是一种特殊的平衡二叉查找树,使用线段树,可以实现数据的添加、查找和删除。 树的根结点表示了一个完整的单元区间,左右孩子的区间是将父结点的区间进行二分,左右孩子的区间之和,就是他们的根…

【机器学习】循环神经网络(四)-应用

五、应用-语音识别 5.1 语音识别问题 详述语音识别的经典方法GMMHMM框架 5.2 深度模型 详述DNN-HMM结构 循环神经网络与CTC技术结构用于语音识别问题 六、自然语言处理 RNN-LM建模方法 6.1 中文分词 6.2 词性标注 6.3 命名实体识别 详述LSTMCRF进行命名实体识别的方法 6.4 文本…

ElasticSearch 性能优化

提升写入性能 使用 bulk 接口批量写入 节省重复创建连接的网络开销通过进行基准测试来找到最佳的批处理数量 延长 refresh 的时间间隔 通过延长 refresh(刷新)的时间间隔可以降低段合并的频率,段合并十分耗费资源默认的刷新频率为1s&…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《基于两阶段随机优化的电能量与深度调峰融合市场出清模型及定价方法》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主的专栏栏目《论文与完整程序》 这个标题涉及到一个电力市场的建模和定价方法,采用了两阶段随机优化的策略,目标是实现电能量与深度调峰的融合。下面是对标题中各个…

百度搜索金融:构建高时效、高可用的分布式数据传输系统

作者 | 搜索技术平台研发部 导读 分布式数据传输系统是一种用于在多个计算节点之间高效传输大量数据的系统,诣在高效的解决大规模数据迁移、备份、跨地域复制等问题,其广泛应用在实时数据流传输、跨数据中心数据迁移、多媒体传输等场景,在大多…

智能合约:3分钟开发ERC20 token(2)

0.前言 上一节我们讲到了开发智能合约的准备工作,以及在线编程平台remix 智能合约(1) 这一节讲解如何开发、发行一个代币,并具备包括代币铸造mint,转账transfer和销毁burn功能,并确保合约拥有者owner的权限…

Tracert 与 Ping 程序设计与实现(2024)

1.题目描述 了解 Tracert 程序的实现原理,并调试通过。然后参考 Tracert 程序和计算机网络教材 4.4.2 节, 计算机网络 课程设计指导书 2 编写一个 Ping 程序,并能测试本局域网的所有机器是否在线,运行界面如下图所示的 QuickPing …

【docker】centos 使用 Nexus Repository 搭建私有仓库

Nexus Repository 是一种流行的软件仓库管理工具,它可以帮助您搭建私有仓库,以便在内部网络或私有云环境中存储、管理和分发各种软件包和组件。 它常被用于搭建Maven的镜像仓库。本文演示如何用Nexus Repository搭建docker 私有仓库。 使用Nexus Repos…

毕业设计:基于机器学习xgboost lgbm adaboost 的空气质量预测pm2.5‘, ‘so2‘, ‘no2‘ 完整代码数据-可直接运行

项目详细视频讲解介绍: 基于机器学习xgboost lgbm adaboost 的空气质量预测-完整代码数据可直接运行_哔哩哔哩_bilibili 数据展示: 运行结果展示: 项目代码: from sklearn import preprocessing import random from sklearn.model_selection import train_test_split fr…

《GreenPlum系列》GreenPlum详细入门教程01-GreenPlum介绍

文章目录 第一章 GreenPlum介绍1.MPP架构介绍2.GreenPlum介绍3.GreenPlum数据库架构4.GreenPlum数据库优缺点 GreenPlum:https://cn.greenplum.org/ 第一章 GreenPlum介绍 1.MPP架构介绍 MPP是Massively Parallel Processing的缩写,也就是大规模并行处…

GEE数据集——Cloud Score+ S2_HARMONIZED数据集

简介 Cloud Score 是一种用于中高分辨率光学卫星图像的质量评估(QA)处理器。Cloud Score S2_HARMONIZED数据集是由统一的哨兵-2 L1C数据集制作的,Cloud Score的输出可用于识别相对清晰的像素,并有效去除L1C(大气顶部&…

GPDB - 高可用 - 流复制状态

GPDB - 高可用 - 流复制状态 GPDB的高可用基于流复制,通过FTS进行自动故障切换。自动故障切换需要根据primary-mirror流复制的各种状态进行判断。本节就聊聊primary-mirror流复制的各种状态。同样适用于PgSQL 1、WalSndState typedef enum WalSndState {WALSNDSTATE…

04-微服务-Nacos

Nacos注册中心 国内公司一般都推崇阿里巴巴的技术,比如注册中心,SpringCloudAlibaba也推出了一个名为Nacos的注册中心。 1.1.认识和安装Nacos Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件。相比Eureka功能更加丰富,在…

MySQL-存储引擎

简介:存储引擎是存储数据,建立索引,更新/查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的, (同一个数据库的不同表可以选择不同的存储引擎) 所以存储引擎也可被称为表类型。 我们输入 SHOW CREATE TAB…

Halcon机器视觉和运动控制软件通用框架,24年1月最新版新增UI设计器,插件式开发,开箱即用 仅供学习!

24年1月更新 下载点我 此版本已经添加ui设计器。具体功能如上所示,可以自定义变量,写c#脚本,自定义流程,包含了halcon脚本和封装的算子,可自定义ui,通过插件形式开发很方便拓展自己的功能。 ui设计器

消息队列-RocketMQ-概览与搭建

RocketMQ 领域模型 RockeMQ整体结构预览 RocketMQ 中的一些概念 Topic:主题,可以理解为类别、分类的概念 MessageQueue:消息队列,存储数据的一个容器(队列索引数据),默认每个 Topic 下有 4 个队…

AI担任编程导师:生成式AI如何翻江倒海改变开发世界

生成式 AI 如何重塑开发流程和开发工具? 在21世纪的舞台上,AI作为技术明星,一直以其潜力无穷的表现吸引着我们的目光。而其中,一名角色,响亮的名字叫做生成式AI,正在以翩翩起舞的姿态,改变着我…

华为mstp、vrrp、ospf、isis、bgp等综合一起排错

最终实现左边私网和右边私网全部ping通 SW1 vlan batch 12 34 stp region-configuration //mstp配置 region-name test instance 12 vlan 12 instance 34 vlan 34 active region-configuration interface GigabitEthernet0/0/3 port link-type trunk port trunk allow-pass …

Windows11 - Ubuntu 双系统及 ROS、ROS2 安装

系列文章目录 前言 一、Windows11 - Ubuntu 双系统安装 硬件信息: 设备名称 DESKTOP-B62D6KE 处理器 13th Gen Intel(R) Core(TM) i5-13500H 2.60 GHz 机带 RAM 40.0 GB (39.8 GB 可用) 设备 ID 7673EF86-8370-41D0-8831-84926668C05A 产品 ID 00331-10000-0000…