最近在做支付宝的支付功能,遇到了一些问题记录一下,方便查阅和遇到同样问题的人;

这个错误遇到的应该都比较多吧;

这个问题发生的原因是:

1.私钥是用文件路径方式请求的(建议使用密文方式) 并且 keyFromFile = false ;

2.私钥的获取方式不正确 (正确的是:开发者工具生成后 -> 打开文件位置 ->私钥);

3.获取CSR 文件时没注意看的话,就默认选择了PKCS8 导致错误;

//如果使用 文件方式报错的话,请参考下方案

1.将 开发者工具中 ->打开文件中 获得的私钥文件,增加头部和尾部字符串如下方格式:

-----BEGIN RSA PRIVATE KEY-----

MIIEogIBAAKCAQEAhIHUPlqp26ye5kYiWYmOAcVLOliusADxzjNx/bXQFnOBNnkX+aTxOrHkiccd13EAHo10wnHiCYrxKpLS0jSL9puDdOYID1F9ZzZs9O3NN3BQpSx2zKJV4t1QjSVleUkSvXEZ9zIZvksPDOM8fMFiuJKeBsLj2eRrsRqx8GA5jUYkKzdXgyheDAM8tMdEaWJAdE4NN/HIdPg/QIwwju5Q44t9stHLB1FWoffNgyLsbFTe3LLAB25gJfVb592JUtP/hpp2ouOpa9p3hrlN8u2kFsQQb4MFLjS3pen5q6TP/FOZkIltdSnroGDnRlv81CyXG89Qoe24VhMJ/lMNKhPDjwIDAQABAoIBABVRjgQ6MfnV2/rQbdZZ+y7tvxy0B+bpP/4c6MoY5lG2Y6OP9/uCPg1jcZF5JQ4KV+HO3Z/oMMjpsZZ1r0BwWMEdD6jTbixILw8VKCHzG7cKIEvX+QM+uu45xuwKNRc3tC/8WeqnTkBpzV3myMEPxocLWfu5I0+eDYsg7Aheqad1hBuoe11fj00ZaZmmMX860sCJzPnfOTUuZs7ypF7g8dW7JJr0DcEF34ePA1SGa9GWTjzi/DdAlE+DvyPh1OiWZHfY1JVYESC/M4t+oRezRRTC7+OOvjod6JHJZw9HVw4UKhYOFTpX5awHFQoYECgYEAxZdx1luCTmG1Hfr6njA7EQl4VVihEOgrEOw6jhKc1Y/WtXk56MDkGnWdpyqpkEh3PR9eNtaF2DSBPgE1+pA1YmuGRgZCW+gvRVUavhIgkYvxxOwyP+yxAKaOwBY03qR/XsZB7v9x8X5P0cDeZWqYWR7DzK2vvWRtqcu2BkXZi8UCgYEAq60ude+y2gJ5Vb8s6zCLS+TN5s+Oamd/7qZpdrM1fPYHXH6/XftAsD9bKHCQJM2AlfaL0wIpXh8EmM0whNZ5gBE7z3Ja6l5WB4q/i5UvHEPQMJd+hEQRDJieHRkDra6eGsuHlDT6/WI/XblHUw2SbHMCawHGPz+eN7+e/5srY0MCgYBIadIsbuj4dNJ9pEdIxgA/pCrXjF2q5osx7oEfJC8aDVbwtvbEGD0AfW5Dn1z5JbWdTuumSURQEh3zbVos88C8yw8whoa3TAZW8HOWiOoqrRDzzGQ2DTZpOKFEQF8r4TlUsG/lePR3PoVeJ8LZhBFFSAMV9elcDXwrKB8TeXHayQKBgDTHRSVUz7NeV1cZMwILJofqi7KN1Ma5kwcXegzYA3WrXY/+F28ZM0X79FZ2ZJor44A3D72LSJR7DLq9OlFcbnYE1lJsYa7z2Zbv/Ps4ngcegf6uVGLtWiB5OwLPEeZvbIPoVoIl15PWhIyXzWmnHoDgyrmDDiObt1SEQKlsVuZpAoGAWnAamD63DfRc4zqmqGPTVttA84fOf+q2o7NGfhhyo0nFiZZbes5OJpB2ay81gvNYH0x84sanu2U+bGDXHRCAxKzaqByxCZV3/uKHS3l0S4c3lXwaScqbfLKUxDpqQSdI4VuxHLr4XrWW0WPi2YlbWTy3T4Y14GAgd9qPuLGMn5I=

-----END RSA PRIVATE KEY-----

2.

//官方skd源码返回秘钥base64密文

SDK源码地址:https://openhome.alipay.com/doc/sdkDownload.resource?sdkType=NET

private static byte[] GetPem(string type, byte[] data)

{string pem =Encoding.UTF8.GetString(data);string header = String.Format("-----BEGIN {0}-----\\n", type); //官方这里是 \\n 请注意如果自己的秘钥文件中有换行则改为 \r\n

string footer = String.Format("-----END {0}-----", type);int start = pem.IndexOf(header, StringComparison.Ordinal) +header.Length;int end = pem.IndexOf(footer, start, StringComparison.Ordinal); //如 秘钥文件中 没有出现 头部和底部的(-----BEGIN RSA PRIVATE KEY----- 和 -----END RSA PRIVATE KEY-----) ,则end = -1 导致下面的 (end - start )报错

string base64 = pem.Substring(start, (end - start)); //这里会出错

returnConvert.FromBase64String(base64);

}

另外如果秘钥错误可能和生成时有关系,请看如下步骤

下载支付宝开发者签名工具,具体使用方式可以参考支付宝流程;

网址:https://docs.open.alipay.com/291/106097/

注意事项:  生成CSR文件的时候,注意勾选  PKCS1 方式,(默认勾选的是 pkcs8) 这也是我没仔细看,遇到第一个坑,导致程序一直报 私钥格式不正确

然后上传到支付宝的应用环境中;

证书文件都拷贝到自己的程序目录中 ,在下方代码 设置证书相关参数时 使用;

static void Main(string[] args)

{var path = AppContext.BaseDirectory + "key/";string APP_PRIVATE_KEY = "私钥字符串或路径";注意:这里的私钥,是从开发者工具->打开文件夹->获取的私钥

//设置证书相关参数

CertParams certParams = newCertParams

{

AlipayPublicCertPath= path + "appCertPublicKey_2016101900724029.crt", //支付宝公钥证书储存本地路径

AppCertPath = path + "alipayCertPublicKey_RSA2.crt", //商户证书储存本地路径

RootCertPath = path + "alipayRootCert.crt", //支付宝根证书储存本地路径

};

IAopClient client= newDefaultAopClient("https://openapi.alipaydev.com/gateway.do",//支付宝网关,我这里是沙箱环境,正式环境请去除 dev

"2016101900724029",//APPID

APP_PRIVATE_KEY, //秘钥 ,我这里是给的密文,如果给路径下面的 keyFromFile 传入 true

"json",//请求格式

"1.0",//版本

"RSA2",//校验加密方式 如果提是RSA则这里填写RSA

"utf-8", //请求报文的内容字符集格式

false,//这里需要注意,如果设置为true 则 APP_PRIVATE_KEY 应为 私钥的物理路径 false 则应为 密文字符串

certParams);//实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称如:alipay.open.public.template.message.industry.modify

AlipayTradeAppPayRequest request = newAlipayTradeAppPayRequest();

AlipayTradeAppPayModel model= new AlipayTradeAppPayModel();//创建订单的实体类

model.Body = "我是测试数据";//支付内容

model.Subject = "App支付测试DoNet"; //支付标题

model.TotalAmount = "0.01";//价格

model.ProductCode = "QUICK_MSECURITY_PAY";//这里是请求的方式,参看支付宝文档

model.OutTradeNo = "202002023test";//平台订单号

model.TimeoutExpress = "30m";//支付超时时间

request.SetBizModel(model);

AlipayTradeAppPayResponse response=client.SdkExecute(request);//调用成功,则处理业务逻辑

if(response.IsError)

{//Console.WriteLine(response.Msg);

}

Console.WriteLine(HttpUtility.HtmlEncode(response.Body));//这里返回的内容,就是支付宝APP拉起支付需要用到的字符串

Console.ReadKey();

正常则返回一串APP支付需要用到的内容;

OVER ;

alipay 证书 java_支付宝 APP支付(证书)方式遇到的问题和解决办法相关推荐

  1. java SpringBoot 对接支付宝 APP支付 证书模式及非证书模式

    一. 添加maven依赖 sdk <dependency><groupId>com.alipay.sdk</groupId><artifactId>al ...

  2. 支付宝 APP支付(证书)方式遇到的问题和解决办法

    支付宝 APP支付(证书)方式遇到的问题和解决办法 参考文章: (1)支付宝 APP支付(证书)方式遇到的问题和解决办法 (2)https://www.cnblogs.com/fubing/p/121 ...

  3. aliPay支付宝APP支付操作流程

    [TOC] aliPay支付宝APP支付操作流程 1 注册帐号&官方文档解析 在支付宝商家中心注册帐号,已经拥有支付宝帐号的用户,直接登录商家中心即可(同一个支付宝帐号,可以既是买家也是商家) ...

  4. php跳转支付宝支付宝支付宝支付,PHP服务端支付宝APP支付

    1.配置参数 'alipay'=>array( //手机支付配置 //↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ //合作身份者id,以2088开头的16位纯数字 ...

  5. 支付宝app支付java后台流程、原理分析(含nei wang chuan tou)

    java版支付宝app支付流程及原理分析 本实例是基于springmvc框架编写      一.流程步骤          1.执行流程            当手机端app(就是你公司开发的app) ...

  6. java后端实现集成支付宝APP支付(沙箱环境)

    沙箱环境集成支付宝APP支付后端实现 前言 获取支付宝相关信息 整体开发流程 1.获取核心参数 2.将支付宝SDK集成到项目中 3.后台使用支付宝SDK与支付宝进行交互逻辑 1.将支付宝公共信息参数写 ...

  7. fastadmin 微信支付宝整合插件 支付宝APP支付 ALIN10146

    1.调试微信支付宝整合插件支付宝APP支付,支付宝支付一直报错 ALIN10146调了6个小时 我使用的是 微信支付宝整合插件,以下为我调用支付的代码 $params = ['amount'=> ...

  8. 支付宝app支付功能-服务端的实现-python3版

    支付宝app支付功能-服务端的实现-python3版 一:需求说明 二:支付宝app支付处理流程 三:所需依赖 3.1 依赖库 3.2 支付配置 3.2.1 沙箱环境配置 3.2.2 正式环境配置 四 ...

  9. 支付宝APP支付Java服务端

    支付宝APP支付Java服务端: 公司项目要求对接支付宝进行支付功能,这边做出整理方便以后使用(支付宝的支付对接还是很简单的). 1):去支付宝开放平台,-1.注册账号,2.创建应用 3.配置应用 4 ...

最新文章

  1. 连分数中一个有意思的小玩意儿
  2. Element UI——布局容器el-container子元素强制上下排列
  3. 【PAT甲级 BigInteger运算】1024 Palindromic Number (25 分) Java 全部AC
  4. python中df占位符_PYTHON 中的%s %占位符用法
  5. 高程加密lisp程序_lisp修改,怎么把这个加密程序那句去掉,小白求大神帮帮我...
  6. 银行内鬼程序员曝光:服务器植病毒,ATM取款717万,账户余额还不变
  7. RabbitMQ入门教程
  8. dev gridcontrol 单元格内容复制_Excel中的复制粘贴,不只是你想的那么简单的
  9. 【Redis笔记】数据结构和对象:字典
  10. AD+邮件服务器搭建方案
  11. 指向类成员的指针并非指针
  12. python程序设计课程设计二级减速器_2020中国大学mooc《高级语言程序设计(Python)CAP》答案在线查题2020知到《数据库...
  13. 百度地图标记点加点击事件和鼠标移入事件并添加数据
  14. mac 麦克风等权限添加应用操作手册
  15. MATLAB 汉化补丁下载
  16. 棋圣高调搬弄名人日本棋圣挟五冠搬弄对手
  17. 【STM32 .Net MF开发板学习-02】GPIO测试
  18. 紫光展锐面试——软件岗
  19. 读书笔记:《枪炮、病菌与钢铁》与《1984》
  20. matlab求级数求和,实验七_matlab求解级数有关计算

热门文章

  1. 如何用机器学习预测超售,避免美联航“暴力赶客”悲剧
  2. 以太坊基本数据结构分析
  3. 给定三角形ABC和一点P(x, y),判断P是否在三角形内
  4. python 随机森林调参_python的随机森林模型调参
  5. 拜占庭容错(BFT)介绍
  6. 我年轻的时候通过跳槽涨工资
  7. Snort+scapy(一)
  8. GRE作文——看门见山直述观点
  9. c语言综合设计作业学籍管理系统,C语言课程设计----学生学籍管理系统
  10. 谷歌浏览器怎么设置地址栏中使用百度搜索引擎