uni-app 支付宝小程序 uni-pay 启动与支付报错

uni-app 支付宝小程序 uni-pay 启动与支付报错

操作步骤:

  • 同上

预期结果:

  • 同上

实际结果:

  • 同上

bug描述:

uni-pay 更新至2.3.1, 支付宝H5已经可以正常支付使用, 支付宝小程序也开通了JSAPI支付, 测试满足开发条件. 支付宝相关(加签方式选证书模式,加密算法选RSA2),H5与小程序的证书分别配置的 启动支付宝小程序
报错方式一: 验签出错,建议检查签名字符串或签名私钥与应用公钥是否匹配,网关生成的验签字符串为
如果将应用私钥 按照支付宝开放平台密钥工具>格式转换为PKSC1格式后
报错方式二: [uni-pay-co]: 53001:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag

信息 内容
产品分类 uniapp/小程序/阿里
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 win10
HBuilderX类型 正式
HBuilderX版本号 4.36
第三方开发者工具版本号 3.9.22
基础库版本号 20.17
项目创建方式 HBuilderX

Image Image Image Image


更多关于uni-app 支付宝小程序 uni-pay 启动与支付报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复

看报错是上层问题,你可以尝试用原生小程序验证是环境是否设置正确,通过缩小问题范围判断是环境配置问题、uniapp 问题还是支付宝的问题

更多关于uni-app 支付宝小程序 uni-pay 启动与支付报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html


密钥用的是PKCS8
同时需要去支付宝开放平台申请退回userid模式,https://opendocs.alipay.com/mini/0ai736?pathHash=46388508

找了两天问题解决了,首先我错以为只能连接云端云函数,才能使用支付功能,其实正好相反. 一. 首先项目详情要在web-view 域名配置这里 勾选忽略这三个检查 二. 支付宝小程序启动时 连接本地云函数 重要 支付宝 - 小程序支付配置 “mp” 这里 “mchId”:" ", //支付宝商户号要加上
H5支付配置与小程序配置的证书路径我是分开的,目测 appCertPublicKey 内容不一样,就都分开配置了.appId也不一样,网页应用与小程序的要分别对应上.
ps: 之前一直在捣鼓 私钥PKCS8 私钥PKCS1 ,经我测试付宝开放平台密钥工具 默认生成的私钥就可以,不用转换格式,也不用指定 keyType.
pps: 最开始找问题时, 在支付宝开放平台> 控制台>开发设置>openid配置管理 中申请了openid转为userid, 所以现在是未启用状态

连接云端和本地都可以的,连接云端的时候,必须先上传所有的公共模块和云函数云对象,然后测试支付回调的时候是强制走的云端(因为支付公司的服务器不能访问你本地,只能访问你云端)

针对您提到的uni-app支付宝小程序中uni-pay启动与支付报错的问题,这通常涉及到支付功能的集成与调试。以下是一个简化的代码示例,以及可能的错误处理思路,希望能帮助您定位和解决问题。请注意,由于具体错误信息未提供,以下示例基于一般支付集成流程。

1. 配置uni-app项目

确保已在manifest.json中配置了支付宝小程序的appid和其他必要信息。

{
  "mp-alipay": {
    "appid": "your-alipay-appid",
    "setting": {
      "urlCheck": false
    }
  }
}

2. 集成uni-pay插件

pages.json中注册支付页面(如果需要自定义支付流程页面)。

{
  "pages": [
    {
      "path": "pages/pay/pay",
      "style": {
        "navigationBarTitleText": "支付"
      }
    }
  ]
}

3. 发起支付请求

在需要发起支付的页面或组件中,使用uni-pay API。以下是一个简化的示例:

uni.requestPayment({
  timeStamp: '', // 支付宝生成,从服务端获取
  nonceStr: '', // 支付宝生成,从服务端获取
  package: '', // 支付宝生成,格式为prepay_id=xxx,从服务端获取
  signType: 'RSA2', // 签名方式,与服务端保持一致
  paySign: '', // 支付宝生成,从服务端获取
  success: (res) => {
    console.log('支付成功', res);
  },
  fail: (err) => {
    console.error('支付失败', err);
    // 错误处理,如检查参数是否正确,网络是否通畅等
  }
});

4. 服务端生成支付参数

支付所需的timeStampnonceStrpackagepaySign等参数应由服务端生成,并安全地传递给前端。服务端代码根据具体开发语言和SDK会有所不同,这里不提供具体代码。

5. 错误处理与调试

  • 检查网络:确保前端与后端通信畅通无阻。
  • 验证参数:仔细检查传递给uni.requestPayment的参数是否完整且正确。
  • 日志记录:在服务端和前端增加详细的日志记录,帮助定位问题。
  • 支付宝开发者文档:参考支付宝小程序官方文档中关于支付的部分,确保遵循所有规范。

由于缺少具体的错误信息,以上内容提供了一种通用的调试和集成思路。如果问题依旧存在,建议查看控制台输出的具体错误信息,并对照支付宝小程序的开发文档进行进一步的排查。

回到顶部