1、概念

电脑网站支付,也称扫码支付,是专门针对PC端业务而开发的一种支付方式,既有支付宝提供在网页展示一个动态生成的支付二维码,用户通过手机支付宝扫码以后可实现支付功能的一种支付方式。

2、创建应用

登录支付宝开放平台(open.alipay.com),创建应用,应用审核通过会生成一个APPID。

3、签约电脑网站支付功能

在 能力列表 中点击 添加能力来添加电脑网站支付功能,并签约方可调用

4、配置应用公钥和应用私钥

参考文档,非常详细https://opendocs.alipay.com/open/270/105899

5、接入SDK

/**
* 电脑网站支付
* https://docs.open.alipay.com/270/105899/
* @paramhttpResponse
* @throws ServletException
* @throws IOException
*/
public static void pcWebPay(String amount,HttpServletResponse httpResponse) {AlipayClient alipayClient = new DefaultAlipayClient(URL, APP_ID, APP_PRIVATE_KEY, FORMAT, CHARSET, ALIPAY_PUBLIC_KEY, SIGN_TYPE); //获得初始化的AlipayClientAlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();//创建API对应的requestalipayRequest.setReturnUrl("https://www.baidu.com");alipayRequest.setNotifyUrl("https://xxx.xxx.com/abc/alipay/pcWebPayCallBack");//在公共参数中设置回跳和通知地址alipayRequest.setBizContent("{" +"    \"out_trade_no\":\""+System.currentTimeMillis()+"\"," +"    \"product_code\":\"FAST_INSTANT_TRADE_PAY\"," +"    \"total_amount\":"+amount+"," +"    \"subject\":\"Iphone6 16G\"," +"    \"body\":\"Iphone6 16G\"," +"    \"passback_params\":\"123&456&789"," +"    \"extend_params\":{" +"    \"sys_service_provider_id\":\""+System.currentTimeMillis()+"\"" +"    }"+"  }");//填充业务参数try {String form = alipayClient.pageExecute(alipayRequest).getBody(); //调用SDK生成表单httpResponse.setContentType("text/html;charset=" + CHARSET);httpResponse.getWriter().write(form);//直接将完整的表单html输出到页面httpResponse.getWriter().flush();httpResponse.getWriter().close();} catch (AlipayApiException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}
}/**
* 扫码支付回调 当收银台调用预下单请求API生成二维码展示给用户后,用户通过手机扫描二维码进行支付,支付宝会将该笔订单的变更信息,沿着商户调用预下单请求时所传入的通知地址主动推送给商户。
* 通知参数说明 https://docs.open.alipay.com/194/103296/
* 程序执行完后必须打印输出“success”(不包含引号)。如果商户反馈给支付宝的字符不是 success 这7个字符,支付宝服务器会不断重发通知,直到超过24小时22分钟。一般情况下,25小时以内完成8次通知(通知的间隔频率一般是:4m,10m,10m,1h,2h,6h,15h);
* 程序执行完成后,该页面不能执行页面跳转。如果执行页面跳转,支付宝会收不到 success 字符,会被支付宝服务器判定为该页面程序运行出现异常,而重发处理结果通知;
* @paramalipayPublicKey
* @paramrequest
* @return
*/
public static void qrcodePayCallBack(String alipayPublicKey, HttpServletRequest request, HttpServletResponse response) {Map<String, String> result = 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");result.put(name, valueStr);}//支付宝交易凭证号String tradeNo = result.get("trade_no");//原支付请求的商户订单号String outTradeNo = result.get("out_trade_no");String appId = result.get("app_id");String sellerId = result.get("seller_id");String totalAmount = result.get("total_amount");String body = result.get("body");logger.info("tradeNo=={},outTradeNo=={},appId=={},sellerId=={},totalAmount=={},body=={}",tradeNo,outTradeNo,appId,sellerId,totalAmount,body);//切记alipaypublickey是支付宝的公钥,请去open.alipay.com对应应用下查看。  try {boolean flag = AlipaySignature.rsaCheckV1(result, alipayPublicKey, CHARSET, SIGN_TYPE);logger.info("支付宝回调结果===========" + flag);if (flag) {logger.info("支付宝回调success===========");toAliPayResult = "success";} else {logger.info("支付宝回调failure===========");toAliPayResult = "failure";}//用字节流形式打印success,解决支付宝重复回调BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());out.write(toAliPayResult.getBytes());out.flush();out.close();} catch (AlipayApiException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}
}

6、测试



支付宝系列-电脑网站支付相关推荐

  1. php支付宝系列之电脑网站支付,一个PHP文件搞定支付宝之电脑网站支付

    本篇文章给大家分享的内容是关于用一个PHP文件搞定支付宝之电脑网站支付 ,有需要的朋友可以参考一下 网上的很多PHP支付宝支付接入教程都颇为复杂,且需要配置和引入较多的文件,本人通过整理后给出一个单文 ...

  2. SpringBoot整合支付宝之电脑网站支付

    SpringBoot整合支付宝之电脑网站支付 一.支付宝介绍 1.2 过程分析 1.3 对接支付宝的准备工作 1.4 申请步骤: 2.支付功能实现 2.1 思路分析 2.2 编写支付宝支付接口 2.2 ...

  3. PHP开发支付宝之电脑网站支付--流程简介

    前言 前端时间自己开发了一个drupal的支付宝模块,现在整理一下过程,因为支付宝官方网站提供的接口及文档都是新接口的,而且使用新接口的过程比较麻烦一点,所以整理一下 1.支付宝的账号必须经过企业资格 ...

  4. 支付宝之电脑网站支付(保姆版)

      大家好,我是大史兄弟,一个不断摸索爬行的程序员.看CSND文章已经有好多年了,但是写文章还是第一次.我不是行业的大牛,只是一个希望不断进步成为大牛的小白程序员.   不知道有没有和我一样情况的,学 ...

  5. 支付宝支付(1) 电脑网站支付(SpringBoot+沙箱环境)

    一.前言 本文将基于 springboot+沙箱环境 来简单实现支付宝的电脑网站支付功能 二.获取所需配置参数信息 APPID 支付宝网关 支付宝公钥 RSA2私钥 登录支付宝 -> 研发服务 ...

  6. 支付宝开放平台开发助手_支付宝:如何创建和接入支付宝电脑网站支付-新手必备...

    1.登录支付宝 1.打开支付宝官网,以"我是支付宝商家"用户登录 https://www.alipay.com/ 2.进入"产品中心",选择并申请支付类型 2. ...

  7. php支付宝pc收银台,支付宝支付-PC电脑网站支付

    支付产品全面升级(更新时间:2017/05/05 ),若您使用的是老接口,请移步老版本即时到账文档. 支持沙盒环境的测试 1.有图有真相 使用手机扫码进行支付 i统一收单下单并支付页面接口alipay ...

  8. Spring Boot集成支付宝电脑网站支付功能

    Spring Boot集成支付宝电脑网站支付功能 接入准备 登录 创建应用 添加能力 生成私钥与公钥 开发设置 沙箱环境 示例Demo的使用与学习 下载Demo 启动项目 参数配置 执行测试 Spri ...

  9. idea支付宝沙箱环境模拟电脑网站支付demo

    1.idea导入demo 支付宝电脑网站支付Demo:https://opendocs.alipay.com/open/270/106291/ 1.导入idea项目 2.选择下载好的项目,选择Ecli ...

最新文章

  1. 【NLP】四万字全面详解 | 深度学习中的注意力机制(三)
  2. shadow dom一个最简单的例子
  3. Devoxx 2017美国大会首日重要演讲一览
  4. Java EE CDI依赖关系消歧示例
  5. C语言 atoi函数简单实现
  6. 计算机考研择校真的要选大城市吗,2020考研,择校前要考虑的6大问题
  7. SAP License:SAP中的权限与破解
  8. 《DSP using MATLAB》Problem 7.26
  9. C# 如何调用打印机打印报表
  10. matlab解隐式差分格式,【毕业设计(论文)】二维热传导方程有限差分法的MATLAB实现...
  11. 目标检测综述 “Object Detection in 20 Years: A survey“
  12. 教程丨如何在AdsPower浏览器内快速配置UCloud 服务器
  13. Windows wmic命令之process进程管理
  14. Word如何任意页开始插入页码
  15. Docker容器内安装wkhtmltox用来html转pdf
  16. 华为freelance耳机充不进电修理
  17. 科技的性感:三星冰洗如何演绎时尚生活?
  18. mysql indentify_Database 中 identify relationship 和 non-identify relationship的区别
  19. 《嵌入式 - 深入剖析STM32》详解STM32时钟系统
  20. C#语言实例源码系列-实现XML文件操作

热门文章

  1. 【IoT】基于MCU实现NB-IoT设备对接移动oneNET平台
  2. Oracle VM VirtualBox 虚拟硬盘扩容(Linux)
  3. cpu高速缓存命中率
  4. 用二维数组生成随机数可控制范围C语言
  5. js心跳间隔怎么确定_神经网络分析时间序列:心跳间隔序列预测
  6. html怎么设置页面最小像素,做一个网页标准的像素用多少?
  7. python自动化广告收益_薅羊毛? 月入10万? | 这是自动化测试老司机的特长--Python自动化带你薅视频红包,一个都不放过!...
  8. 第895期机器学习日报(2017-03-01)
  9. c语言常用头文件algo,数据结构习题集(C语言版严蔚敏)第一二三章
  10. 杭州联想维修点 lenovo笔记本售后服务 联想客服电话