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

5 篇文章 0 订阅
1 篇文章 0 订阅

想要使用支付宝沙箱,首先需要开通支付宝沙箱的账号:
网址:
https://open.alipay.com/platform/home.htm

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

在这里插入图片描述

再点击研发服务

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
将“应用私钥”复制保存下来,在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:

就会弹出如下界面,然后再填写你的沙箱买家账号密码即可:
在这里插入图片描述

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

在这里插入图片描述

  • 0
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值