沙箱对接易错点总结

参考博客:

博客①
博客②

易错点:

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>

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值