用cms建网站,太原营销型网站建设公司,wordpress虚拟支付插件,oa软件怎么使用目录 1. 配置沙箱应用环境2. 配置springboot项目1. 引入依赖2. 配置文件注册下载ngrok 3. 创建支付宝支付服务类4. 支付界面模板5. 控制类实现支付6. 测试 1. 配置沙箱应用环境 使用支付宝账号登录到开放平台控制台。 使用支付宝登录后#xff0c;看到以下页面#xff0c;下… 目录 1. 配置沙箱应用环境2. 配置springboot项目1. 引入依赖2. 配置文件注册下载ngrok 3. 创建支付宝支付服务类4. 支付界面模板5. 控制类实现支付6. 测试 1. 配置沙箱应用环境 使用支付宝账号登录到开放平台控制台。 使用支付宝登录后看到以下页面下滑找到 开发工具推荐-》沙箱。 查看到沙箱应用信息点击查看可以查看到沙箱应用的appidapp私钥支付宝公钥。然后配置接口加签方式使用系统默认密钥。 查看沙箱账号信息可以看到商家/买家信息等。
2. 配置springboot项目
1. 引入依赖 !-- 支付宝SDK的依赖--dependencygroupIdcom.alipay.sdk/groupIdartifactIdalipay-easysdk/artifactIdversion2.2.0/version/dependency2. 配置文件 application.yml
# 支付宝配置
alipay:
# 支付宝应用id识别应用appId: your_app_id
# 应用私钥用于对请求进行签名确保请求的真实性和完整性appPrivateKey: your_app_private_key
# 支付宝的公钥用于验证支付宝返回的数据的签名确保数据的真实性和完整性alipayPublicKey: your_alipay_public_key
# 支付宝支付结果通知的回调地址当支付完成后支付宝会向这个地址发送支付结果通知。notifyUrl: your_notify_url
# 支付宝沙箱网关地址开发者在沙箱环境调用 OpenAPI 发送 http(s) 请求的目标地址需配置在AlipayClient中gatewayUrl: https://openapi-sandbox.dl.alipaydev.com/gateway.doapplication.properties
alipay.appIdyour_app_id
alipay.appPrivateKeyyour_app_private_key
alipay.alipayPublicKeyyour_alipay_public_key
alipay.notifyUrlyour_notify_url
alipay.gatewayUrlhttps://openapi-sandbox.dl.alipaydev.com/gateway.do同时需要在支付宝开放平台配置回调地址。 注意配置回调地址notifyUrl为本地测试环境时需要使用内网穿透内网穿透是一种技术它允许外部网络如互联网上的用户访问位于内部网络例如家庭或公司局域网中的设备或服务。如ngrok将本地服务器映射到外网再配置回调地址为外网地址。 下面以ngrok为例实现内网穿透。
注册下载ngrok
访问ngrok官网注册用户。 邮箱认证后跳转到下载页面直接跳过即可。 下载完成后解压双击ngrok.exe使用下述命令输入token即可使用下载地址。
ngrok config add-authtoken your_token使用命令行启动ngrok监听本地8080端口。
ngrok http http://localhost:8080命令成功执行后会出现以下内容其中包含外网地址用于配置回调地址。
3. 创建支付宝支付服务类
Data
public class AliPay {private String traceNo;// 商户订单号private double totalAmount;// 支付总金额private String subject;// 商品名称private String alipayTraceNo;// 支付宝流水号
}4. 支付界面模板 支付跳转界面
!DOCTYPE html
html xmlns:thhttp://www.thymeleaf.org
headtitle支付二维码/titlemeta http-equivContent-Type contenttext/html; charsetUTF-8/
/head
body
!--跳转界面--
h1支付二维码/h1
p订单号: span th:text${traceNo}/span/p
p支付金额: span th:text${totalAmount}/span/p
p商品名称: span th:text${subject}/span/p
div th:utext${qrCode}/div
/body
/html异常界面
!DOCTYPE html
html langen xmlns:thhttp://www.thymeleaf.org
headmeta charsetUTF-8titleTitle/title
/head
bodyh1这是error 页面/h1p th:text${error}/p
/body
/html这里使用了thymeleaf模板需要导入相关的依赖。
!-- thymeleaf模板引擎依赖--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-thymeleaf/artifactId/dependency5. 控制类实现支付
Controller
RequestMapping(alipay)
public class AliPayController {Value(${alipay.appId})private String appId;Value(${alipay.appPrivateKey})private String appPrivateKey;Value(${alipay.alipayPublicKey})private String alipayPublicKey;Value(${alipay.gatewayUrl})private String gatewayUrl;Value(${alipay.notifyUrl})private String notifyUrl;PostMapping(/pay)public String pay(AliPay aliPay,Model model) {// 使用必要的凭证和配置初始化一个AlipayClient对象AlipayClient alipayClient new DefaultAlipayClient(gatewayUrl, appId, appPrivateKey,json, UTF-8, alipayPublicKey, RSA2);// 创建一个AlipayTradePagePayRequest对象用于封装支付请求参数AlipayTradePagePayRequest request new AlipayTradePagePayRequest();// 设置异步通知的通知urlrequest.setNotifyUrl(notifyUrl);// 设置业务参数这里是JSON格式 包括订单号out_trade_no、支付金额total_amount、商品名称subject和产品代码product_code。request.setBizContent({ \out_trade_no\:\ aliPay.getTraceNo() \, \total_amount\:\ aliPay.getTotalAmount() \, \subject\:\ aliPay.getSubject() \, \product_code\:\FAST_INSTANT_TRADE_PAY\ });try {// 调用execute方法发送请求并获取响应AlipayTradePagePayResponse response alipayClient.pageExecute(request);// 判断是否调用成功if (response.isSuccess()) {System.out.println(response.getBody());model.addAttribute(qrCode, response.getBody());model.addAttribute(traceNo, aliPay.getTraceNo());model.addAttribute(totalAmount, aliPay.getTotalAmount());model.addAttribute(subject, aliPay.getSubject());return pay;} else {model.addAttribute(error, 支付请求失败 response.getMsg());return error;}} catch (AlipayApiException e) {model.addAttribute(error, 调用支付宝接口异常 e.getMessage());return error;}}
}6. 测试 在浏览器中使用以下html页面进行测试。
!DOCTYPE html
html
headtitle支付测试/title
/head
bodyform actionhttp://localhost:7070/alipay/pay methodpostlabel forsubject交易标题:/labelinput typetext idsubject namesubjectbrbrlabel fortraceNo订单号:/labelinput typetext idtraceNo nametraceNobrbrlabel fortotalAmount支付金额:/labelinput typetext idtotalAmount nametotalAmountbrbrinput typesubmit value支付/form
/body
/html输入订单号、交易标题、支付金额点击支付跳转到跳转界面。 进入支付宝支付页面输入用户名和密码完成支付。 链接
支付宝文档链接https://opendocs.alipay.com/open/203/105285