java第三方支付接口(云通付)

您所在的位置:网站首页 云闪付第三方支付接口 java第三方支付接口(云通付)

java第三方支付接口(云通付)

2023-09-21 05:01| 来源: 网络整理| 查看: 265

个人学习总结,为java后台接口,不足之处请指教。 基于云通付实现的支付,所以先去云通付官网注册账号。得到相应的合作身份者PID、MD5密钥、商户号。(后面会用到) 下载相应jar包。将下载文件解压,把解压文件中的工具包拷贝到自己的项目中。这里写图片描述 新建一个PayController类 先建立一个方法,是从用户点击“确认订单”的按钮后跳转到方法

@RequestMapping("page/{orderNo}") @IsLogin public String list(@PathVariable String orderNo, HttpServletRequest request, Model model) throws PayException { Integer loginUserId = LoginIdentityUtil.getFromLoginId(request); // 根据订单号去获取订单信息: PayRequestVo payRequestVo = orderService.buildPayRequestVo(orderNo, loginUserId); model.addAttribute("payRequestVo", payRequestVo); model.addAttribute("gateway", PayConstant.GATEWAY_NEW); return "pay/pay"; }

该方法主要是生成签名,以及将支付请求的数据返回到页面,进行支付请求 页面主要Form表单如下,自动进行提交到“云通付”的支付网关

支付跳转中... document.forms['paysubmit'].submit();

跳转到付款页面这里写图片描述 付款回调方法,同步和异步

@RequestMapping("notify_url") @IsLogin public String notifyUrl(HttpServletRequest request, Model model, PayCallbackDto payCallbackDto) { String result = commonHanlerCallback(request, model, payCallbackDto); return result; } @RequestMapping("return_url") @IsLogin public String returnUrl( HttpServletRequest request, Model model, PayCallbackDto payCallbackDto) { String result = commonHanlerCallback(request, model, payCallbackDto); return result; } private String commonHanlerCallback(HttpServletRequest request, Model model, PayCallbackDto payCallbackDto) { Integer loginUserId = LoginIdentityUtil.getFromLoginId(request); Integer resultCode = Constant.SUCCESS_CODE; String resultMessage = "支付成功"; try { Map result = orderService.handlerPayCallback(loginUserId, payCallbackDto); model.addAllAttributes(result); } catch (Exception e) { resultCode = Constant.ERROR_CODE; resultMessage = e.getMessage(); } model.addAttribute("resultCode", resultCode); model.addAttribute("resultMessage", resultMessage); return "pay/success"; }

Controller层接受云通付返回的数据,用PayCallbackDto类接收

public class PayCallbackDto { private BigDecimal total_fee; // 交易金额 private String out_order_no; // 商户订单号 private String sign; // 服务端校验码 private String trade_no; // 云通付交易订单号 private String trade_status; // 交易结果(TRADE_SUCCESS说明支付成功) }

Service要走如下流程 1) 回调参数验证 2) 签名认证:将out_order_no、total_fee、trade_status、云通付PID、云通付KEY的值连接起来,进行md5加密,而后与sign进行对比 3) 支付状态验证trade_status= TRADE_SUCCESS 4) 订单验证 5) 订单金额比对 6) 更新订单状态

/** * 支付回调处理 * @param loginUserId * @param payCallbackDto */ public Map handlerPayCallback(Integer loginUserId, PayCallbackDto payCallbackDto) { // 1) 回调参数验证 // 2) 签名认证:将out_order_no、total_fee、trade_status、云通付KEY、云通付PID 的值连接起来,进行md5加密,而后与sign进行对比 // 3) 支付状态验证trade_status= TRADE_SUCCESS // 4) 订单验证 // 5) 订单金额比对 // 6) 更新订单状态 AssertUtil.isTrue(loginUserId == null || loginUserId


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3