支付宝支付 - 异步通知与同步通知
/*** @Description: 支付成功后的支付宝异步通知*/
@RequestMapping(value="/alipay")
public String alipay(HttpServletRequest request, HttpServletResponse response) throws Exception {log.info("支付成功后的支付宝异步通知");//获取支付宝POST过来反馈信息Map<String,String> params = new HashMap<String,String>();Map<String,String[]> requestParams = request.getParameterMap();for (Iterator<String> iter = requestParams.keySet().iterator(); iter.hasNext();) {String name = (String) iter.next();String[] values = (String[]) requestParams.get(name);String valueStr = "";for (int i = 0; i < values.length; i++) {valueStr = (i == values.length - 1) ? valueStr + values[i]: valueStr + values[i] + ",";}//乱码解决,这段代码在出现乱码时使用
// valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");params.put(name, valueStr);}boolean signVerified = AlipaySignature.rsaCheckV1(params,aliPayResource.getAlipayPublicKey(),aliPayResource.getCharset(),aliPayResource.getSignType()); //调用SDK验证签名if(signVerified) {//验证成功// 商户订单号String out_trade_no = new String(request.getParameter("out_trade_no").getBytes("ISO-8859-1"),"UTF-8");// 支付宝交易号String trade_no = new String(request.getParameter("trade_no").getBytes("ISO-8859-1"),"UTF-8");// 交易状态String trade_status = new String(request.getParameter("trade_status").getBytes("ISO-8859-1"),"UTF-8");// 付款金额String total_amount = new String(request.getParameter("total_amount").getBytes("ISO-8859-1"),"UTF-8");if (trade_status.equals("TRADE_SUCCESS")){String merchantReturnUrl = paymentOrderService.updateOrderPaid(out_trade_no, CurrencyUtils.getYuan2Fen(total_amount));notifyFoodieShop(out_trade_no, merchantReturnUrl);}log.info("************* 支付成功(支付宝异步通知) - 时间: {} *************", DateUtil.getCurrentDateString(DateUtil.DATETIME_PATTERN));log.info("* 订单号: {}", out_trade_no);log.info("* 支付宝交易号: {}", trade_no);log.info("* 实付金额: {}", total_amount);log.info("* 交易状态: {}", trade_status);log.info("*****************************************************************************");return "success";}else {//验证失败log.info("验签失败, 时间: {}", DateUtil.getCurrentDateString(DateUtil.DATETIME_PATTERN));return "fail";}
}
# 服务器异步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
#alipay.notifyUrl=http://2r49yp.natappfree.cc/payment/notice/alipay
alipay.notifyUrl=http://payment.t.xuexi.com/payment/payment/notice/alipay
# 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
alipay.returnUrl=http://payment.t.xuexi.com/payment/alipayResult
#alipay.returnUrl=http://shop.t.xuexi.com/payment
@Transactional(propagation=Propagation.REQUIRED)
@Override
public String updateOrderPaid(String merchantOrderId, Integer paidAmount) {Example example = new Example(Orders.class);Example.Criteria criteria = example.createCriteria();criteria.andEqualTo("merchantOrderId", merchantOrderId);Orders paidOrder = new Orders();paidOrder.setPayStatus(PaymentStatus.PAID.type);paidOrder.setAmount(paidAmount);int result = ordersMapper.updateByExampleSelective(paidOrder, example);return queryMerchantReturnUrl(merchantOrderId);
}
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>支付结果</title>
</head>
<body>
支付结果
<script>window.onload=function(){window.close();}
</script>
</body>
</html>
支付宝支付 - 异步通知与同步通知相关推荐
- 记一起因证书引发的支付宝支付异步通知接收不到的事故
目录 1.事故还原 2.排查过程 3.疑问 4.支付宝技术客服解答 5.解决方法 1.事故还原 客服反馈有用户使用支付宝支付后,订单状态没有改变. 2.排查过程 查看日志,发现没有收到异步通知. 排查 ...
- 支付宝支付异步回调 302
APP从测试环境迁移到生产环境,重新测试发现购买时,支付宝支付成功之后,订单状态未更新,即异步回调接口未执行. 检查发现notify_url是正确的,并且已经支付成功(账户有被扣款),登录蚂蚁金服开放 ...
- 支付宝支付异步回调的一些问题
做了好多次支付宝支付,还是经常掉坑,现在整理下,作为参考 1,关于设置公钥 一定要注意,是"支付宝公钥",不要填应用公钥,不然就坑了 2.关于回调的域名地址 干净些,不要有参数,如 ...
- 异步通知和同步通知_CCF NOI 2020 网上同步赛报名通知
第 37 届全国青少年信息学奥林匹克竞赛(CCF NOI 2020)将于 8 月 16 日-21 日在长沙市第一中学举行,届时将同期举办网上同步赛. 网上同步赛为非正式比赛,旨在给不能到现场参赛的选手 ...
- 支付宝支付异步回调成功,页面跳转问题
问题: 支付宝扫码支付成功异步回调了处理函数,需要返回信息告诉支付宝的.这样导致了我没办法去处理支付成功的页面跳转.想到一种方法就是ajax轮询,但是觉得如果用户一直不扫码,或一直不支付,那轮询就会不 ...
- 扎心啊,老铁!支付宝支付,同步通知session失效问题
今天遇到一个奇怪的问题,pc端调用支付宝网页支付,但是支付成功后的同步通知,sessionId总是变化 搞的一头雾水,相当难受. 原因说一下: return_url 我本地测试配置的是 http: ...
- 支付宝手机网页版支付、支付异步回调、退款
一.微信小程序订单生成支付宝链接至浏览器支付 整体流程 一.微信小程序订单生成支付宝链接至浏览器支付 1.场景需求 2.准备工作 3.搭建项目环境以及实现 二.支付宝支付异步通知 三.退款 1.退款 ...
- Android端集成支付宝支付
Android端集成支付宝支付 1.申请账号及配置变量 支付宝快速接入链接点击打开链接 支付宝扫码或者账号密码登录 下面是支付宝给出的接入介绍 第一步:创建应用并获取APPID 要在您的应用中接入支付 ...
- APP端接入支付宝支付接口
支付宝支付常量配置 AlipayConfig public class AlipayConfig {// 商户appidpublic static final String APPID = " ...
最新文章
- python下载大文件-使用请求在python中下载大文件
- 鼠标移出DIV层时,触发onMouseOut事件
- MassTransit中RequestResponse基本使用
- oracle 实现 自增主键功能
- 《Raspberry Pi用户指南》——2.3 Debian简介
- 2020广西师范大学计算机学院调剂,2020广西师范大学计算机视觉与应用接收考研调剂...
- 海报合成_新年元旦创意合成设计之跨年海报!这组海报我打99分!
- java text 格式化_java.text.Format
- SI4463 空中唤醒教程
- 腾讯视频下载器 M3U8、TS获取下载MP4工具
- java else 语法错误_Java中带有else的语法错误
- Python常见问题 - pip报错 ValueError: Unable to find resource t32.exe in package pip._vendor.distlib
- IDEA的粘贴板的一点问题
- 怎么修改PDF文件的文字内容
- Android高版本上传图片出现旋转问题(三星手机,小米8)
- 浏览器产生乱码的原因
- 算法:快速排序稳定性
- qt 通过ODBC链接MYSQL
- HTB靶场系列 Windows靶机 Arctic靶机
- office2013安装后ppt无法打开演示文稿
热门文章
- BZOJ 1562 变换序列
- 使用ML.NET实现猜动画片台词
- 【笔记】css 自定义select 元素的箭头样式
- android 自己定义水平和圆形progressbar 仅仅定义一些style就能够
- 【SAS BASE】SCAN函数
- Delphi XE6 TStringHelper中的string类型转换
- 小论接口(interface)和抽象类(abstract class)的区别
- 对jquery的conflict方法的解读
- Flash Alter v1.0 个性化Flash轮播图文播放器
- XML电子口岸自动报关项目 真实百万级项目下载