admin 管理员组

文章数量: 1184232

支付宝沙箱使用详细教程(Java版本)

想要使用支付宝沙箱,首先需要开通支付宝沙箱的账号:
网址:
.htm

进入上面网址点击进入管理中心

再点击研发服务

然后就可以看到你的沙箱相关的信息:

下一步需要点击“设置/查看”设置你的公钥私钥,如下:





将“应用私钥”复制保存下来,在Java代码中需要用到,然后再将“应用公钥”复制回填到对应位置。

最后再设置下支付宝网关:


到此,支付宝的沙箱就开通完成了,接下来就是Java代码的事情了。

要使用支付宝沙箱,需要依赖两个jar包:

然后再编写一个请求接受类(SpringMVC、Servlet等等):

@WebServlet("/pay")
public class PayServlet extends HttpServlet{// 应用idprivate 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 响应*/@Overrideprotected 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{@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) {String orderId = request.getParameter("out_trade_no");System.out.println(orderId); // 输出订单号}
}

最后启动项目后,访问:http://localhost:8080/项目名/pay:

就会弹出如下界面,然后再填写你的沙箱买家账号密码即可:

最后附上支付流程时序图:

本文标签: 支付宝沙箱使用详细教程(Java版本)