如今, 网上大多数的支付方式无非就是支付宝, 微信, 因此, 学会用支付宝和微信提供的支付接口已成为必然.java
先进入官网 这里linux
登陆以后, 进入进入个人开放平台
使用沙箱工具进行调试
若是没有项目请建立
web
在这里, 咱们须要用到的参数就几个api
genrsa -out app_private_key.pem 1024 #生成私钥 pkcs8 -topk8 -inform PEM -in app_private_key.pem -outform PEM -nocrypt -out app_private_key_pkcs8.pem #Java开发者须要将私钥转换成PKCS8格式 rsa -in app_private_key.pem -pubout -out app_public_key.pem #生成公钥 exit #退出OpenSSL程序
这里1024表明生成的是RSA秘钥, 若是你是2048的话, 那么生成的将是RSA2秘钥.tomcat
命令执行完成以后, 你将会在目录下看到如下3个文件:
app_private_key.pem
, app_private_key_pkcs8.pem
, app_public_key.pem
bash
若是你开发的是JAVA应用程序, 那么你只须要app_public_key.pem
和app_private_key_pkcs8.pem
若是你是PHP, .NET .., 或者其它开发者的话, 你只须要app_public_key.pem
和app_public_key.pem
服务器
秘钥咱们已经生成好了, 紧接着, 来将刚生成的秘钥上传到沙箱工具中, 将app_public_key.pem
去掉头部和尾部, 并将中间的换行符去掉以后, 直接提交上传
服务器就会帮咱们自动生成支付宝的公钥
左边使咱们的应用公钥, 右边使咱们的支付宝公钥, 注意个人是RSA加密方式, 若是你是RSA2加密方式, 请在RSA的上面上传.微信
在下面下载支付宝沙箱环境app
app
下载官方demo示例: 这里
选择Java版本dom
下载完成以后, 解压, 打开eclipse, 将解压后的项目工程引入
TradePayDemo
和TradePaySDK
, 这里咱们只看TradePayDemo
在src目录下打开zfbinfo.properties
配置文件, 咱们须要对里面的配置作修改:
这里面, 咱们须要修改的有7个参数
app_private_key_pkcs8.pem
将其去头去尾, 而后删除中间的换行符进入Main.java, 运行main方法
出现Success表明成功, 注意, 由于沙箱环境会在星期天到星期一进行维护, 因此有可能访问失败, 最好换个时间点测试.
这里的TradePayDemo
是个web项目, 你默认导入的是一个java工程, 因此你须要将它转换成Dynamic Web project工程, 在项目上右键 -> properties -> 输入project facets
按照上面的方法将它转换成web工程
可是, 又会发现一个新问题, TradePayDemo
项目在部署到tomcat的时候, 会报404错误, 缘由是发布到tomcat上的项目没有jsp页面
WebContent文件夹是咱们把java工程强行转换成web工程时出现的, 而WebRoot文件夹才是咱们jsp页面存放的文件夹, tomcat默认导入的是WebContent这个文件夹, 因此咱们须要指定一下, 该导入的是WebRoot文件夹而不是WebContent.
在项目上 右键 -> properties -> 输入dep
这里是部署到tomcat时, 要部署全部的文件夹, 咱们将原来的WebContent修改成WebRoot, 从新部署一下, 问题解决.
访问 http://localhost:8080/TradePayDemo/
点击第二个, 当面付2.0, 二维码支付
随意输入, 点击确认按钮后, 跳转到二维码支付页面, 打开手机上下载好的支付宝沙盒app
成功支付0.01元~, 已经被支付过的二维码不可重复支付, 这个二维码就已经失效了
这个test_trade_precreate
方法就是咱们二维码当面付的执行方法
在这一行, 有一个被注释的方法, 这个方法能够将二维码保存到本地
ZxingUtils.getQRCodeImge(response.getQrCode(), 256, filePath); // 咱们只须要修改第3个参数, 也就是二维码在本地的保存路径
在实际开发中, 咱们只须要将这个项目下的全部java文件和jar包复制到你的项目中去, 经过Main对象调用这个test_trade_precreate
方法就能够了.
test_trade_precreate()
方法默认是不接受参数的, 因此你须要手动加一个String类型的参数, 表明的是图片的路径, 而后修改test_trade_precreate()
方法以后, main函数会报错, 由于在main函数中调用了test_trade_precreate()
方法, 咱们只须要将那一行代码注释便可以上测试皆是在沙盒测试环境中进行测试, 若是须要实现真正的商户收付款功能, 请参见官网上的教程