接入微信支付,支付操作提示-1,无效的参数;痛心疾首

调起微信支付失败

功能流程:

  • 应用端发起支付申请
  • 服务端生成订单进行签名后返回
  • 应用端使用订单在应用内调起微信进行支付

问题现状:无法正常调起微信,返回-1错误码。

按照正常处理逻辑,查一下该错误码的解释说明把。
不查不要紧,一查就痛心疾首;接过支付宝的都知道会描述一个具体的原有,但是微信支付如下:

  • 错误码为:-1
  • 可能原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等

这下没法子了,只能一处一处的依次检查了。

一、相关文档

  1. H5+:plus.payment
  2. uni-app:uni.requestPayment
  3. uni-app:离线打包教程
  4. DCloud:支付错误码
  5. 微信支付开发文档

一、官方处理意见

  1. 使用微信的在线签名工具检查签名是否和程序生成的一致 签名工具用谷歌打开。
    选择MD5,XML,然后把请求参数xml放进去,就能校验签名。

  2. 如果和微信的在线签名工具一致,说明程序没有错误,确定是API密钥错误(被别人改动或者记错了)
    在商户平台的账户信息中更改API密钥(账户设置-安全设置-API安全), 15分钟后生效

  • 统一下单用的是A商户号,也必须是A商户号登陆商户平台设置key才对。
  • 要注意统一下单请求参数中total_fee参数的类型是int类型。
  1. 如果和微信的在线签名工具不一致,说明程序有错误,常见的错误可能是:
  • 编码问题,确保所有的都是utf-8的. 如果有中文, 可以先把中文改成英文重新签名,看是否签名错误,如果英文不会错中文才会错,基本肯定是编码问题
  • 消息中字段大小写和文档中完全一致

二、核对流程

1. 检查应用APPID

APPID是微信开发平台对我们应用生成的唯一标识;核对移动项目配置中的APPID是否有误。

  • HBuilderX在线打包项目直接核对manifest.json中的配置:
    在这里插入图片描述
  • Android项目在AndroidManifest.xml中配置:
    在这里插入图片描述
  • iOS项目在info> URL Types下配置:
    在这里插入图片描述

2. 检查服务端商户号

商户号是具体收款的个体,是在服务端访问微信支付相关接口时使用的。
核对该商户号码是否填写或配置错误。

  • 服务端得到数据后需要再次进行签名。

当服务端无法确认时,我们可以使用微信官方提供的微信支付接口签名校验工具自己生成sign和postMan获取订单。

3. 检查应用包名

检测应用的包名和开发平台配置的是否为同一包名,否则微信将无法确认应用。

  • HBuilder X在线打包项目,在发起打包时设置:
    在这里插入图片描述

  • Android原生项目,在build.gradle中设置:
    在这里插入图片描述

  • iOS原生项目,在General中:
    在这里插入图片描述

4. 检查应用签名

Andorid应用使用微信的在线签名工具检查签名是否和程序生成的一致。

5. 配置通用链接

iOS平台微信SDK更新需要配置通用链接(Universal Links)

  • iOS原生项目,在info.plist中:
    配置UniversalLinks值,该值和微信开放平台配置的一致。
    我本次的支付失败经过排查就是在此处填写错误导致的!
    在这里插入图片描述

并确认在工程的AppDelegate.m系统通用链接方法中调用框架方法如下:

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray<id<UIUserActivityRestoring>> * __nullable restorableObjects))restorationHandler {
    [PDRCore handleSysEvent:PDRCoreSysEventContinueUserActivity withObject:userActivity];
    restorationHandler(nil);
    return YES;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值