1.沙盒环境介绍
支付宝有沙盒环境供开发者测试,提供了沙盒版支付宝APP、商户账号、买家账号,可以免去商户注册、企业资质审核环节,开箱即用,降低学习成本。
1. 获取沙盒账户并下载沙盒应用
进入支付宝支付官网(),点击“我是开发者”,在新页面右上角用自己的支付宝扫描二维码登录,然后点击开发服务中的研发服务:
此时,您将处于沙盒应用程序的控制台中,并且您将被分配一个:
继续下载沙盒工具,之后会有支付宝APP沙盒版本提供下载,下载完成后即可使用支付宝分配的沙盒账号和密码登录沙盒APP。
2. 设置沙盒密钥配置
文档位置:
密钥工具下载地址:
设置沙盒应用程序的公钥和私钥
为了安全起见,我们需要生成公钥和私钥,公钥提供给支付宝,支付宝对数据进行加密,私钥用于解析支付宝发送的加密数据,由我们保管。支付宝提供了生成公钥和私钥的工具,点击文档中心的“开发工具”:
1)下载支付宝提供的公钥和私钥生成工具
密钥工具下载地址:
2)下载后,打开应用程序并生成公钥和私钥
3)使用生成的公钥和私钥设置沙盒应用的公钥和私钥
2. 内网穿透简介
参考博客:
1.内网穿透简介
如果你想把你的项目集成到微信中,你的项目是可以在互联网上访问的,微信也说会给你推送一系列的用户事件。如果你的项目不可以在互联网上访问,微信就没法推送事件。比如支付成功,支付成功后微信会回调通知你交易信息。所以你需要有自己的服务器。或许你可以用公司的服务器,但是如果你是学生,只是想学习公众号开发,就没必要特意去买服务器。
通过花生壳等渗透工具,可以将你的电脑映射到外网,这样你只需要在本地搭建服务器运行环境,外网就可以访问你的项目了。
顺便说一句:其实在现实的公众号开发中,即便公司有自己的服务器,也经常是通过内网穿透的方式进行测试开发。想象一下,如果我改了一点代码,就得重新打包项目,发布到服务器上,然后重启服务器...这个过程远不如在IDEA开发工具中再次运行项目那么便捷。
2.安装并使用内网穿透工具
参考博客:
3.支付宝支付简介
1.支付宝支付业务流程
上面的流程图已经大概描述了发起支付的流程,这里我用自己的话来详细翻译一下:
下订单。在项目中,这里下订单往往表现为用户确认订单,然后选择支付方式,点击立即支付,也就是用户点击“立即支付”时产生。这一步需要向我们的服务器发送请求,如果系统中立即支付的API路径为/pay,那么参数一般是订单包含的订单项,比如商品id,购买数量,优惠券id等。
服务端处理用户的下单请求,这一步是业务比较密集也是比较关键的一步,我们根据客户端发送的商品ID、数量、优惠券等参数(金额不应该由客户端直接发送,而应该由服务端计算,这样比较安全)计算出每个商品的单价、订单总金额等,然后生成订单号。然后调用接口把这些参数(如商品名称、支付金额、订单号等)打包发送给支付宝,对应上图中的1.1。
依然是在处理用户的下单请求,但是我觉得这段话太长了,所以我就改成另外一段吧。图中1.1中我们调用了支付宝的接口,其实图中还少了一个步骤1.2,就是支付宝会返回一段html文档,就是大家经常看到的带二维码的PC支付页面。请注意,在这一步,对于客户端来说,依然是在访问/pay接口,因为我们还没有响应请求,但是一直在和支付宝交互。所以我们把支付宝返回的html文档作为响应信息返回给客户端,客户端直接加载这段html文档,用户看到的就是一个支付页面。
此时对应上图中的第2,3,4,5步已经和我们的服务器没有任何关系了,完全是用户的支付过程。
第六步,当用户完成支付后,支付宝会跳转到我们指定的一个网页,这个网页一般是自定义的页面,比如“您已成功购买xxx商品,感谢您的支持”等。注意这里只是跳转到我们自定义的友好页面,告诉用户支付成功,仅作展示用途,并不是真正的支付回调。
在第7步,支付宝会调用我们指定的回调API接口,并传给我们一些参数,比如交易流水号、订单号等,我们可以利用这些信息来检查交易是否真的成功(第8步),并执行后续的业务,比如修改订单状态为已付款、给用户加积分、抵扣优惠券...等。
四、支付宝支付演示 1、官网支付演示
支付宝官网提供的手机网站支付演示:
2. 您自己的付款演示
1)引入支付宝支付SDK
2)配置文件配置
3)付款模板编写
在项目中只需要在调用支付确认接口的时候注入这个模板,调用模板,传递需要的vo即可。
4)支付成功回调
支付成功后,支付宝会调用我们的系统通知我们支付成功,并把交易信息传递给我们,主要参数是商户订单号(也就是我们自己生成的订单号)和交易状态。我们会根据交易是否成功执行后续的业务逻辑,比如给用户增加积分、修改订单状态为已付款、发送商务短信、通知商户接受订单等。
这个回调路径是在配置文件中设置的;
回调结果参数