沙箱对接易错点总结

参考博客:

博客①
博客②

易错点:

1.app_id是沙箱应用中的id
2.merchant_private_key是开发助手生成的应用私钥
3.alipay_public_key是指:将应用公钥配置到沙箱环境中点击查看后获取到的支付的公钥

支付宝沙箱文档

4.notify_url和return_url非必填项

​​支付宝沙箱文档

5.支付提示支付失败,错误代码(ALIN10009)
解决方法:
①卸载沙箱支付宝,重新安装
②检查网络状况
③跟换手机,重新登录支付
④如果实在不行,联系客服。
我在测试的时候一直提示支付失败,在代码没有改动的情况下,过了一天,尽然好了。。。。(当天测试时间为周日下午,可能和它维修有关。)
这个我感觉是沙箱环境本身存在的问题。

在这里插入图片描述

正式代码

使用工具idea,jdk1.8
1.Controller
/* 订单接口 */
@CrossOrigin
@RestController
@RequestMapping("order")
public class OrderController {
    @Resource
    private PayService payService;//调用支付服务

    @RequestMapping("alipayTwo")
    public void alipayTwo(HttpServletResponse httpResponse) throws IOException {
        payService.alipayTwo(httpResponse);
    }

}
2.Service的实现层

在这里需要注意一点:product_code必传(好坑啦,最后下载了官方demo才发现的)
api上写的可选。。。
在这里插入图片描述

/* 支付服务 */
@Service
public class PayServiceImpl implements PayService {
    @Override
    public void alipayTwo(HttpServletResponse httpResponse) throws IOException {

        //实例化客户端,填入所需参数
        AlipayClient alipayClient = new DefaultAlipayClient(CommonUtil.GATEWAY_URL, CommonUtil.APP_ID, CommonUtil.APP_PRIVATE_KEY, CommonUtil.FORMAT, CommonUtil.CHARSET, CommonUtil.ALIPAY_PUBLIC_KEY, CommonUtil.SIGN_TYPE);
        AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
        //在公共参数中设置回跳和通知地址
        alipayRequest.setReturnUrl(CommonUtil.RETURN_URL);
        alipayRequest.setNotifyUrl(CommonUtil.NOTIFY_URL);

        //商户订单号,商户网站订单系统中唯一订单号,必填
        //生成随机Id
        String out_trade_no = UUID.randomUUID().toString().substring(0,8);
        //付款金额,必填
        String total_amount =Integer.toString(1);
        //订单名称,必填
        String subject ="测试";
        //商品描述,可空
        String body = "测试";

        JSONObject jsonObject = new JSONObject();
        jsonObject.put("out_trade_no",out_trade_no);

        jsonObject.put("total_amount",total_amount);
        jsonObject.put("subject",subject);
        jsonObject.put("body",body);
        jsonObject.put("product_code","FAST_INSTANT_TRADE_PAY");

        alipayRequest.setBizContent(jsonObject.toString());

        /*alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\","
                + "\"total_amount\":\""+ total_amount +"\","
                + "\"subject\":\""+ subject +"\","
                + "\"body\":\""+ body +"\","
                + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");*/

        String form = "";
        try {
            form = alipayClient.pageExecute(alipayRequest).getBody(); // 调用SDK生成表单
        } catch (AlipayApiException e) {
            e.printStackTrace();
        }

        httpResponse.setContentType("text/html;charset=" + CommonUtil.CHARSET);
        httpResponse.getWriter().write(form);// 直接将完整的表单html输出到页面

        httpResponse.getWriter().flush();
        httpResponse.getWriter().close();
    }
}

3.前端页面
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试</title>
</head>
<body>
<div id="form">

</div>
     <input type="button" id="submit" value="提交" style="width:80px;height:100px;color:red; background-color:#3FF">
</body>

<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
<script>
    $(function () {
        $("#submit").click(function () {
            $.ajax({
                type:'get',
                url:'http://urqr2sq.hn3.mofasuidao.cn/order/alipayTwo',
                data:'',
                dataType:'html',
                success:function (data) {
                    console.log(data);
                    $("#form").html(data);
                }
            })
        })
</script>

</html>

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java对接支付宝(Alipay)的沙箱环境,通常涉及以下几个步骤: 1. **创建账号和申请API密钥**:首先,在支付宝开放平台(https://open.alipay.com)注册并成为开发者,然后申请沙箱测试账号,获取应用公钥(App Key)和私钥(App Secret)。 2. **集成SDK**:下载官方提供的支付宝SDK,例如Alipay Mobile SDK或Alipay Open Platform SDK,将其添加到项目中。对于Java项目,可以选择maven依赖或者直接将jar包导入。 3. **配置环境变量**:设置`ALIPAY_DEBUG=true`启用调试模式,并配置好沙箱环境的相关参数,如Endpoint(沙箱环境为`https://openapi.alipay.com/gateway.do`),以及支付相关的公共参数,如支付宝账户的回传地址(通知URL)。 4. **编写接口代码**:根据SDK文档实现接口调用,包括创建订单(Order creation)、付款请求(Payment request)、查询订单状态(Order status query)等。常用的方法如`alipay.trade.page.pay`。 5. **发起交易**:在用户触发支付操作后,使用SDK中的相应方法发送请求到支付宝服务器,获取预支付链接或者直接跳转到支付宝页面完成支付。 6. **处理回调**:为接收来自支付宝的异步通知或同步结果,设置相应的回调路由,处理成功、失败等各种场景。 7. **测试和优化**:在本地环境中反复测试各项功能,确保接口调用正常,并对可能出现的问题进行调试和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值