java实现支付宝网页扫码支付

接口文档

https://docs.open.alipay.com/270

1.蚂蚁金服注册

1.注册自由开发者身份

2.打开开发中心![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UF8prDqn-1604249305004)(image\1566459805321.png)]

2.选择沙箱操作[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UwXLO2Jo-1604249305006)(image\1566460201043.png)]

3.点击设置公钥

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6I83QCDl-1604249305008)(image\1566460270289.png)]

4.查看密钥生成方法,选择版本下载密钥生成器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yxojqKgV-1604249305010)(image\1566460341470.png)]

5.解压并按说明文档操作[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EdyhhRo9-1604249305011)(image\1566460386012.png)]

6.如图所示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sime20ES-1604249305013)(image\1566460523406.png)]

7.设置密钥

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hfNNp7Oq-1604249305014)(image\1566460621536.png)]

将生成的公钥复制粘贴到设置公钥处[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1OW1qIpx-1604249305014)(image\1566460661502.png)]

8.下载沙箱版支付宝,登陆买家账号

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rVzOedNC-1604249305015)(image\1566460797509.png)]

2.代码环节

新建springcloud工程

1.导入依赖

<dependency><groupId>com.alipay.sdk</groupId><artifactId>alipay-sdk-java</artifactId><version>3.3.49.ALL</version>
</dependency>

2.创建配置信息类,其中配置信息为在沙箱环境中配置的密钥等信息

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9GSSGxcp-1604249305016)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1566462078852.png)]

package com.alipay.config;import java.io.FileWriter;
import java.io.IOException;/* **类名:AlipayConfig*功能:基础配置类*详细:设置帐户有关信息及返回路径*修改日期:2017-04-05*说明:*以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。*该代码仅供学习和研究支付宝接口使用,只是提供一个参考。*/public class AlipayConfig {//↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓// 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号public static String app_id = "2016101400681640";// 商户私钥,您的PKCS8格式RSA2私钥public static String merchant_private_key = "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCPLoHDYEr++A495u5HgDq8K5eEu45ctoAci/veJEwI2q+UveqUEB9ne6hwUtx85iJM8c7CfGmwQSwH+lctQE3OzenCBr/jRvmD+4CAE7aO09Bpc054Jftk5hGNHdESgj1PMSIIDkDdnJMjhEsi5ogY675gcTA6vPsDRGNgCfa/L+qLnnafkRcqKZngK/NQ56iOdFWFE7eJrJgrOaB9FNJg4wV0Dcvkp8ya9EAbas3dc4gLVzt7xYZzY5ALvnJTbfOCgD22sjf0+ZKGNH1TrzxNX6RiYE3q+tEnj/3G4v1kpY1nwmwCjKuBcFk2rGEZpSjqKDLUtNz0o+odlLrS8xVVAgMBAAECggEAW/tulYso4r+MtqvCa+Cu2u/OOREclecQSkaLmdwLlKyYm5+eMVxiMGK6hN5Wk05svq2hPEQcyYQ0uzNSCdoDolWaVHFtmJ6h8O4DUURYxUzB2NygjoMoC1vZ7qQ3CgLtTBCuYip19Wh/BhQZCOS8jfX0qZRNfY6mWyT2Cl6cS5mIWCmwbo4roGmQ2OxwOkDLifCc2RF5eCvQpzOs/jpP4UoXmJt1rlRBMGneegwS3FVzanqlh7ssmOShFU5gsJcDjv2eJVmiuQ97ztb0wdT3ZWn9l/9rFR+SPyBadubGomKeOcoEbJYmZtsMr7/YPsHNsdtiYirSqvordXz/ZcJeQQKBgQD4e4FeDM+gjwtTcmJ5Bf7+1YFzhK6oqWGXUcZ8wnE2jC2luNi/JvwheCBt905KjTVsXndQgXx8ZtuLD8q35pkEuE13L3lAMrzUv48LcwAP6LXY9Nb2iLIood0fHd/Ios1uEJtkzugPqxZF7ESx79eeHM9S4OJFw79rfnhdDzT27QKBgQCTg3KlBLyPs9vImLtNnwtPjofNCbt+rID+LhNlMSbWN87k9loEbJHUVVAvdvLIgbk9Ok5Z8aiu3aS4LRLJjCXjI76PAfO8MLGgg8ff+mHMS439FMFlj270+U8j7veFsYEkxh6ciNCTon0gP9V8RB5vHR3LpXl4WiAOZwWSPyQjCQKBgQCmgbxy1YrcQH6KcH/kMUxqX4/bZPHVO4uV5spnF7TdpJmCD5fOn8UceG7iwXHJK069S6AQZnSQuCwtx2tESFYJf6cJUtqhVl6LAcJNHcbQ4lPZClhx46/e4nhWPaKTw+R8+MvohW2j8jV+rZBq3BlUbmHPW7rEnSNMWPc3BNWtEQKBgE7Odrz6HtKWv+AW2FnLkftapepAPM6b0f35F5uD+r+O6RUhF04twmqxeTkiTuoXg6LWN22N0RQ6jPln+xV5rfP+8Jrt7Ayp5vtd67YYyY6e/qgqInfjfN+bIVCNJediwR+oSEpQPT3iHP7Rm3fb3HZ4E6bsLEzDuUR4fV14JhIhAoGBALUg0eY0ODMfCtvmg5Zp4fEW5GJOM2aQmxiZj0RMLByfgKsYWD+mn/eEMDgaT6KGc/MsUQo//402ZOCM4TXNrPaKYyNkyqLfyhl3KibooPNB5DPGsj0ff4MQxfryPlT24sDBNZmMSUzMVqYVdRZSM5Ersdmu+vZ7bTZio3Q3Ym96";// 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。public static String alipay_public_key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlz9GS8eINNVDD0t4ervFT+ifYaq1gPPpNHJXOpTeEEeNPYa6WO5ahvjtcydzvZot3nuWwlj4qBIgQLxbkShHoTzXqsvS0fkVmhtekcdcUp9zIGhf/woDeaDVsXXJ/NrCZa6DbQLMv5kF2ojI2Xa+Akon/uyn77SI1xOrWLOicLz+xje7s6VQ8JGh6a+JYc6Q7nprDLIKj1588PENsFrKFmbQS8lsqvr9LycKL1N1NpoUv6EWaelblCITAGCI4N6WBjLqwwbbZzpjNHxO54dAJndTyLgFt8KXKGMi+c0LOF6in265x7xYCL+R9v4X7RXuhHdFS/ouaCnMiAZIl747qwIDAQAB";// 服务器异步通知页面路径  需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问//public static String notify_url = "http://localhost:8080/pay/notify_url.jsp";// 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问//public static String return_url = "http://localhost:8080/pay/return_url.jsp";// 签名方式public static String sign_type = "RSA2";// 字符编码格式public static String charset = "utf-8";// 支付宝网关public static String gatewayUrl = "https://openapi.alipaydev.com/gateway.do";// 支付宝网关public static String log_path = "C:\\";//↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑/** * 写日志,方便测试(看网站需求,也可以改成把记录存入数据库)* @param sWord 要写入日志里的文本内容*/public static void logResult(String sWord) {FileWriter writer = null;try {writer = new FileWriter(log_path + "alipay_log_" + System.currentTimeMillis()+".txt");writer.write(sWord);} catch (Exception e) {e.printStackTrace();} finally {if (writer != null) {try {writer.close();} catch (IOException e) {e.printStackTrace();}}}}
}

3.创建请求方法,方法请求接口alipay.trade.page.pay ,参数说明文档https://docs.open.alipay.com/api_1/alipay.trade.page.pay

参数 类型 是否必填 最大长度 描述 示例值
out_trade_no String 必选 64 商户订单号,64个字符以内、可包含字母、数字、下划线;需保证在商户端不重复 20150320010101001
product_code String 必选 64 销售产品码,与支付宝签约的产品码名称。 注:目前仅支持FAST_INSTANT_TRADE_PAY FAST_INSTANT_TRADE_PAY
total_amount Price 必选 11 订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000]。 88.88
subject String 必选 256 订单标题 Iphone6 16G
body String 可选 128 订单描述 Iphone6 16G
time_expire String 可选 32 绝对超时时间,格式为yyyy-MM-dd HH:mm:ss 2016-12-31 10:05:01
goods_detail GoodsDetail[] 可选 订单包含的商品列表信息,json格式,其它说明详见商品明细说明
passback_params String 可选 512 公用回传参数,如果请求时传递了该参数,则返回给商户时会回传该参数。支付宝只会在同步返回(包括跳转回商户网站)和异步通知时将该参数原样返回。本参数必须进行UrlEncode之后才可以发送给支付宝。 merchantBizType%3d3C%26merchantBizNo%3d2016010101111
extend_params ExtendParams 可选 业务扩展参数
goods_type String 可选 2 商品主类型 :0-虚拟类商品,1-实物类商品 注:虚拟类商品不支持使用花呗渠道 0
timeout_express String 可选 6 该笔订单允许的最晚付款时间,逾期将关闭交易。取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。 该参数数值不接受小数点, 如 1.5h,可转换为 90m 90m
promo_params String 可选 512 优惠参数 注:仅与支付宝协商后可用 {“storeIdType”:“1”}
royalty_info RoyaltyInfo 可选 描述分账信息,json格式,详见分账参数说明
sub_merchant SubMerchant 可选 间连受理商户信息体,当前只对特殊银行机构特定场景下使用此字段
merchant_order_no String 可选 32 商户原始订单号,最大长度限制32位 20161008001
enable_pay_channels String 可选 128 可用渠道,用户只能在指定渠道范围内支付,多个渠道以逗号分割 注,与disable_pay_channels互斥 渠道列表:https://docs.open.alipay.com/common/wifww7 pcredit,moneyFund,debitCardExpress
store_id String 可选 32 商户门店编号 NJ_001
disable_pay_channels String 可选 128 禁用渠道,用户不可用指定渠道支付,多个渠道以逗号分割 注,与enable_pay_channels互斥 渠道列表:https://docs.open.alipay.com/common/wifww7 pcredit,moneyFund,debitCardExpress
qr_pay_mode String 可选 2 PC扫码支付的方式,支持前置模式和 跳转模式。 前置模式是将二维码前置到商户 的订单确认页的模式。需要商户在 自己的页面中以 iframe 方式请求 支付宝页面。具体分为以下几种: 0:订单码-简约前置模式,对应 iframe 宽度不能小于600px,高度不能小于300px; 1:订单码-前置模式,对应iframe 宽度不能小于 300px,高度不能小于600px; 3:订单码-迷你前置模式,对应 iframe 宽度不能小于 75px,高度不能小于75px; 4:订单码-可定义宽度的嵌入式二维码,商户可根据需要设定二维码的大小。 跳转模式下,用户的扫码界面是由支付宝生成的,不在商户的域名下。 2:订单码-跳转模式 1
qrcode_width Number 可选 4 商户自定义二维码宽度 注:qr_pay_mode=4时该参数生效 100
settle_info SettleInfo 可选 描述结算信息,json格式,详见结算参数说明
invoice_info InvoiceInfo 可选 开票信息
agreement_sign_params AgreementSignParams 可选 签约参数,支付后签约场景使用
integration_type String 可选 16 请求后页面的集成方式。 取值范围: 1. ALIAPP:支付宝钱包内 2. PCWEB:PC端访问 默认值为PCWEB。 PCWEB
request_from_url String 可选 256 请求来源地址。如果使用ALIAPP的集成方式,用户中途取消支付会返回该地址。 https://
business_params String 可选 512 商户传入业务信息,具体值要和支付宝约定,应用于安全,营销等参数直传场景,格式为json格式 {“data”:“123”}
ext_user_info ExtUserInfo 可选 外部指定买家
@Component
public class AlipayUtils {public String pay() throws AlipayApiException {AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl,AlipayConfig.app_id,AlipayConfig.merchant_private_key,"json","utf-8",AlipayConfig.alipay_public_key,"RSA2");AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();//创建API对应的requestalipayRequest.setBizContent("{" +"    \"out_trade_no\":\"20150320013333\"," +  "    \"product_code\":\"FAST_INSTANT_TRADE_PAY\"," +"    \"total_amount\":88.88," +              "    \"subject\":\"Iphone6 16G\"," +"    \"body\":\"Iphone6 16G\"," +"    \"passback_params\":\"merchantBizType%3d3C%26merchantBizNo%3d2016010101111\"," +"    \"extend_params\":{" +"    \"sys_service_provider_id\":\"2088511833207846\"" +"    }"+"  }");String form="";form = alipayClient.pageExecute(alipayRequest).getBody(); //调用SDK生成表单        System.out.println(response.getBody());return form;}
}

4.创建controler层

@RestController
public class PayController {@Autowiredprivate AlipayUtils alipayUtils;@RequestMapping("/pay")public String pay(){String pay="";try {pay = alipayUtils.pay();} catch (AlipayApiException e) {e.printStackTrace();}System.out.println(pay);return pay;}}

启动springboot启动类,访问localhost:8080/pay,使用沙箱钱包扫码支付,对比支付完成前后金额

} catch (AlipayApiException e) {e.printStackTrace();}System.out.println(pay);return pay;
}

}


启动springboot启动类,访问localhost:8080/pay,使用沙箱钱包扫码支付,对比支付完成前后金额若金额不足,前往沙箱充值,想充多少充多少

java实现支付宝网页扫码支付相关推荐

  1. Java对接支付宝网站扫码支付

    一.对接流程概述 申请支付宝商户号 > 开通支付能力 >申请应用>开发设置>签约开通支付能力>集成SDK 二.流程详解 2.1 申请支付宝账号 2.2开通网站支付功能

  2. 微信网页扫码支付(公众号)JAVA实现

    今天我们来说说微信网页扫码支付,这个支付的步骤和微信公众号网页是差不多的,也和微信小程序的步骤是一致的,不过appid是微信公众号的,我自己收集的微信开发文档希望对大家有用: https://blog ...

  3. 微信支付宝服务器分布,支付宝微信扫码支付中间件「第二届立创商城电子制作节30强作品」...

    原标题:支付宝微信扫码支付中间件「第二届立创商城电子制作节30强作品」 本作品为第二届立创商城电子制作节30强入围作品,作者立创社区ID:云逸Baby:转载请注明出处,未经允许不得用作商业用途.作品原 ...

  4. laravel5集成支付宝alipay扫码支付流程(Laravel 支付解决方案)

    laravel5集成支付宝alipay扫码支付流程(Laravel 支付解决方案) 参考文章: (1)laravel5集成支付宝alipay扫码支付流程(Laravel 支付解决方案) (2)http ...

  5. 基于thinkphp5.0和支付宝面对面扫码支付DEMO制作的扫码支付

    ​ 基于thinkphp5.0和支付宝面对面扫码支付DEMO制作的扫码支付 今天接口申请下来,下载了官方demo对着调试了一天,终于实现想要的功能,先看图 选择支付宝支付 跳出二维码弹窗 手机支付宝进 ...

  6. Java实现PC微信扫码支付

    Java实现PC微信扫码支付 做一个电商网站支付功能必不可少,那我们今天就来盘一盘微信支付. 微信支付官方网站 业务流程: 开发指引文档 支付服务开发前提准备: 1.SDK下载:SDK 2.利用外网穿 ...

  7. 微信和支付宝H5扫码支付开发记录

    微信和支付宝H5扫码支付开发记录 微信支付 支付宝支付 简单前端实现的一下方法,服务端方法未记录: 微信支付 微信流程步骤简介 1.获取用户code 2.拉起微信支付 支付宝支付 支付宝流程步骤简介: ...

  8. 如何用Java微信扫码实现签到_详解JAVA后端实现统一扫码支付:微信篇

    最近做完了一个项目,正好没事做,产品经理就给我安排了一个任务. 做一个像收钱吧这样可以统一扫码收钱的功能. 一开始并不知道是怎么实现的,咨询了好几个朋友,才知道大概的业务流程:先是开一个网页用来判断支 ...

  9. java 实时监控微信扫码支付,支付成功跳转到成功页面

    **原文链接:https://www.blog-china.cn/liuzaiqingshan/home/39/1510305872502 欢迎访问个人博客,分享更多技术码上中国博客(CodeChin ...

  10. 支付宝微信扫码支付调研

    一.支付宝扫码支付 1.1 系统流程说明 1.1.1 条码支付(被扫) 条码支付是支付宝给到线下传统行业的一种收款方式.商家使用扫码枪等条码识别设备扫描用户支付宝钱包上的条码/二维码,完成收款.用户仅 ...

最新文章

  1. Scala 深入浅出实战经典 第96讲:Akka第一个案例动手实战main方法实现中ActorSystem等代码详解...
  2. Java compiler level does not match解决方法
  3. [Python3网络爬虫开发实战] 1.7.1-Charles的安装
  4. 利用python进行数据分析 英文-如何学习和评价《利用python进行数据分析》这本书?...
  5. c语言程序设计主编张玉生教材答案,清华大学出版社-图书详情-《Visual Basic程序设计实验指导》...
  6. Odoo12 添加新项目安装后无法在菜单中看到链接的解决方案
  7. Eclipse Java EE的tomcat使用小结
  8. linux进程磁盘io监测,系统性能检测--磁盘io
  9. springmvc02,使用注解
  10. winform:關於画非客户区
  11. 计算机硬件人员专业知识技能,电子计算机(微机)装配调试员
  12. 利用RemoteJoy进行usb视频输出教程(无需IRshell)
  13. 中南大学c语言课程设计报告,中南大学 C++课程设计报告.doc
  14. 计算机整理碎片有用吗,电脑磁盘碎片整理有什么用?需要经常整理吗?
  15. mysql日期转季节_JavaScript_day02_15_查看一年四季变化案例说明
  16. 阿里云“网红“运维工程师白金:做一个平凡的圆梦人
  17. python处理adb截屏_《自拍教程38》Python_adb一键截屏
  18. python中prompt的意思_selenium+Python(alert 、confirm 、prompt 的处理)
  19. Java Socket正确读取数据姿势
  20. QT的Listwidget控件使用

热门文章

  1. 武汉互联网公司和生活成本
  2. MySQL百万数据插入
  3. Memory threshold for SAP CRM WebClient UI technical framework
  4. Niushop官网出新版 由内而外 玩转简约时尚风
  5. jsp酒店客房预订系统带前端
  6. iOS安装ipa文件
  7. 以太网结构框架的学习
  8. Fabric开发(三) Ubuntu20.04.1快速搭建Fabric1.4.3 (排雷版)
  9. 小米手机 Toast显示带应用名称问题解决方法
  10. 网络营销成功案例分析篇:NIKE网络营销案例