1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 支付宝支付接口调用实现支付功能

支付宝支付接口调用实现支付功能

时间:2022-07-05 17:35:35

相关推荐

支付宝支付接口调用实现支付功能

支付宝支付接口调用实现支付功能

支付宝支付(沙箱版)

1.进入支付宝开发者平台(/platform/home.htm)

2.进入沙箱研发服用应用

3.设置好自己的公钥密钥

4.公私钥获取可在支付宝开放平台点击----->>文档下载工具密钥生成工具

5.配置好公密钥后编写带码------在maven中加入支付宝sdk包 (本人使用的spring boot框架)

6.配置支付宝需要的公共参数 可以使用支付宝提供的AlipayConfig类 最好将参数配置在 配置文件中便于维护 这里我使用的是 .yml配置文件、配置如下

(注意:不同换进配置不同支付网关)

7.在项目中获取yml配置的公共参数(使用注解@Value("${位置}")读取配置数据)

(下面开始写api来调起支付宝支付)

8.在项目service层编写接口 如图

(由于项目是前后端分离的 所以控制页面跳转的 支付宝同步回调 交由前端编写 控制)

9.实现impl 代码如下

请求

/*** 支付宝支付请求*/@Overridepublic void aliPay(HttpServletResponse response, HttpServletRequest request,Integer id) throws Exception {QueryWrapper<SOrder> wrapper = new QueryWrapper<>();wrapper.eq("id",id);SOrder order = orderMapper.selectList(wrapper).get(0);//获得初始化的AlipayClientAlipayClient alipayClient = new DefaultAlipayClient(alipayConfig.gatewayurl,alipayConfig.appId,alipayConfig.rsaPrivateKey, "json",alipayConfig.charset,alipayConfig.alipayPublicKey,alipayConfig.signType);//设置请求参数AlipayTradePagePayRequest aliPayRequest = new AlipayTradePagePayRequest();//请求参数Map<String , Object> map = new HashMap<>();String tradeNumber = order.getOId().substring(0,16);StringBuffer sb = new StringBuffer();int random=(int)((Math.random()*9+1)*100000);sb.append(tradeNumber);sb.append(random);SOrder sOrder = new SOrder();sOrder.setOId(sb.toString());QueryWrapper<SOrder> queryWrapper = new QueryWrapper<>();queryWrapper.eq("id",id);orderMapper.update(sOrder,queryWrapper);SOrdertype orderType = new SOrdertype();orderType.setOId(sb.toString());QueryWrapper<SOrdertype> objectQueryWrapper = new QueryWrapper<>();objectQueryWrapper.eq("o_id",order.getOId());orderTypeMapper.update(orderType,objectQueryWrapper);map.put("out_trade_no",sb.toString());//订单编号map.put("product_code","FAST_INSTANT_TRADE_PAY");//编码map.put("subject","++++++++++");//交易名map.put("total_amount",String.valueOf(order.getTotalPrice()));//总金额String string = JSONObject.toJSONString(map);log.info("-----------json封装参数-------"+string);aliPayRequest.setBizContent(string);aliPayRequest.setReturnUrl(alipayConfig.returnUrl);aliPayRequest.setNotifyUrl(alipayConfig.notifyUrl);String result = alipayClient.pageExecute(aliPayRequest).getBody();response.setContentType("text/html;charset=utf-8");log.info("返回结果=" + result);response.getWriter().write(result);response.getWriter().flush();response.getWriter().close();}

异步回调

/** 异步回调* */@Overridepublic String payNotify(HttpServletResponse response , HttpServletRequest request) {log.info("-----------request-----------"+request.getParameterMap());try {//获取支付宝回调所有参数Map<String, String> params = getParameterMap(request);//医路通订单编号String out_trade_no = params.get("out_trade_no");//支付总金额String total_amount =params.get("total_amount");//支付交易订单号String trade_no = params.get("trade_no");//交易状态String trade_status = params.get("trade_status");//参数1:支付宝返回参数//参数2:支付宝公钥//参数3:字符编码//参数4:加密方式boolean verify = AlipaySignature.rsaCheckV1(params,alipayConfig.alipayPublicKey,alipayConfig.charset, alipayConfig.signType);log.info("++++++++++++++++++++++++++++异步回调:"+verify+"++++++++++++++++++++++++++++++++");if (verify){//验签--判断是否是支付宝返回信息if (trade_status.equals("TRADE_FINISHED") || trade_status.equals("TRADE_SUCCESS")){//2.判断支付宝回调是否成功SOrder order = new SOrder();order.setTradeNumber(trade_no);order.setOId(out_trade_no);order.setTotalPrice(new BigDecimal(total_amount));order.setOrderStatus(1);//订单状态标识 (0:待支付;1:已支付;2:已取消;3:已退款)order.setPaymentTime(new Date());order.setPaymentMethod("支付宝");QueryWrapper<SOrder> wrapper = new QueryWrapper<>();wrapper.eq("o_id",out_trade_no);orderMapper.update(order,wrapper);SOrdertype sOrdertype = new SOrdertype();sOrdertype.setTradeNumber(trade_no);QueryWrapper<SOrdertype> queryWrapper = new QueryWrapper<>();queryWrapper.eq("o_id",order.getOId());orderTypeMapper.update(sOrdertype,queryWrapper);System.out.println("success");return "success";}else {return "failure";}}else {//验签--失败return "failure";}}catch (Exception e) {e.printStackTrace();}return "failure";}

10.controller是最为简单的啦 还是来给你们来一下

@AutowiredAlipayService alipayService;//支付@RequiresAuthentication@ApiOperation("支付")@RequestMapping(value = "/pay",method = RequestMethod.GET)public void payment(HttpServletResponse response , HttpServletRequest request,@ApiParam(name = "id" ,value = "订单id")Integer id) throws Exception {log.info("{=======================》》》》》》》》支付宝请求信息}"+id);alipayService.aliPay(response,request,id);}@ApiOperation("异步回调")@RequestMapping("/payNotify")public String payNotify (HttpServletResponse response , HttpServletRequest request){String success = alipayService.payNotify(response,request);log.info("{======================》》》》》》》》支付宝异步回调信息}"+success);return success;}

头一次写博客、不好的地方请多多关照

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。