支付宝-电脑网站支付并跳转页面
支付API官方文档
alipay.trade.page.pay(统一收单下单并支付页面接口)
先创建应用
调用下单支付接口
调用该API时按照文档传入相应参数
公共请求参数相当于支付宝帮我们写好了,就是我们创建应用时的一些数据
这里的biz_content就是我们下单的业务参数等
请求下单
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",AliPayConfig.app_id,AliPayConfig.merchant_private_key,AliPayConfig.format,AliPayConfig.char_set,AliPayConfig.alipay_public_key,AliPayConfig.sign_type);AlipayTradePagePayRequest alipayTradePagePayRequest = new AlipayTradePagePayRequest();alipayTradePagePayRequest.setReturnUrl(AliPayConfig.return_url);alipayTradePagePayRequest.setNotifyUrl(AliPayConfig.notify_url);AlipayTradePagePayModel model = new AlipayTradePagePayModel();model.setOutTradeNo(outTradeNo);//商户自己的订单号model.setProductCode("FAST_INSTANT_TRADE_PAY");model.setTotalAmount(totalAmount);model.setSubject(subject);model.setBody(productBody);model.setPassbackParams(URLEncoder.encode(String.valueOf(loginid),"utf-8"));//回传参数是商户传给支付宝,支付宝在通知商户时会原封不动返回该参数(文档要求该参数要进行URL编码)alipayTradePagePayRequest.setBizModel(model);String form = "";try {form = alipayClient.pageExecute(alipayTradePagePayRequest).getBody();} catch (AlipayApiException e) {e.printStackTrace();}response.setContentType("text/html;charset=utf-8");response.getWriter().write(form);//直接将完整的表单html输出到页面response.getWriter().flush();response.getWriter().close();
alipayClient实例化是注册支付宝支付功能
调用完成后支付宝会跳转到登录界面,将响应数据直接输出到页面
同步通知
代码中的alipayTradePagePayRequest.setReturnUrl(AliPayConfig.return_url);return_url是用户支付成功后支付宝同步返回信息的地址,只会通知一次,支付宝不推荐将此通知作为最终支付结果。需要商户以异步通知为准。
在支付完成后,支付宝通知商户服务器上的该url,可以在该url方法里进行轮询或者返回一个页面在页面内进行轮询得到最终支付结果,然后再进行页面的重定向,实现页面完成的跳转
异步通知
代码中的alipayTradePagePayRequest.setNotifyUrl(AliPayConfig.notify_url);设置了支付宝要进行异步通知商户时的地址,这个通知会发生多次,所以需要商户自行处理。对于支付完成后的业务逻辑处理也应该在此通知的url方法里写。
这两个通知的url都必须是放在公网上的url,不然你放自己电脑服务器上支付宝当然通知不到你了。
对支付完成后支付宝的通知是需要做签名验证的
Map<String,String> params = new HashMap<String,String>();Map requestParams = request.getParameterMap();for (Iterator 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 isSignured = AlipaySignature.rsaCheckV1(params, AliPayConfig.alipay_public_key, AliPayConfig.char_set, AliPayConfig.sign_type);
支付宝-电脑网站支付并跳转页面相关推荐
- Spring Boot集成支付宝电脑网站支付功能
Spring Boot集成支付宝电脑网站支付功能 接入准备 登录 创建应用 添加能力 生成私钥与公钥 开发设置 沙箱环境 示例Demo的使用与学习 下载Demo 启动项目 参数配置 执行测试 Spri ...
- Laravel 集成支付宝电脑网站支付
前期准备: 1.下载SDK,里面还有Demo,可以参照Demo里面的内容快速接入 支付宝电脑网站支付SDK&Demo 2.把下载的zip文件解压,放到项目目录里,这里作者放在app文件夹里,方 ...
- 支付宝电脑网站支付 demo 启动过程
接支付的这个需求,想了很久,看了官网总是没有头绪,依旧不知道怎么做,于是把demo下载下来跑一下,由于太菜,弄了一天. 准备工作: 支付宝开发平台登录后注册获取APPID,支付宝公钥,私钥 (http ...
- 支付宝开放平台开发助手_支付宝:如何创建和接入支付宝电脑网站支付-新手必备...
1.登录支付宝 1.打开支付宝官网,以"我是支付宝商家"用户登录 https://www.alipay.com/ 2.进入"产品中心",选择并申请支付类型 2. ...
- 接入支付宝电脑网站支付实现JAVA版
简介 首先要说明的是个人感觉接入支付宝比微信简单多了,很轻松的,所以同学们不要紧张~ 当然还是老规矩啦,上来肯定的贴上官网地址,因为我这些服务天天在更新,而我的文章是教大家方法,而让你不是照葫芦画瓢 ...
- SpringBoot(二)集成支付宝 - 电脑网站支付和查询账单案例
一.简介 电脑支付常用于电商和后台管理系统的账户充值等场景. 电脑网站支付 文档 电脑网站支付流程图 项目源代码(含数据库):码云Gitee 二.集成步骤 0.创建应用.配置密钥 集成前需要先创建应用 ...
- 支付宝电脑网站支付及回调
官方文档:https://docs.open.alipay.com/270 支付 电脑网站支付的支付接口 alipay.trade.page.pay 调用时序图如下: 调用顺序如下: 商户系统请求支付 ...
- 支付宝-电脑网站支付初长成
前言 企业制定金额生成微信二维码集成完后,客户需要再集成支付宝,经过差文档及看博客终于实现出来(支付宝生成指定金额二维码,需要在"蚂蚁金服开放平台"注册账号,并且开通"电 ...
- 支付宝电脑网站支付(新版)
前言 继前面几篇文章以后,查看了常用的支付方式,发现还有电脑网站的支付方式,因此,这里稍微整理了一下,其实原理和手机网站支付差不多,只是使用沙箱测试的时候可能会遇到一点小坑. 沙箱采坑 因为在本地测试 ...
- php支付宝系列之电脑网站支付,支付宝电脑网站支付接口的申请
支付宝已经更新了即时到账接口的申请和调取方式,因此我们的教程是以新版为主,旧版虽然现在还可以继续使用,但是已经过期我们也就没有在提的必要啦! 准备材料 1. 企业或个体工商户可申请: 2. 提供真实有 ...
最新文章
- 浅谈图网络在视觉任务中的应用
- YOLOv3 Darknet安装编译与训练自己的数据集
- toolbar java_Java ToolBar.layout方法代码示例
- Android之DiskLruCache(缓存工具)
- c++ long 转 short_C精品编程之——C语言的数据类型、运算符、表达式,精品课程...
- spark-stream 访问 Redis
- SQL Server中以独占的方式操作表
- java折叠自行车x1-auto,java入门第三季 7-1 简易扑克练习
- 初学Flask(1)
- 【BZOJ】3143: [Hnoi2013]游走
- IBM Systems Director VMControl资源生命周期管理,第2部分
- 逆战ds服务器怎么修复,IBMDS3512存储硬盘坏了正确的更换方法应该是怎么
- Dell台式计算机BIOS放电,戴尔bios设置电池修复 笔记本电脑电池bios设置图解方法...
- 2021年山西省粮食种植面积增长,夏粮获大丰收,但因秋粮遭遇自然灾害粮食产量下降[图]
- java lucene 站内搜索_完整的站内搜索Demo(Lucene.Net+盘古分词)
- mzy git学习,git推送到远程库(八)
- 计算机应用基础评分标准及评分细则,《计算机应用基础》评分标准(范文).doc
- Tomcat对Servlet规范的Filter及Listener实现
- 模拟电子技术/国外电子与通信教材系列
- 嵌入式新闻早班车-第13期