1、需要jar包

2、请求支付

 private static AlipayTradeService  tradeService;@Autowiredstatic {/** 一定要在创建AlipayTradeService之前调用Configs.init()设置默认参数*  Configs会读取classpath下的zfbinfo.properties文件配置信息,如果找不到该文件则确认该文件是否在classpath目录*/Configs.init("pay.properties");/** 使用Configs提供的默认参数*  AlipayTradeService可以使用单例或者为静态成员对象,不需要反复new*/tradeService = new AlipayTradeServiceImpl.ClientBuilder().build();}/*** 支付宝充值【当面付-扫码支付】*/@Login@PostMapping("alipayReCharge")public R alipayReCharge(@RequestBody Map<String,Object> params,HttpServletRequest request,@RequestAttribute(AuthorizationInterceptor.USER_KEY) Long userId){String amount = String.valueOf(params.get("amount"));String captchaCode = (String) params.get("captcha");String uuid = (String) params.get("uuid");boolean captcha = captchaService.validate(CaptchaEntity.RECHARGE_CAPTCHA_PREFIX+uuid, captchaCode);if(!captcha){return R.error("验证码不正确");}// (必填) 商户网站订单系统中唯一订单号,64个字符以内,只能包含字母、数字、下划线,// 需保证商户系统端不能重复,建议通过数据库sequence生成,String outTradeNo = userId+"_" + System.currentTimeMillis() + (long) (Math.random() * 10000000L);// (必填) 订单标题,粗略描述用户的支付目的。如“xxx品牌xxx门店当面付扫码消费”String subject = "xxxx扫码充值";// (必填) 订单总金额,单位为元,不能超过1亿元// 如果同时传入了【打折金额】,【不可打折金额】,【订单总金额】三者,则必须满足如下条件:【订单总金额】=【打折金额】+【不可打折金额】String totalAmount = amount;// 订单描述,可以对交易或商品进行一个详细地描述,比如填写"购买商品2件共15.00元"String body = "充值金额"+amount+"元";// (必填) 商户门店编号,通过门店号和商家后台可以配置精准到门店的折扣信息,详询支付宝技术支持String storeId = "test_store_id";// 支付超时,定义为120分钟String timeoutExpress = "1m";// 创建扫码支付请求builder,设置请求参数AlipayTradePrecreateRequestBuilder builder = new AlipayTradePrecreateRequestBuilder().setSubject(subject).setTotalAmount(totalAmount).setOutTradeNo(outTradeNo).setBody(body).setStoreId(storeId).setTimeoutExpress(timeoutExpress).setNotifyUrl(AlipayUtils.RECHARGE_ALIPAY_NOTIFY);//支付宝服务器主动通知商户服务器里指定的页面http路径,根据需要设置AlipayF2FPrecreateResult result = tradeService.tradePrecreate(builder);switch (result.getTradeStatus()) {case SUCCESS:AlipayTradePrecreateResponse response = result.getResponse();String  qrCode = response.getQrCode();RechargeOrderEntity rechargeOrder = new RechargeOrderEntity();rechargeOrder.setAmount(new BigDecimal(amount));rechargeOrder.setBuziType(RechargeOrderEntity.TYPE_ALI);rechargeOrder.setOutTradeNo(outTradeNo);rechargeOrder.setUserId(userId);rechargeOrder.setStatus("0");rechargeOrderService.save(rechargeOrder);if(rechargeOrder.getId() > 0){return R.ok().put("qrCode", qrCode).put("outTradeNo", outTradeNo);}else{return R.error("支付宝预下单失败!!!");}case FAILED:return R.error("支付宝预下单失败!!!");case UNKNOWN:return R.error("系统异常,预下单状态未知!!!");default:return R.error("不支持的交易状态,交易返回异常!!!");}}

3、异步回调

/*** 支付宝充值* 支付结果获取有两种获取方式:1主动轮询查询状态;2通过异步通知。本充值是采用方式1主动轮询方式*/@PostMapping("asyncNotify.do")public void asyncNotify(HttpServletRequest request, HttpServletResponse response) throws AlipayApiException, IOException{//获取支付宝POST过来反馈信息Map<String,String> paramsMap = buildParamsMap(request);//商户订单号String out_trade_no = paramsMap.get("out_trade_no");//支付宝交易号String trade_no = paramsMap.get("trade_no");//交易状态String trade_status = paramsMap.get("trade_status");//订单金额     String total_amount = paramsMap.get("total_amount");//卖家支付宝用户号String seller_id = paramsMap.get("seller_id");//开发者的app_idString app_id = paramsMap.get("app_id");//获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表(以上仅供参考)//RechargeOrderEntity order = rechargeOrderService.queryObject(out_trade_no);if(order == null) {response.getWriter().write("failure");return;}//计算得出通知验证结果boolean signVerified = AlipaySignature.rsaCheckV1(paramsMap, Configs.getAlipayPublicKey(), AlipayUtils.INPUT_CHARSET,Configs.getSignType()); //调用SDK验证签名if(signVerified){//验证成功//请在这里加上商户的业务逻辑程序代码if(trade_status.equals("TRADE_FINISHED") || trade_status.equals("TRADE_SUCCESS")){//判断该笔订单是否在商户网站中已经做过处理//如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序//如果有做过处理,不执行商户的业务程序String status = order.getStatus();double order_total_amount = order.getAmount().doubleValue();double ali_total_amount = Double.valueOf(total_amount);if(! Configs.getAppid().equals(app_id) || ! Configs.getPid().equals(seller_id) || ! (order_total_amount == ali_total_amount)){response.getWriter().write("failure");return;} if(StringUtils.equals(status, "1")) {response.getWriter().write("success");return;} else if(StringUtils.equals(status, "0")) {//买家支付宝账号 //String payAccount = new String(request.getParameter("buyer_logon_id").getBytes("ISO-8859-1"),"UTF-8");//买家支付宝用户号Map<String,Object> other = new HashMap<String,Object>();other.put("buziId", out_trade_no);other.put("id", order.getId());ucenterAccountService.recharge(order.getAmount(), order.getUserId(), SaleOrderEntity.ZHIFUBAO, other);response.getWriter().write("success");   //请不要修改或删除}}else{response.getWriter().write("failure");return;}}else{response.getWriter().write("failure");return;}}

支付宝当面付-扫码支付相关推荐

  1. 支付宝当面付扫码支付功能详解

    前言: 上篇呢主要是针对微信验证登录做了讲解,当然微信也是提供了很多的接口来供开发者进行调用,同样,微信也有支付,相信小伙伴们学习了上篇的登录之后,已经能够融汇贯通,做出微信的支付功能.那么本篇呢就讲 ...

  2. C#支付宝当面付扫码支付开发,包括demo代码的修改和蚂蚁金服开发平台的配置

    支付宝开发前配置: 第一步登陆蚂蚁金服开放平台服:支付宝扫码登陆 登录之后看到一下界面,找到自主研发选项,点击开始入驻 配置自己的个人信息: 到此为止我们所有应该做的配置基本上就完成了,但是我们要注意 ...

  3. 支付宝当面付扫码支付支付后不回调_码云上不错的几个支付相关的项目

    阅读文本大概需要15分钟. 网上支付相关的额业务场景无处不在,如果能掌握支付相关的核心技术,对于升职涨薪有莫大的好处.目前国内支付以支付宝和微信这两种支付为首,其他支付则可以忽略不计.有些网友以这两种 ...

  4. 支付宝当面付扫码支付接口开发

    最近公司要做一个有关支付的相关项目,需要对接支付宝的支付接口,实现扫描二维码支付功能,为此研究了一下支付宝相关业务.主要依据就是支付宝的相关接口文档: https://docs.open.alipay ...

  5. 支付宝当面付扫码支付支付后不回调_个人也可以申请支付宝当面付,费率0.38-无需营业执照,个体户0.3...

    个人也可以申请支付宝当面付啦,费率0.38%-支付信用卡和花呗付款,无需营业执照.如果有个体户营业执照的,费率甚至可以低至0.3%.T0实时到账开通当面付产品的支付宝账户余额中,随时可以发起提现到银行 ...

  6. 支付宝当面付扫码支付支付后不回调_科普帖 | 青蛙?蜻蜓?自助收银?刷脸支付?一文为你解惑...

    思迅支付金融 青蛙是什么? 蜻蜓又是什么? 要如何购买正确的设备? 自助刷脸大屏又是什么鬼? 刷脸支付还要区分设备和支付方式? 我采购的硬件设备能开通刷脸支付吗? 刷脸支付有没有新的优惠政策呢? 不知 ...

  7. 支付宝当面付扫码支付支付后不回调_刷脸支付每周问题集锦

    每周问题集锦 1问:独立蜻蜓小票机,如何安装? 答:设置--打印机设置--打开--链接小票机--确定,测试. 2问:富友每个月几号出账?如何对返佣? 答:每个月15-20号出上个月的账单,我司会查询返 ...

  8. 支付宝当面付扫码支付支付后不回调_对接支付宝当面付进行电脑网站和手机网站收款教程...

    对接支付宝当面付进行电脑网站和手机网站收款教程 第一步:风铃自动卡密发卡平台前端搭建 第二步:对接支付宝当面付进行电脑网站和手机网站收款 项目地址:https://github.com/Tai7sy/ ...

  9. 支付宝当面付扫码支付支付后不回调_支付宝餐饮蓝海计划2020年推出最新版

    政策简介:服务商为商户完成代报名后,商户将获得0.2%的优惠费率:服务商帮助商户完成配置IOT设备. 适用商户范围:参加餐饮新蓝海行动的餐饮客户,签约支付宝当面付产品,配置和绑定IOT设备 政策有效期 ...

最新文章

  1. 国防科大计算机考研大纲,2022年国防科技大学F1003计算机操作系统考研大纲及参考书目...
  2. 白话Elasticsearch33-深入聚合数据分析之案例实战bucket + metrics 统计每种颜色电视平均价格
  3. 【KVM系列06】Nova 通过 libvirt 管理 QEMU/KVM 虚机
  4. 100道Java基础面试题收集整理(附答案)
  5. 自动滑动图片html5,html+css+js 实现自动滑动轮播图
  6. win7计算机无法最大化,主编教您win7游戏无法全屏怎么办
  7. 学习Unix其实就这样简单
  8. 秋招很倒霉,但最终还是触底反弹了
  9. Linux for Matlab中文注释乱码(亲测有效)
  10. 关于指针的一些基本常识
  11. 专业视频压制神器下载——解决会声会影、PR、AE处理视频后过大的问题(三款工具)专业视频压制软件
  12. 三种隐藏 HTML 元素的方式
  13. 卖计算机英语对话,买电脑英语情景对话
  14. hibernate 数据分页显示 及 分页导航栏的设置
  15. 全球与中国具有集成保护功能的共模滤波器(CMF)市场深度研究分析报告
  16. Mac系统安装/升级 Git
  17. 计算机网线接口灯怎样是正常,电脑网线接口灯不亮是什么原因
  18. 【体系结构】有关Oracle SCN知识点的整理--补充内容
  19. mongoDB镜像下载
  20. STM32定时器捕获编码器模式测速和方向测不准问题

热门文章

  1. android q测试机型,华为公布安卓Q首批适配机型:一共有8款
  2. 4s系统如何连接电脑连接服务器,苹果4s连接电脑的方法步骤详解
  3. javbd(javalibrary)
  4. 深度学习常用评价指标
  5. 【演示文稿制作软件】Focusky教程 | 正文页的排版小技巧 - 留白与距离
  6. 【如何制作幻灯片】Focusky教程 | 如何复制Focusky的帧?
  7. 为什么机房计算机外放没有声音,学校机房win7单机游戏打不开?
  8. Ubuntu系统Pycharm输入中文时有下划线解决办法
  9. MySQL之MyCat
  10. 【MyBatis-Plus】简介 入门案例