支付宝支付功能演示项目的搭建以及注意事项

来源:互联网 发布:淘宝袜子店铺名字大全 编辑:程序博客网 时间:2024/05/16 04:46
支付宝:
文档中心:https://doc.open.alipay.com/doc2/alipayDocIndex.htm
SDK下载及例子:https://doc.open.alipay.com/doc2/detail?treeId=54&articleId=103419&docType=1
1.需要生成公钥和私钥
下载:Openssl https://www.openssl.org/source/?spm=a219a.7629140.0.0.LBc5pb
Windows用户在cmd窗口中进行以下操作:
C:\Users\Hammer>cd C:\OpenSSL-Win32\bin 进入OpenSSL安装目录
C:\OpenSSL-Win32\bin>openssl.exe 进入OpenSSL程序
OpenSSL> genrsa -out rsa_private_key.pem 1024 生成私钥
OpenSSL> pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt  -out private_key.pem Java开发者需要将私钥转换成PKCS8格式
OpenSSL> rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem 生成公钥
OpenSSL> exit ## 退出OpenSSL程序

来源: https://doc.open.alipay.com/doc2/detail?treeId=44&articleId=103242&docType=1
2.将rsa_public_key.pem中的key复制到阿里巴巴后台上传.成功后点击"查看支付宝公钥"查看支付宝公钥,并将其填入DEMO中的alipay_public_key属性中.
3.然后将演示
(下载链接:http://aopsdkdownload.cn-hangzhou.alipay-pub.aliyun-inc.com/demo/alipaydirect.zip?spm=a219a.7629140.0.0.tviHkc&file=alipaydirect.zip)
中的AlipayConfig类中的各个参数填入:
注意:将private_key.pem后中的除private key及分隔符部分以外的复制到程序中,不是所有的文本.
// 合作身份者ID,签约账号,以2088开头由16位纯数字组成的字符串,查看地址:https://b.alipay.com/order/pidAndKey.htmpublic static String partner = "";// 收款支付宝账号,以2088开头由16位纯数字组成的字符串,一般情况下收款账号就是签约账号public static String seller_id = partner;//商户的私钥,需要PKCS8格式,RSA公私钥生成:https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.nBDxfy&treeId=58&articleId=103242&docType=1public static String private_key = "";// 支付宝的公钥,查看地址:https://b.alipay.com/order/pidAndKey.htmpublic static String alipay_public_key  = "注意:这里的值是上传了本地RSA公钥后在页面中点开后查看到的由支付宝系统生成的字符串,不是本地的RSA公钥";// 服务器异步通知页面路径  需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问public static String notify_url = "http://localhost:8080/notify_url.jsp";// 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问public static String return_url = "http://localhost:8080/return_url.jsp";


过程中产生的错误:
在添加支付宝安全支付功能时候,遇到以下问题:
java.security.InvalidKeyException:IOException: algid parse error, not a sequence

出现这种错误

It means your key is not in PKCS#8 format. The easiest thing to do is to use the openssl pkcs8 -topk8 <...other options...> command to convert the key once. Alternatively you can use the PEMReader class of the Bouncycastle lightweight API.

原来是openssl生成密钥后,没有转换成PKCS8格式,而直接用密钥..所以会是这个错误;


0 0