签名验签自助排查

签名验签自助排查 


支付宝开放平台SDK封装了签名和验签过程,只需配置账号及密钥参数,强烈建议使用。
 
SDK下载地址 
TIPS:文中代码部分以JAVA语言演示,其他语言请参考各自SDK。 

使用开放平台SDK接入 
如果使用了开放平台SDK,签名验签问题通常是因为密钥配置错误导致。 
配置代码示例,问题描述中会以示例中的变量名为例: 

AlipayClient alipayClient = new DefaultAlipayClient(gateway,app_id,private_key,"json",charset,alipay_public_key,sign_type); 
签名问题 
Q:SDK抛出异常:“com.alipay.api.AlipayApiException: RSA私钥格式不正确,请检查是否正确配置了PKCS8格式的私钥”。 
A:代码中私钥(private_key)格式错误导致。1>.检查格式是否正确。Java需使用PKCS8格式,其他语言使用PKCS1格式。 
2>.检查私钥是否一行。 

Q:请求时,SDK抛出异常:“java.lang.NullPointerException: privateKey should not be NULL!”。 
A:代码中私钥(private_key)参数未赋值导致。请把商户应用私钥赋值给该参数。 

Q:请求时,SDK抛出异常:“java.security.NoSuchAlgorithmException: MD5 KeyFactory not available”。 
A:代码中签名类型(sign_type)设置错误导致。开放平台接口需设置成RSA。 

Q:请求时,支付宝返回报错信息:“{"code":"40003","msg":"Insufficient Conditions","sub_code":"isv.missing-signature-config","sub_msg":"验签出错, 未配置对应签名算法的公钥或者证书"}” 
A:开放平台未配置商户公钥导致。请登录开放平台,上传公钥。教程 

Q:请求时,支付宝返回报错信息:“{"code":"40002","msg":"Invalid Arguments","sub_code":"isv.invalid-signature","sub_msg":"无效签名"}” 
A:签名校验失败。1>.检查网关地址(gateway)是生产环境还是沙箱环境,必须使用与之匹配的应用id(app_id)与私钥(private_key)
2>.检查编码类型(charset)是否正确。 
3>.检查私钥(private_key)与开放平台上传的应用公钥是否匹配。 
4>.检查签名类型(sign_type)值是否正确。如果未传入sign_type参数,默认为RSA类型。
 

验签问题 
Q:SDK抛出异常:“java.lang.NullPointerException: alipayPublicKey should not be NULL!”。 
A:代码中支付宝公钥(alipay_public_key)参数未赋值导致。请把支付宝公钥赋值给该参数。教程 

Q:SDK抛出异常:“java.security.InvalidKeyException” 
A:代码中支付宝公钥(alipay_public_key)参数内容错误导致。请核对。 

Q:SDK抛出异常:“com.alipay.api.AlipayApiException: sign check fail: check Sign and Data Fail!” 
A:支付宝返回内容验签失败。1>.检查网关地址(gateway)是生产环境还是沙箱环境,必须使用与之匹配的应用id(app_id)与支付宝公钥(alipay_public_key) 
2>.检查编码类型(charset)是否正确。 
3>.检查代码中支付宝公钥(alipay_public_key)参数与开放平台上获取的支付宝公钥是否一致。 

Q:SDK抛出异常:“Caused by: java.security.SignatureException: Signature length not correct: got 256 but was expecting 128” 
A:支付宝公钥(alipay_public_key)与签名类型(sign_type)不匹配。Sign_type设置为RSA2,alipay_public_key需使用对应的支付宝公钥,不能使用开放平台RSA类型下的支付宝公钥。 

Q:SDK抛出异常:“Caused by: java.security.SignatureException: Signature length not correct: got 128 but was expecting 256” 
A:支付宝公钥(alipay_public_key)与签名类型(sign_type)不匹配。Sign_type设置了RSA,alipay_public_key需使用对应的支付宝公钥,不能使用开放平台RSA2类型下的支付宝公钥。 

Q:AlipaySignature.rsaCheckV1()方法返回false
 
A:验签失败,方法同上。 

TIPS:开放平台SDK提供了AlipaySignature.rsaCheckV1()与AlipaySignature.rsaCheckV2()两个版本。V1验签时会剔除sign_type参数,V2会保留sign_type参数。V2仅适用于生活号接口

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

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

相关文章

微信小程序 WXBizDataCrypt 解密 报错

在使用微信官方WXBizDataCrypt.js解密encryptedData获取敏感数据的时候,偶尔会报错。 DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(),Buffer.allocUnsafe(), or Buffer.from() methods inste…

表单提交中的input、button、submit的区别

参考博文:http://www.cnblogs.com/shytong/p/5087147.html 设置typesubmit后,输入控件会变成一个按钮,显示的文字为其value值,默认值是Submit。form[method]默认值为GET,所以提交后会使用GET方式进行页面跳转。input[t…

java.lang.ClassNotFoundException

5.0以下报错:java.lang.ClassNotFoundExceptionxxxx.。5.0以上不会报错 解决方法: 在Application的onCreate()里加 MultiDex.install(this);

小程序 authorize scope.userLocation 需要在app.json中声明permission字段

使用wx.authorize遇到的一个小问题,解决办法就是在app.json中增加permission字段。 官方地址:https://developers.weixin.qq.com/miniprogram/dev/reference/configuration/app.html

Android 图片选择器、图片剪切,文件选择器

单张图片选择 1、在build.gradle中dependencies下添加依赖 compile com.github.lovetuzitong:MultiImageSelector:1.2 2、完整activity代码 public class MainActivity extends AppCompatActivity {private static final int REQUEST_IMAGE3 5;public final static int MS…

【洛谷P3389】【模板】高斯消元

题目链接 题目描述 给定一个线性方程组,对其求解 输入输出格式 输入格式: 第一行,一个正整数 n 第二至 n1行,每行 n1 个整数,为a1, a2 .....an​ 和 b,代表一组方程。 输出格式: 共n行&#xff…

微信小程序上传的视频显示封面 我是阿里云oss的实现

我们一般用wx.chooseVideo拍摄视频或从手机相册中选视频,然后上传到后台存储空间。 但是给用户显示视频列表的时候,需要视频封面额。 阿里oss地址:https://help.aliyun.com/document_detail/64555.html?spm5176.11065259.1996646101.searc…

Android 仿微信多张图片选择器,适配android10系统,open failed: EACCES (Permission denied)

实现效果 只需引入模块,比起依赖,更方便自定义 implementation project(:imagepicker) //图片加载 implementation com.github.bumptech.glide:glide:4.11.0 初始化即可使用 private void initImagePicker() {ImagePicker imagePicker ImagePicker.g…

前端学习(2638):读懂代码之登录页login.vue之ref和rules

<template><div class"login-wrap"><div class"ms-login"><div class"ms-title">后台管理系统</div><!--1定义参数类型 2定义路由规则 3使用ref去进行指向 --><el-form :model"param" :rules&…

mongodb save和insert区别

mongodb的save和insert函数都可以向collection里插入数据&#xff0c;但两者是有两个区别&#xff1a; 一、使用save函数里&#xff0c;如果原来的对象不存在&#xff0c;那他们都可以向collection里插入数据&#xff0c;如果已经存在&#xff0c;save会调用update更新里面的记…

P1967 货车运输

P1967 货车运输最大生成树lca并查集 1 #include<iostream>2 #include<cstdio>3 #include<queue>4 #include<algorithm>5 #include<cmath>6 #include<ctime>7 #include<set>8 #include<map>9 #include<stack>10 #include…

前端学习(2640):懂代码之登录页login.vue存入用户信息

<template><div class"login-wrap"><div class"ms-login"><div class"ms-title">后台管理系统</div><!--1定义参数类型 2定义路由规则 3使用ref去进行指向 --><el-form :model"param" :rules&…

js 根据时间生成唯一订单号

一般做唯一编号的时候&#xff0c;可以使用guid或者uuid的包直接生成&#xff0c;但是我希望唯一编号能够反应生成的时间信息&#xff0c;所以就准备使用日期随机值来构造&#xff0c;代码如下&#xff1a; const tradeNo function () {const now new Date()const year now…

(转) 并发处理

1、使用事物 2、使用消息队列 可以基于例如MemcacheQ等这样的消息队列。 比如有100张票可供用户抢&#xff0c;那么就可以把这100张票放到缓存中&#xff0c;读写时不要加锁。 当并发量大的时候&#xff0c;可能有500人左右抢票成功&#xff0c;这样对于500后面的请求可以直接转…

js将字符串 YYMMDDHHmmss 转化为 date类型

微信支付的回调参数time_end为日期字符串。 需求&#xff1a;将20190523101156转化为转换为Date日期格式Thu May 23 2019 10:11:56 GMT0800 (中国标准时间) const str2date (dateString)> {const pattern /(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/;return new Dat…

Android 自定义带图标Toast,工具方法,Toast自定义显示时间

带图标Toast工具方法1 public static void show(Context act, String strContent, int iResouce){try {Toast toast new Toast(act);View view LayoutInflater.from(act).inflate(R.layout.layout_dialog_toastok, null);TextView tvContent view.findViewById(R.id.content…

This relative module was not found ./cptable webpack

在使用xlsx库的时候遇到的报错。 This relative module was not found: * ./cptable in ./node_modules/xlsx-style/dist/cpexcel.js记录解决方法&#xff0c;我是使用webpack进行配置的。 在chainWebpack里面增加一行代码&#xff0c;重新编译&#xff0c;即可。 config.ext…

工作155:首页样式调整第二次

<el-card><h1 style"float: left;margin-top: 34px;margin-left: 32px;">我的订单</h1><el-button size"mini" style"float: right;margin-top: 14px;margin-right: 10px;" type"primary" click"ListClick…

关于CaciiEZ端口流量阀值报警的设置

作者:邓聪聪 环境&#xff1a;CactiEZ v10.1 为了更高效的发现问题&#xff0c;在非工作期间&#xff0c;公司的网络可能会出现一些故障&#xff0c;为了及时解决问题&#xff0c;所以做了一个流量监控&#xff0c;并以邮件的方式发送流量异常的端口&#xff0c;以便及时了解状…

微信开发 getUserInfo:fail tunneling socket could not be established, cause=connect ECONNREFUSED

微信开发过程中&#xff0c;突然遇到一个奇怪的问题&#xff1a; 解决办法&#xff1a; 找到开发工具中 “工具 - 设置 - 代理设置”&#xff0c;选择即可不使用任何代理。