支付宝沙箱使用详细教程(Java版本)
想要使用支付宝沙箱,首先需要开通支付宝沙箱的账号: 网址:
进入上面网址点击进入管理中心
再点击研发服务
然后就可以看到你的沙箱相关的信息:
下一步需要点击“设置/查看”设置你的公钥私钥,如下:
将“应用私钥”复制保存下来,在Java代码中需要用到,然后再将“应用公钥”复制回填到对应位置。
最后再设置下支付宝网关:
到此,支付宝的沙箱就开通完成了,接下来就是Java代码的事情了。
要使用支付宝沙箱,需要依赖两个jar包:
然后再编写一个请求接受类(SpringMVC、Servlet等等):
@WebServlet("/pay") public class PayServlet extends HttpServlet{ // 应用id private String appId = ""; // 应用私钥 private String appPrivateKey = ""; // 支付宝公钥 private String alipayPublicKey = ""; // 沙箱接口路径 private String gatewayUrl = ""; // 签名方式 private String signType = ""; // 支付宝异步通知路径,付款完毕后会异步post调用本项目的方法,必须为公网地址(一般使用异步处理支付成功后的业务操作,如果想访问本地ip可以使用内网穿透实现) private String notifyUrl = ""; // 支付宝同步get通知路径,也就是当付款完毕后跳转本项目的页面,可以不是公网地址(一般使用同步支付跳转到支付成功提示页面) private String returnUrl = ""; /** * 模拟支付订单 * * @param request 请求 * @param response 响应 */ @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) { try { //实例化客户端,填入所需参数 AlipayClient alipayClient = new DefaultAlipayClient(gatewayUrl, appId, appPrivateKey, "JSON", "UTF-8", alipayPublicKey, signType); AlipayTradePagePayRequest payRequest = new AlipayTradePagePayRequest(); String outTradeNo = UUID.randomUUID().toString(); // 商户订单号,商户网站订单系统中唯一订单号,必填 String totalAmount = "100"; // 付款金额,必填 String subject = "订单名称"; // 订单名称,必填 String body = "订单描述"; // 商品描述,可空 payRequest.setBizContent("{"out_trade_no":"" + outTradeNo + ""," + ""total_amount":"" + totalAmount + ""," + ""subject":"" + subject + ""," + ""body":"" + body + ""," + ""product_code":"FAST_INSTANT_TRADE_PAY"}"); // 在公共参数中设置回跳和通知地址 payRequest.setReturnUrl(returnUrl); payRequest.setNotifyUrl(notifyUrl); String form = alipayClient.pageExecute(payRequest).getBody(); // 调用SDK生成html表单 response.setContentType("text/html;charset=" + Configs.get("encoding")); response.getWriter().write(form); response.getWriter().flush(); response.getWriter().close(); } catch (AlipayApiException | IOException e) { e.printStackTrace(); } } }
再写一个支付完成后异步通知调用请求接受类(同步通知也是同样的道理):
@WebServlet("/notify") public class NotifyServlet extends HttpServlet{ @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) { String orderId = request.getParameter("out_trade_no"); System.out.println(orderId); // 输出订单号 } }
最后启动项目后,访问:http://localhost:8080/项目名/pay:
就会弹出如下界面,然后再填写你的沙箱买家账号密码即可:
最后附上支付流程时序图:
上一篇:
IDEA上Java项目控制台中文乱码