java对接支付宝支付项目的实战记录

网友投稿 445 2022-07-22


目录java对接支付宝支付演示成功演示图讲解一下实际支付的时候所需要的参数吧总结

java对接支付宝支付演示

现在有不少的项目都需要对接支付,这里主要是进行讲解对接支付宝H5支付

废话不多说 上代码

引入支付宝官方的sdk

com.alipay.sdk

alipay-easysdk

2.2.0

com.alipay.sdk

alipay-sdk-java

4.10.124.ALL

编写调用支付的方法

@RequestMapping("/test")

public void doPost(HttpServletRequest httpRequest,

HttpServletResponse httpResponse) throws ServletException, IOException {

//商户号

http:// String APP_ID="";

//私钥

String APP_PRIVATE_KEY="";

//编码

String CHARSET="UTF-8";

//公钥

String ALIPAY_PUBLIC_KEY="";

//我是沙箱环境 所有请求地址是沙箱版

AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipaydev.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2"); //获得初始化的AlipayCliehttp://nt

AlipayTradeWapPayRequest alipayRequest = new AlipayTradeWapPayRequest();//创建API对应的request

//这里主要是设置回调 也就是支付成功之后你要做什么操作的地址

alipayRequest.setReturnUrl("http://domain.com/CallBack/return_url.jsp");

alipayRequest.setNotifyUrl("http://domain.com/CallBack/notify_url.jsp");//在公共参数中设置回跳和通知地址

/**

* @description:

* @author: hwk

* @date: 2022/6/14 16:34

* @param: out_trade_no 订单编号

* total_amount 付款金额

* subject 商品名称

* product_code 支付方式 如手机网站 pc网站 APP支付等

**/

JSONObject jsonObject = new JSONObject();

jsonObject.put("out_trade_no", "264484811515156");

jsonObject.put("total_amount", "66");

jsonObject.put("subject", "测试支付");

jsonObject.put("product_code", "QUICK_WAP_WAY");

alipayRequest.setBizContent(jsonObject.toJSONString());

String form="";

try {

form = alipayClient.pageExecute(alipayRequest).getBody();

} catch (AlipayApiException e) {

e.printStackTrace();

}

//因为我不会写前端 所以直接输出测试 如果在正式环境中 建议直接return 返回的from表单

httpResponse.setContentType("text/html;charset=" + CHARSET);

httpResponse.getWriter().write(form);//直接将完整的表单html输出到页面

httpResponse.getWriter().flush();

httpResponse.getWriter().close();

}

//支付回调

@RequestMapping(http://"/test1")

public void aliPayNotify() {

Map params = getAllRequestParam(request);

String tradeStatus = params.get("trade_status");

if ("TRADE_SUCCESS".equals(tradeStatus)) {

System.out.println("支付成功");

}else {

System.out.println("支付失败");

}

}

private Map getAllRequestParam(final HttpServletRequest request) {

Map res = new HashMap<>(8);

Enumeration> temp = request.getParameterNames();

while (temp.hasMoreElements()) {

String en = (String) temp.nextElement();

String value = request.getParameter(en);

res.put(en, value);

}

return res;

}

入参正式支付的时候 可以用string json等接收 我这里只是演示

成功演示图

讲解一下实际支付的时候所需要的参数吧

除去appid 公钥 私钥什么的

你正常支付所需要的参数无非 就是商品的id(主要是用于根据商品id查询商品的名称价格等后续调用支付的时候需要)、购买人然后查询到商品的详情 set到对应的参数里面 去调用支付宝sdk 来生成from表单

你们可以在回调里面进行支付成功之后的一些操作

比如说:购买的是会员 然后在支付成功之后去给他进行开通会员或者续费会员

有一点要提醒你们 发起支付前创建的订单一定要是未支付 在回调里面判断用户是否成功

如果有用户主动查询是否支付成功的操作 建议根据订单号先去数据库查询是否等于支付成功 如果不等于去官方给的接口去查是否支付成功 这样做的好处就是有的时候回调慢了一点 用户主动去查询如果是支付成功不会造成返回支付失败

总结


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java用邻接表存储图的示例代码
下一篇:SpringBoot2.6.x升级后循环依赖及Swagger无法使用问题
相关文章

 发表评论

暂时没有评论,来抢沙发吧~