支付宝集成纪录

最近在研究支付宝的继承,所以做一下笔记

继承支付宝第一步

第一步:创建应用并获取APPID

创建应用和申请支付宝支付那些就不说了,因为这些一般是不是我们做的事,我从配置密钥那一步说起:

第二步:配置密钥(这步很关键,决定你的成败)

开发者登录开放平台后,找到并进入应用

1、先下载密钥生成器,有mac版hewindow版本的

生成方式一(推荐):使用支付宝提供的一键生成工具(内附使用说明)

mac版本的工具下载后是这个东西, 下面介绍mac版本的操作步骤

生成

rsa_private_key_pkcs8

rsa_private_key

rsa_public_key

三个文件

支付宝平台的解析

经过以上步骤,开发者可以在当前文件夹中(OpenSSL运行文件夹),看到app_private_key.pem(开发者RSA私钥)、app_private_key_pkcs8.pem(pkcs8格式开发者RSA私钥)和app_public_key.pem(开发者RSA公钥)3个文件。开发者将私钥保留,将公钥提交给支付宝配置到开发平台,用于验证签名

注意:对于使用Java的开发者,将pkcs8在console中输出的私钥去除头尾、换行和空格,作为开发者私钥,对于.NET和PHP的开发者来说,无需进行pkcs8命令行操作。

我解析一下上面的文字:

其实 app_public_key.pem 是要上传给支付宝平台的,app_private_key.pem的内容(java是使用app_private_key_pkcs8.pem)是iOS程序里面下单的时候填写的 privateKey 参数,要去除头尾(-----BEGIN PRIVATE KEY----- xxx -----END PRIVATE KEY----- )

例如

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

MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAMvITQCO+82VXnee

3UiODyFaqrMm9XHenUKAvEmnOYTHRTecPhhRFTyownCKdx+F9YgquEVeKO3f8xTC

sHnyeuB1P6CV2HxHeMAam86t14hhk36djj59JHCjgb0QcxllaO9p/wTOXTdy2Miy

EcB/+Bf7UY7nyIPhi/bUzztAiHd9AgMBAAECgYAAvwsJJXzmk9V0urA0w9BqXtqh

LVNYx2fsBmyqGGKtic1HFttjW2iogDW2E8u74dG0XfOuzVl5BYjuWogq6ihpCFie

nFt7ATlEOEoHzfn2fn2/aNbuMey+72k8NAjP5PswDpPV6RaN+I78oytJIftypNTo

rvz3V1hWJJph8Xy6AQJBAOYPlNdwhIMc/YeQ0gugdgj3Ub8uGC5CxfFvlBV2AGNF

3OZ4rJV7xLFGtzgME7XWvm+tpkeg2zWHOtZ3EsWz14UCQQDiwjmik1Cdq0lyxp7C

dpHcnmob4S3t4L/cjk4GtKPlP9TlxdL4YnOzv7nX+I2SC1k/UTnNVBuKOp0f6sZ8

P9WZAkBeZs5giN8XHfI6ioZmFvXYQAPfOv7ZHLU0mOBe3gjSs3wtZh8LR7oyNB5C

dVIxL2j9UngEtFC+6jqOflXJoj4xAkBu5naxoEKpGgCN9b3ndX3Y3FEg2XxQ/r5W

6/IVLXuKvzEsPxfzCpNzsaz+hz0V1B8N7HfMh/oAHLKDzZrNYZrhAkBoPWGhr8aS

nGC+cJYmkmMLbVXsSft988tS6GM/809xngDx62bY2BOQQtdkibpBm1utdq3fo8fx

eQXxQSSKTDaW

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

那么:privateKey就是

MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAMvITQCO+82VXnee

3UiODyFaqrMm9XHenUKAvEmnOYTHRTecPhhRFTyownCKdx+F9YgquEVeKO3f8xTC

sHnyeuB1P6CV2HxHeMAam86t14hhk36djj59JHCjgb0QcxllaO9p/wTOXTdy2Miy

EcB/+Bf7UY7nyIPhi/bUzztAiHd9AgMBAAECgYAAvwsJJXzmk9V0urA0w9BqXtqh

LVNYx2fsBmyqGGKtic1HFttjW2iogDW2E8u74dG0XfOuzVl5BYjuWogq6ihpCFie

nFt7ATlEOEoHzfn2fn2/aNbuMey+72k8NAjP5PswDpPV6RaN+I78oytJIftypNTo

rvz3V1hWJJph8Xy6AQJBAOYPlNdwhIMc/YeQ0gugdgj3Ub8uGC5CxfFvlBV2AGNF

3OZ4rJV7xLFGtzgME7XWvm+tpkeg2zWHOtZ3EsWz14UCQQDiwjmik1Cdq0lyxp7C

dpHcnmob4S3t4L/cjk4GtKPlP9TlxdL4YnOzv7nX+I2SC1k/UTnNVBuKOp0f6sZ8

P9WZAkBeZs5giN8XHfI6ioZmFvXYQAPfOv7ZHLU0mOBe3gjSs3wtZh8LR7oyNB5C

dVIxL2j9UngEtFC+6jqOflXJoj4xAkBu5naxoEKpGgCN9b3ndX3Y3FEg2XxQ/r5W

6/IVLXuKvzEsPxfzCpNzsaz+hz0V1B8N7HfMh/oAHLKDzZrNYZrhAkBoPWGhr8aS

nGC+cJYmkmMLbVXsSft988tS6GM/809xngDx62bY2BOQQtdkibpBm1utdq3fo8fx

eQXxQSSKTDaW

标准的私钥文件示例(PHP、.NET使用)


1

2

3


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

MIICXQIBAAKBgQC+L0rfjLl3neHleNMOsYTW8r0QXZ5RVb2p/vvY3fJNNugvJ7lo4+fdBz+LN4mDxTz4MTOhi5e2yeAqx+v3nKpNmPzC5LmDjhHZURhwbqFtIpZD51mOfno2c3MDwlrsVi6mTypbNu4uaQzw/TOpwufSLWF7k6p2pLoVmmqJzQiD0QIDAQABAoGAakB1risquv9D4zX7hCv9MTFwGyKSfpJOYhkIjwKAik7wrNeeqFEbisqv35FpjGq3Q1oJpGkem4pxaLVEyZOHONefZ9MGVChT/MNH5b0FJYWl392RZy8KCdq376Vt4gKVlABvaV1DkapL+nLh7LMo/bENudARsxD55IGObMU19lkCQQDwHmzWPMHfc3kdY6AqiLrOss+MVIAhQqZOHhDe0aW2gZtwiWeYK1wB/fRxJ5esk1sScOWgzvCN/oGJLhU3kipHAkEAysNoSdG2oWADxlIt4W9kUiiiqNgimHGMHPwp4JMxupHMTm7D9XtGUIiDijZxunHv3kvktNfWj3Yji0661zHVJwJBAM8TDf077F4NsVc9AXVs8N0sq3xzqwQD/HPFzfq6hdR8tVY5yRMb4X7+SX4EDPORKKsgnYcur5lk8MUi7r072iUCQQC8xQvUne+fcdpRyrR4StJlQvucogwjTKMbYRBDygXkIlTJOIorgudFlrKP/HwJDoY4uQNl8gQJb/1LdrKwIe7FAkBl0TNtfodGrDXBHwBgtN/t3pyi+sz7OpJdUklKE7zMSBuLd1E3O4JMzvWP9wEE7JDb+brjgK4/cxxUHUTkk592

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

PKCS8处理后的私钥文件示例(Java使用)


1

2

3


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

MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAN0yqPkLXlnhM+2H/57aHsYHaHXazr9pFQun907TMvmbR04wHChVsKVgGUF1hC0FN9hfeYT5v2SXg1WJSg2tSgk7F29SpsF0I36oSLCIszxdu7ClO7c22mxEVuCjmYpJdqb6XweAZzv4Is661jXP4PdrCTHRdVTU5zR9xUByiLSVAgMBAAECgYEAhznORRonHylm9oKaygEsqQGkYdBXbnsOS6busLi6xA+iovEUdbAVIrTCG9t854z2HAgaISoRUKyztJoOtJfI1wJaQU+XL+U3JIh4jmNx/k5UzJijfvfpT7Cv3ueMtqyAGBJrkLvXjiS7O5ylaCGuB0Qz711bWGkRrVoosPM3N6ECQQD8hVQUgnHEVHZYtvFqfcoq2g/onPbSqyjdrRu35a7PvgDAZx69Mr/XggGNTgT3jJn7+2XmiGkHM1fd1Ob/3uAdAkEA4D7aE3ZgXG/PQqlm3VbE/+4MvNl8xhjqOkByBOY2ZFfWKhlRziLEPSSAh16xEJ79WgY9iti+guLRAMravGrs2QJBAOmKWYeaWKNNxiIoF7/4VDgrcpkcSf3uRB44UjFSn8kLnWBUPo6WV+x1FQBdjqRviZ4NFGIP+KqrJnFHzNgJhVUCQFzCAukMDV4PLfeQJSmna8PFz2UKva8fvTutTryyEYu+PauaX5laDjyQbc4RIEMU0Q29CRX3BA8WDYg7YPGRdTkCQQCG+pjU2FB17ZLuKRlKEdtXNV6zQFTmFc1TKhlsDTtCkWs/xwkoCfZKstuV3Uc5J4BNJDkQOGm38pDRPcUDUh2/

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

公钥文件示例


1

2

3


-----BEGIN PUBLIC KEY-----

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQWiDVZ7XYxa4CQsZoB3n7bfxLDkeGKjyQPt2FUtm4TWX9OYrd523iw6UUqnQ+Evfw88JgRnhyXadp+vnPKP7unormYQAfsM/CxzrfMoVdtwSiGtIJB4pfyRXjA+KL8nIa2hdQy5nLfgPVGZN4WidfUY/QpkddCVXnZ4bAUaQjXQIDAQAB

-----END PUBLIC KEY-----

2、点击“RSA(SHA1)密钥”处的“设置开发者公钥”(如已设置则显示“查看开发者公钥”,可修改),将公钥文件去除头尾、换行和空格,仅需填入字符串。

如下图:

到这里,密钥配置完成了

3、iOSdemo里面的集成

4、测试下单

主要是参数要选对

NSString *pid = @"合作伙伴身份(PID)";

NSString *appID = @"APPID(支付宝平台上面有)";

NSString *privateKey = @"MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAMvITQCO+82VXnee3UiODyFaqrMm9XHenUKAvEmnOYTHRTecPhhRFTyownCKdx+F9YgquEVeKO3f8xTCsHnyeuB1P6CV2HxHeMAam86t14hhk36djj59JHCjgb0QcxllaO9p/wTOXTdy2MiyEcB/+Bf7UY7nyIPhi/bUzztAiHd9AgMBAAECgYAAvwsJJXzmk9V0urA0w9BqXtqhLVNYx2fsBmyqGGKtic1HFttjW2iogDW2E8u74dG0XfOuzVl5BYjuWogq6ihpCFienFt7ATlEOEoHzfn2fn2/aNbuMey+72k8NAjP5PswDpPV6RaN+I78oytJIftypNTorvz3V1hWJJph8Xy6AQJBAOYPlNdwhIMc/YeQ0gugdgj3Ub8uGC5CxfFvlBV2AGNF3OZ4rJV7xLFGtzgME7XWvm+tpkeg2zWHOtZ3EsWz14UCQQDiwjmik1Cdq0lyxp7CdpHcnmob4S3t4L/cjk4GtKPlP9TlxdL4YnOzv7nX+I2SC1k/UTnNVBuKOp0f6sZ8P9WZAkBeZs5giN8XHfI6ioZmFvXYQAPfOv7ZHLU0mOBe3gjSs3wtZh8LR7oyNB5CdVIxL2j9UngEtFC+6jqOflXJoj4xAkBu5naxoEKpGgCN9b3ndX3Y3FEg2XxQ/r5W6/IVLXuKvzEsPxfzCpNzsaz+hz0V1B8N7HfMh/oAHLKDzZrNYZrhAkBoPWGhr8aSnGC+cJYmkmMLbVXsSft988tS6GM/809xngDx62bY2BOQQtdkibpBm1utdq3fo8fxeQXxQSSKTDaW";

privateKey  就是rsa_private_key_pkcs8.pem  中间的内容(去除头尾)

例如:

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

MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAN0yqPkLXlnhM+2H/57aHsYHaHXazr9pFQun907TMvmbR04wHChVsKVgGUF1hC0FN9hfeYT5v2SXg1WJSg2tSgk7F29SpsF0I36oSLCIszxdu7ClO7c22mxEVuCjmYpJdqb6XweAZzv4Is661jXP4PdrCTHRdVTU5zR9xUByiLSVAgMBAAECgYEAhznORRonHylm9oKaygEsqQGkYdBXbnsOS6busLi6xA+iovEUdbAVIrTCG9t854z2HAgaISoRUKyztJoOtJfI1wJaQU+XL+U3JIh4jmNx/k5UzJijfvfpT7Cv3ueMtqyAGBJrkLvXjiS7O5ylaCGuB0Qz711bWGkRrVoosPM3N6ECQQD8hVQUgnHEVHZYtvFqfcoq2g/onPbSqyjdrRu35a7PvgDAZx69Mr/XggGNTgT3jJn7+2XmiGkHM1fd1Ob/3uAdAkEA4D7aE3ZgXG/PQqlm3VbE/+4MvNl8xhjqOkByBOY2ZFfWKhlRziLEPSSAh16xEJ79WgY9iti+guLRAMravGrs2QJBAOmKWYeaWKNNxiIoF7/4VDgrcpkcSf3uRB44UjFSn8kLnWBUPo6WV+x1FQBdjqRviZ4NFGIP+KqrJnFHzNgJhVUCQFzCAukMDV4PLfeQJSmna8PFz2UKva8fvTutTryyEYu+PauaX5laDjyQbc4RIEMU0Q29CRX3BA8WDYg7YPGRdTkCQQCG+pjU2FB17ZLuKRlKEdtXNV6zQFTmFc1TKhlsDTtCkWs/xwkoCfZKstuV3Uc5J4BNJDkQOGm38pDRPcUDUh2/

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

去除-----BEGIN PRIVATE KEY-----   和  -----END PRIVATE KEY-----

那PRIVATE KEY 就是

MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAN0yqPkLXlnhM+2H/57aHsYHaHXazr9pFQun907TMvmbR04wHChVsKVgGUF1hC0FN9hfeYT5v2SXg1WJSg2tSgk7F29SpsF0I36oSLCIszxdu7ClO7c22mxEVuCjmYpJdqb6XweAZzv4Is661jXP4PdrCTHRdVTU5zR9xUByiLSVAgMBAAECgYEAhznORRonHylm9oKaygEsqQGkYdBXbnsOS6busLi6xA+iovEUdbAVIrTCG9t854z2HAgaISoRUKyztJoOtJfI1wJaQU+XL+U3JIh4jmNx/k5UzJijfvfpT7Cv3ueMtqyAGBJrkLvXjiS7O5ylaCGuB0Qz711bWGkRrVoosPM3N6ECQQD8hVQUgnHEVHZYtvFqfcoq2g/onPbSqyjdrRu35a7PvgDAZx69Mr/XggGNTgT3jJn7+2XmiGkHM1fd1Ob/3uAdAkEA4D7aE3ZgXG/PQqlm3VbE/+4MvNl8xhjqOkByBOY2ZFfWKhlRziLEPSSAh16xEJ79WgY9iti+guLRAMravGrs2QJBAOmKWYeaWKNNxiIoF7/4VDgrcpkcSf3uRB44UjFSn8kLnWBUPo6WV+x1FQBdjqRviZ4NFGIP+KqrJnFHzNgJhVUCQFzCAukMDV4PLfeQJSmna8PFz2UKva8fvTutTryyEYu+PauaX5laDjyQbc4RIEMU0Q29CRX3BA8WDYg7YPGRdTkCQQCG+pjU2FB17ZLuKRlKEdtXNV6zQFTmFc1TKhlsDTtCkWs/xwkoCfZKstuV3Uc5J4BNJDkQOGm38pDRPcUDUh2/


时间: 2024-10-29 19:10:00

支付宝集成纪录的相关文章

支付方式(2)——支付宝集成及使用

每一个支付平台都有自己的加密.解密的原理:还有各种签名的原理:通过各种内容发送数据,防止恶意攻击等功能的原理. 接下来对于部署支付方式,首先要分清几个名词: 集成接入:支付宝已经集成好各种原理和函数,集成一个个的具体的功能. 比如:支付宝的即时到账.当面付.分享给好友支付.移动登陆等.具体详见:支付宝集成接入 下载DEMO后可以通过样例测试各种功能,在理解支付原理的情况下,对DEMO稍加修改就可以整合到自己的项目中了. 支付宝平台的SDK的介绍: SDK已经对加签验签逻辑做了封装,使用SDK可直

iOS开发之支付宝集成

项目中要用到支付功能,需要支付宝,微信,银联三大支付,所以打算总结一下,写两篇文章,方便以后的查阅, 大家在做的时候也能稍微参考下,用到的地方避免再次被坑.这是第二篇支付宝集成,第一篇银联支付在这里.本来要用那个ping++的神器,可以集成各种支付手段,异常的方便,但是考虑到安全性问题的话,支付的渠道还是不让第三方参与的好,不然会不安全,于是就苦逼地慢慢的一个一个集成了....这里就代理支付宝的集成过程: 刚开始以为支付宝集成还是比较简单的,看了几个文章,网上的各位大神也是各种秀操作,说集成很简

iOS支付宝集成详细流程

实现支付宝支付的准备工作: 1.向支付宝签约,成为支付宝的商户 签约完成后,支付宝会提供一些必要的数据给我们 商户ID:partner 账号ID:seller 即支付宝账号 签约需要营业执照 2.获取支付相关的  私钥和密钥,这两个东西为了数据安全 上面这几个东西只要签约成功就可以看到 3.下载支付宝的SDK 下载网址: http://doc.open.alipay.com/doc2/detail?treeId=59&articleId=103563&docType=1 上面部分是准备工作

android 支付宝集成 使用常见错误

1:自己最近在做了支付,遇到了一下问题先总结如下 第一条: Android快捷支付SDK Demo resultStatus={4001};memo={参数错误};result={}问题 分析:填写的支付宝pkcs8编码的私钥 有问题,或者对应的公钥没有上传至支付宝造成的. 后台处理的必须有这个步骤.上传公钥到支付宝 第二条: java.lang.NoClassDefFoundError: com.alipay.android.app.lib.ResourceMap 分析:没有加入android

支付宝集成功能

android 应用中加入支付功能(支付宝集成) 2014-03-27 10:15:46|  分类: Android深入学习 |举报 |字号 订阅 注意事项1.添加android.permission.INTERNET权限和android.permission.ACCESS_NETWORK_STATE权限2.代码中出现注释的地方重点看,没注释的地方可以不看3.想获取支付宝合作商户ID,及支付宝公钥请点击支付宝链接,生成密钥及PKCS8转码工具在文档中 1.下载官方架包和说明文档 到支付宝官网ht

支付宝集成——如何在回调地址中使用自定义参数

支付宝集成——如何在回调地址中使用自定义参数 来源 http://www.solagirl.net/use-custom-para-in-alipay-return-url.html 2012 年 8 月 15 日 By Sola 支付宝集成时,有同步返回地址return_url和异步通知地址notify_url,这两个地址中的参数与签名验证有非常大的关系,在支付宝的说明中,强调return_url不可以有自定义参数,否则会导致sign和mysign不相等,但有时我们需要一些自定义参数来做判断,

支付宝集成的小坑--集成支付宝集成总结(1)

现在很多公司的APP都会有支付环节,特别是现在的O2O项目,我参与过的近两个项目都有集成支付宝对两次集成做一下总结: 第一次集成支付宝,由于我们的做后台的大牛写了十几年代码,而且以前是银行项目的总监,整个支付流程基本上一切听大牛的,我按照做就行.基本上按照支付宝的流程走,支付环节没怎么出问题,总体来说支付流程比较perfect. 第一次集成的小坑: 1)无非就是支付宝里面使用了一些框架如SBJson 等常用的开源框架,而我们项目中也会用到SBJson类似的框架,估计会出现冲突 冲突的解决办法:A

IOS开发支付宝集成思路

一般情况下支付功能的交互流程 比如我们去某个APP去支付一个产品,流程为:1.用户点击支付->2.客户端请求服务器用户支付->3.服务器接收请求生成金额订单等要给第三方支付的一切信息,并生成回调参数传给客户端->4.客户端接收信息(一般会再让用户确认支付或者干脆购买后是生成订单,然后才是付款)并将服务器给的信息分别传入SDK需要的参数中,调用SDK的支付方法->5.由SDK向SDK自己的服务器发出支付请求,SDK自己的服务器接收支付请求处理成功后,给客户端本身与公司的后台都发送一条

支付宝集成时的InvalidKeySpecException

近来在集成第三方支付---支付宝,在集成的过程中严格按照支付宝开发者平台所发布的说明文档和Demo,在我的测试机上可以完美的运行,但是在别人的手机无论怎么就是调用不起来,问题弹出"remote call failed". 翻来复去,代码检查了好几遍,总是找不到错误在哪. 然后,仔细地查看了一下LogCat,发现一条Warning,显示是InvalidKeySpecException异常,显示如下: 09-23 20:03:34.735: W/System.err(24906): jav