说明一下
本次使用java语言,在沙箱环境下测试,使用的是内网穿透工具EchoSite
会需要支付宝支付的demo,这是支付宝pc网站支付demo的下载地址:https://docs.open.alipay.com/270/106291/
下面这个链接是包含支付宝demo,RSA签名工具,以及将支付宝提供demo里的jsp里的内容封装成方法,来实现网站扫码支付的源码,百度云上分享的,可以免费下载
链接:https://pan.baidu.com/s/1dxbh0QL7JX0UDqx-min4Ow
提取码:t7dg
不多说,开搞
1.前往蚂蚁金服开放平台
1.1.支付宝扫码登录我就不多说了,得实名认证
1.2.登录进去之后点击菜单栏的开发者中心,然后在开发服务的下面有研发服务,点进去
1.3.这是支付宝提供的沙箱测试用的,实际开发中是要创建应用,审核签约商户的,看一下划线的,有个印象,待会用得到
扫码下载
点击沙箱账号
1.4.使用RSA签名验签工具生成密匙,将生成的应用公匙设置在沙箱应用的RSA2密匙的地方,设置好后可以获取支付宝公匙,记住:生成的公匙和私匙是一对的,将私匙保存好,会用到
*这个是签名验签工具,密匙格式选java适用,长度2048,点击生成密匙
*这个是我生成的
*将生成的公匙设置在这里
2.前往EchoSite注册申请子域名
EchoSite首次是免费的,可以得到一个子域名一个月的使用期,之后续费的话一块钱一个月
还有个免费的是NATAPP,域名是随机的,使用过,不是很稳定,但是不收钱啊
其他的像花生壳啊之类的可以自行研究
2.1下载客户端后,配置一下你注册的账号和密码,还有申请的子域名
2.2在cmd下进入echosite.exe的父级目录,输入:echosite -config=echosite.yml start name2
我的子域名配置在name2上,你的如果配置在name1上,start后面就写name1
状态online说明联机成功,接下来请打开eclipse,导入支付宝支付java版的demo
3.eclipse上配置,部署,测试扫码支付的功能
3.1.成功导入后,打开AlipayConfig这个类
3.2.修改相应的属性,appid也要修改成你的
3.3.修改好后就可以把这个demo部署到tomcat启动服务,来到首页
注意:
1.要想最后支付完成能成功跳转,你必须把EchoSite启动
2.想要成功完成支付,订单号,订单名称,付款金额不能为空
具体可参考支付宝的官方开发文档
说一下,这个订单号和上面的不一样,是我当时忘了改同步通知的url了,然后又跑了一遍补上的,注意看浏览器url的变化,不填写同步通知的url是跳不到这个页面的
到这里,这个支付宝的demo算是测试完成了
4.封装支付宝的支付demo
我是在idea上用maven构建web项目,由于只是展示一下,只用到了SpringMVC
4.1.首先添加相关依赖
<!--springmvc的依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.1.3.RELEASE</version>
</dependency>
<!--支付宝的sdk-->
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>3.4.27.ALL</version>
</dependency>
<!--servlet-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<!--alibaba的fastjson-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.49</version>
</dependency>
4.2.将demo里的AlipayConfig.java直接拿过来
/* *
*类名:AlipayConfig
*功能:基础配置类
*详细:设置帐户有关信息及返回路径
*修改日期:2017-04-05
*说明:
*以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
*该代码仅供学习和研究支付宝接口使用,只是提供一个参考。
*/
public class AlipayConfig {
// 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号
public static String app_id = "你的appid";
// 商户私钥,您的PKCS8格式RSA2私钥
public static String merchant_private_key = "你的应用公匙生成时对应的私匙";
// 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
public static String alipay_public_key = "你的支付宝公匙";
// 服务器异步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
public static String notify_url = "http://填写你的公网地址/项目名/notify_url";
// 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
public static String return_url ="http://填写你的公网地址(也就是你申请的哪个域名)/项目名/return_url";
// 签名方式
public static String sign_type = "RSA2";
// 字符编码格式
public static String charset = "utf-8";
// 支付宝网关
public static String gatewayUrl