支付宝几口之条码支付,公司最近要开一家店铺,收银系统要自己来开发,因为配套的还有app,作为程序要,这下就苦逼了吧!自己用java写可视化界面就算了,还要去调用支付宝的支付接口和微信的支付接口,唉,没办法,下面就关于条码支付做一个记录吧!
第一步:作为程序员,肯定直接去看api,看到第一步,就知道要去注册一个企业账号,当然要填写企业的信息(企业为的法人信息、营业执照,对公账户信息(收钱)什么的..)
第二部:注册成功之后,实名认证也做了(这里需要1到2天),当然继续研究支付宝的开发文档咯,按文档走,创建一个应用,我的应用叫“大头”,因为“测试应用”,支付宝典型不会让你通过的...
创建完了之后在你的应用列表里面就会有了,不过这时候是开发状态,在开发状态,他的接口只能在沙箱环境中使用,所以本人二话不说,直接上线,于是就有了下面的“菜叔叔”这个应用了,因为那个沙箱环境我去配过,没有成功,而且周末还罢工,所以果断放弃,
在这里我说一下,上线之前,需要把你用的条码支付的功能加上去,如下图:
在功能里面是“当面付”,上线的时候需要,如果用于app,需要填写app的资料,比如安卓要填写安卓的应用签名和应用报名,苹果的要填写一个BxxxID,在开发的时候,这个id可以统一的,安卓这边的应用签名与应用包名我在下面补充。
这些都做完了之后,ok,我们接下来要配置秘钥,一般情况,这里配置不好,条码支付都会报签名错误,而且还无头绪,因为你明明是按照文档走的,但是就是跑不通,我最开始的秘钥是下载的的支付宝提供的windows的秘钥生成工具,按照文档走,用的是2048的,java版(PKCS8)的,后来一炮程序的时候就出问题,总是报签名错误:
- Caused by: java.security.InvalidKeyException: IOException : DER input, Integer tag error
- at sun.security.pkcs.PKCS8Key.decode(PKCS8Key.java:344)
- at sun.security.pkcs.PKCS8Key.decode(PKCS8Key.java:350)
- at sun.security.rsa.RSAPrivateCrtKeyImpl.<init>(RSAPrivateCrtKeyImpl.java:74)
- at sun.security.rsa.RSAPrivateCrtKeyImpl.newKey(RSAPrivateCrtKeyImpl.java:58)
- at sun.security.rsa.RSAKeyFactory.generatePrivate(RSAKeyFactory.java:299)
- at sun.security.rsa.RSAKeyFactory.engineGeneratePrivate(RSAKeyFactory.java:196)
- ... 3 more
上网去搜了,才发现,唉,还是用openssl 工具靠谱,于是去网上下载了一个windows 64位的openssl 工具,下面会附上该工具的下载地址,如果是32位的朋友,就麻烦自己找一下咯!
下载好了,按照文档走,支付宝把命令写错了,该死,又不行
这次又上网去搜,在谷歌上找到了正确解法,如下:
下载openSSL工具:AMD64-Win64OpenSSL-0_9_8g.zip
随便解压到哪个目录下,在该目录的地址栏输入cmd:
进入命令提示符,依次输入一下命令:
1.openssl genrsa -out rsa_private_key.pem 1024
2.openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
3.openssl pkcs8 -topk8 -nocrypt -inform PEM -in rsa_private_key.pem -outform PEM outform
注:非java编程,第3步就可以省略哈,如果是java,则需要转换,转换之后生成的数据记得copy保存到你的记事本文件或者其他,我是直接copy到我生成的那个私钥的文件里的..)
将这3步执行完了之后,你回到你的openssl 的解压路径下,会看到2个文件,如下所示:
ok,这时候就开始去配置你的 应用的应用环境了,主要是网关和回调地址,以及秘钥,上面我主要讲的秘钥,我先讲秘钥配置好,至于网关和回调地址下面说,在配置秘钥的时候又2中选择RSA和RSA2
在这里我一开始选择的支付宝推荐的RSA2,用它工具生成的秘钥,不管用,但是用上面的命令生成的秘钥又只是针对RSA的(我试着把1024改成了2048,发现还是不行),于是就没有关RSA2了,果断用的RSA了,所以看起来我好想2个都配置了秘钥,但是我使用的却是RSA:
完成之后就会生成支付宝公钥了,这2个在代码中都会用到,到这里,你的秘钥配置就结束了,下面讲一下网关的配置,这里主要是方便支付宝和我们的程序交互
这里的网关和授权回调地址,我感觉好像没什么影响,下次可以试一下不配置这个有没有关系,可能是还没有研究好支付宝的接口文档,还不太清楚这里的网关和授权回调地址的含义,会继续去研究的。
好了,到这里大家都知道直接去下载demo运行了吧,demo里也说了只要把自己的数据更换上去就可以了(pid,appid,秘钥等等),在这里我要说一下填写秘钥的时候,如果是java编,要用之前转码之后的那串数据,如下:
还有一点给大家提示一下,很多用户不知道pid在哪里查,打开这个网址就可以查询了:https://e.alipay.com,登录后,选择签约管理;
进去之后就就可查询了pid了。