湖南营销型网站建设价格软装设计师是干什么的
2026/3/20 16:07:43 网站建设 项目流程
湖南营销型网站建设价格,软装设计师是干什么的,望野,wordpress主题安装路径1、支付宝开放平台操作 我们需要做内网穿透#xff0c;推荐使用 ngrok | API Gateway, Kubernetes Ingress, Webhook Gateway 详细接口参考API - 开放平台 进入 控制台首页 - 开放平台#xff0c;开通沙箱环境 支付宝公钥#xff0c;和你的秘钥点击查看就能看到 2、Spring…1、支付宝开放平台操作我们需要做内网穿透推荐使用 ngrok | API Gateway, Kubernetes Ingress, Webhook Gateway详细接口参考API - 开放平台进入 控制台首页 - 开放平台开通沙箱环境支付宝公钥和你的秘钥点击查看就能看到2、Springboot项目集成1、添加依赖添加支付宝sdk依赖和糊涂工具包dependency groupIdcom.alipay.sdk/groupId artifactIdalipay-sdk-java/artifactId version4.22.110.ALL/version /dependency dependency groupIdcn.hutool/groupId artifactIdhutool-all/artifactId version5.8.25/version /dependency2、配置文件添加alipay: # 应用ID app-id: 你的APPID # 商户私钥 merchant-private-key: 你的私钥 # 支付宝公钥 alipay-public-key: 支付宝公钥 # 网关地址 gateway-url: https://openapi.alipay.com/gateway.do # 回调地址需公网可访问 notify-url: https://your-domain.com/alipay/notify return-url: https://your-domain.com/alipay/return # 签名方式 sign-type: RSA2 charset: UTF-8 format: JSON3、代码实现配置类package com.jha.springcloudlearn.entity; import com.alipay.api.AlipayClient; import com.alipay.api.DefaultAlipayClient; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; Configuration public class AlipayConfig { Value(${alipay.app-id}) private String appId; Value(${alipay.merchant-private-key}) private String privateKey; Value(${alipay.alipay-public-key}) private String alipayPublicKey; Value(${alipay.gateway-url}) private String gatewayUrl; Value(${alipay.sign-type}) private String signType; Value(${alipay.charset}) private String charset; Value(${alipay.format}) private String format; Bean public AlipayClient alipayClient() { return new DefaultAlipayClient( gatewayUrl, appId, privateKey, format, charset, alipayPublicKey, signType ); } }支付服务类package com.jha.springcloudlearn.service.impl; import com.alipay.api.AlipayClient; import com.alipay.api.domain.AlipayTradePagePayModel; import com.alipay.api.request.AlipayTradePagePayRequest; import com.alipay.api.response.AlipayTradePagePayResponse; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.math.BigDecimal; Service public class AlipayService { Autowired private AlipayClient alipayClient; Value(${alipay.notify-url}) private String notifyUrl; Value(${alipay.return-url}) private String returnUrl; /** * 电脑网站支付 */ public String pagePay(AlipayOrder order) throws Exception { AlipayTradePagePayRequest request new AlipayTradePagePayRequest(); // 设置异步通知地址 request.setNotifyUrl(notifyUrl); // 设置同步通知地址 request.setReturnUrl(returnUrl); AlipayTradePagePayModel model new AlipayTradePagePayModel(); model.setOutTradeNo(order.getOutTradeNo()); model.setTotalAmount(order.getTotalAmount().toString()); model.setSubject(order.getSubject()); model.setBody(order.getBody()); model.setProductCode(FAST_INSTANT_TRADE_PAY); request.setBizModel(model); AlipayTradePagePayResponse response alipayClient.pageExecute(request); if (response.isSuccess()) { return response.getBody(); } else { throw new RuntimeException(支付宝支付调用失败); } } /** * 订单实体类 */ Data AllArgsConstructor NoArgsConstructor public static class AlipayOrder { private String outTradeNo; // 商户订单号 private BigDecimal totalAmount; // 订单金额 private String subject; // 订单标题 private String body; // 订单描述 } }支付控制器package com.jha.springcloudlearn.controller; import cn.hutool.json.JSONObject; import com.alipay.api.AlipayApiException; import com.alipay.api.internal.util.AlipaySignature; import com.alipay.api.request.AlipayTradeQueryRequest; import com.jha.springcloudlearn.service.impl.AlipayService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.Map; RestController RequestMapping(/alipay) public class AlipayController { Autowired private AlipayService alipayService; Value(${alipay.alipay-public-key}) private String alipayPublicKey; Value(${alipay.charset}) private String charset; Value(${alipay.sign-type}) private String signType; /** * 发起支付 */ PostMapping(/pay) public void pay(RequestBody AlipayService.AlipayOrder orderDTO, HttpServletResponse response) throws Exception { AlipayService.AlipayOrder order new AlipayService.AlipayOrder( orderDTO.getOutTradeNo(), orderDTO.getTotalAmount(), orderDTO.getSubject(), orderDTO.getBody() ); String form alipayService.pagePay(order); // 直接将表单输出到浏览器 response.setContentType(text/html;charsetUTF-8); response.getWriter().write(form); response.getWriter().flush(); response.getWriter().close(); } /** * 支付宝异步通知回调 */ PostMapping(/notify) public String notifyUrl(RequestParam MapString, String params) { try { // 验证签名 boolean signVerified AlipaySignature.rsaCheckV1( params, alipayPublicKey, charset, signType ); if (!signVerified) { return failure; } // 处理业务逻辑 String tradeStatus params.get(trade_status); String outTradeNo params.get(out_trade_no); String tradeNo params.get(trade_no); if (TRADE_SUCCESS.equals(tradeStatus) || TRADE_FINISHED.equals(tradeStatus)) { // 更新订单状态为已支付 return success; } return failure; } catch (Exception e) { return failure; } } /** * 支付成功同步回调 */ GetMapping(/return) public String returnUrl(RequestParam MapString, String params) { // 这里通常显示支付成功页面实际订单状态以异步通知为准 return 支付成功订单号 params.get(out_trade_no); } /** * 订单查询 */ GetMapping(/query) public String queryOrder(String outTradeNo) throws AlipayApiException { AlipayTradeQueryRequest request new AlipayTradeQueryRequest(); JSONObject bizContent new JSONObject(); bizContent.put(out_trade_no, outTradeNo); request.setBizContent(bizContent.toString()); return null; } }支付回调验证工具类package com.jha.springcloudlearn.controller; import com.alipay.api.AlipayApiException; import com.alipay.api.AlipayClient; import com.alipay.api.internal.util.AlipaySignature; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.util.Map; Component public class AlipayNotifyHandler { Value(${alipay.alipay-public-key}) private String alipayPublicKey; Value(${alipay.charset}) private String charset; Value(${alipay.sign-type}) private String signType; /** * 验证支付宝回调的签名 */ public boolean verifySignature(MapString, String params) { try { return AlipaySignature.rsaCheckV1( params, alipayPublicKey, charset, signType ); } catch (AlipayApiException e) { return false; } } }这样就能接入了支付宝了3、测试运行我们的项目然后使用接口工具进行测试1、获取表单得到的出参就是一个form表单正常来说由前端那边去做接受然后处理这边我们就自己把他放到html中去做后续支付操作2、构建html!-- 将返回的HTML代码保存为 .html 文件 -- !DOCTYPE html html head title支付宝支付/title /head body !-- 返回的form表单复制到下面并运行即可 -- /body /html3、支付流程打开html之后出现如下页面这里扫码支付暂时是不行的因为我们使用的是沙箱所以使用账号登录账号在如下图所示位置输入账户密码之后跳转到另一个支付页面输入支付密码之后进行确认付款即可然后就是跳转到成功支付的页面然后再调用我们的回调函数这样支付宝就接入成功了后续可以加入自己个性化的东西如订单操作等

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询