当前位置: 首页 > wzjs >正文

欢迎进入中国建设银行网站站长工具seo综合查询源码

欢迎进入中国建设银行网站,站长工具seo综合查询源码,企业营销型网站建设费用,北京做网站男生工资Spring Boot MyBatis 集成支付宝支付流程 核心流程 商户系统生成订单调用支付宝创建预支付订单用户跳转支付宝完成支付支付宝异步通知支付结果商户处理支付结果更新订单状态支付宝同步跳转回商户页面 代码实现示例&#xff08;电脑网站支付&#xff09; 1. 添加依赖 <!…

Spring Boot + MyBatis 集成支付宝支付流程

核心流程
  1. 商户系统生成订单
  2. 调用支付宝创建预支付订单
  3. 用户跳转支付宝完成支付
  4. 支付宝异步通知支付结果
  5. 商户处理支付结果更新订单状态
  6. 支付宝同步跳转回商户页面

代码实现示例(电脑网站支付)

1. 添加依赖
<!-- pom.xml -->
<dependencies><!-- Spring Boot Web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- MyBatis & MySQL --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!-- 支付宝SDK --><dependency><groupId>com.alipay.sdk</groupId><artifactId>alipay-sdk-java</artifactId><version>4.35.0.ALL</version></dependency><!-- Lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency>
</dependencies>
2. 支付宝配置类
@Configuration
public class AlipayConfig {@Value("${alipay.app_id}")private String appId;@Value("${alipay.merchant_private_key}")private String merchantPrivateKey;@Value("${alipay.alipay_public_key}")private String alipayPublicKey;@Value("${alipay.notify_url}")private String notifyUrl;@Value("${alipay.return_url}")private String returnUrl;@Value("${alipay.gateway_url}")private String gatewayUrl;@Value("${alipay.sign_type}")private String signType;@Value("${alipay.charset}")private String charset;@Beanpublic AlipayClient alipayClient() {return new DefaultAlipayClient(gatewayUrl,appId,merchantPrivateKey,"json",charset,alipayPublicKey,signType);}
}
3. 实体类和Mapper
// 订单实体
@Data
public class Order {private Long id;private String orderNo;   // 商户订单号private BigDecimal amount;// 支付金额private Integer status;   // 0-待支付, 1-已支付private LocalDateTime createTime;
}// MyBatis Mapper
@Mapper
public interface OrderMapper {@Insert("INSERT INTO orders(order_no, amount, status, create_time) " +"VALUES(#{orderNo}, #{amount}, 0, NOW())")@Options(useGeneratedKeys = true, keyProperty = "id")void insert(Order order);@Update("UPDATE orders SET status = #{status} WHERE order_no = #{orderNo}")void updateStatus(@Param("orderNo") String orderNo, @Param("status") int status);
}
4. 支付服务类
@Service
public class PayService {@Autowired private AlipayClient alipayClient;@Autowired private OrderMapper orderMapper;@Value("${alipay.return_url}") private String returnUrl;@Value("${alipay.notify_url}") private String notifyUrl;// 创建支付订单public String createPayOrder(Order order) throws AlipayApiException {orderMapper.insert(order); // 保存订单到数据库AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();request.setReturnUrl(returnUrl);request.setNotifyUrl(notifyUrl);// 构造业务参数JSONObject bizContent = new JSONObject();bizContent.put("out_trade_no", order.getOrderNo());bizContent.put("total_amount", order.getAmount());bizContent.put("subject", "商品支付");bizContent.put("product_code", "FAST_INSTANT_TRADE_PAY"); // 电脑网站支付request.setBizContent(bizContent.toString());return alipayClient.pageExecute(request).getBody();}// 处理异步通知public boolean handleNotify(Map<String, String> params) throws AlipayApiException {// 1. 验证签名boolean signVerified = AlipaySignature.rsaCheckV1(params,alipayPublicKey,  // 注入支付宝公钥charset,signType);if (!signVerified) return false;// 2. 验证交易状态String tradeStatus = params.get("trade_status");if (!"TRADE_SUCCESS".equals(tradeStatus)) return false;// 3. 更新订单状态String orderNo = params.get("out_trade_no");orderMapper.updateStatus(orderNo, 1); // 更新为已支付return true;}
}
5. 控制器
@RestController
@RequestMapping("/pay")
public class PayController {@Autowired private PayService payService;// 创建支付订单@PostMapping("/create")public String createOrder(@RequestParam BigDecimal amount) throws AlipayApiException {Order order = new Order();order.setOrderNo(UUID.randomUUID().toString().replace("-", ""));order.setAmount(amount);return payService.createPayOrder(order); // 返回支付页面表单}// 支付宝异步通知(需公网可访问)@PostMapping("/notify")public String alipayNotify(HttpServletRequest request) throws UnsupportedEncodingException, AlipayApiException {Map<String, String> params = parseRequestParams(request);boolean success = payService.handleNotify(params);return success ? "success" : "failure"; // 通知支付宝处理结果}// 支付宝同步跳转@GetMapping("/return")public String alipayReturn(HttpServletRequest request) {// 简单展示支付结果(实际需要验签和状态检查)return "支付完成!订单号:" + request.getParameter("out_trade_no");}// 解析请求参数private Map<String, String> parseRequestParams(HttpServletRequest request) {// 转换参数Map(参考支付宝示例代码)}
}
6. 配置文件
# application.properties
# 支付宝配置
alipay.app_id=2021000123456789
alipay.merchant_private_key=MIIEvQIBADANB...
alipay.alipay_public_key=MIIBIjANBgkq...
alipay.notify_url=http://your-domain.com/pay/notify
alipay.return_url=http://your-domain.com/pay/return
alipay.gateway_url=https://openapi.alipay.com/gateway.do
alipay.sign_type=RSA2
alipay.charset=UTF-8# MySQL配置
spring.datasource.url=jdbc:mysql://localhost:3306/alipay_demo
spring.datasource.username=root
spring.datasource.password=123456

关键流程说明

  1. 生成商户订单

    • 生成唯一订单号(推荐雪花算法)
    • 保存订单到数据库(状态=待支付)
  2. 调用支付宝接口

    • 使用 AlipayTradePagePayRequest 构建请求
    • 关键参数:订单号、金额、支付标题、回调地址
  3. 接收异步通知

    • 必须验证签名(防止伪造请求)
    • 检查 trade_status 是否为 TRADE_SUCCESS
    • 更新订单状态(注意处理幂等性)
  4. 安全注意事项

    • 支付金额需与订单金额比对(防止金额篡改)
    • 敏感操作记录日志
    • 异步通知处理需要保证幂等性
  5. 扩展功能

    • 订单超时关闭:定时任务扫描未支付订单
    • 支付结果查询:通过 trade_no 调用支付宝查询接口
    • 退款功能:使用 AlipayTradeRefundRequest

提示:实际开发中需要:

  1. 替换为正式支付宝账户
  2. 配置公网可访问的域名
  3. 添加完整的错误处理
  4. 实现参数解析工具方法
  5. 添加数据库事务管理
http://www.dtcms.com/wzjs/191320.html

相关文章:

  • 免费的外网连接器北京seo排名外包
  • 合江网站建设广东省白云区
  • 邯郸做移动网站报价搜索引擎营销分析
  • 正在进入一站式服务平台镇江网站seo
  • 什么叫网站收录百度seo排名优化软件
  • 智加设计简述搜索引擎优化的方法
  • 帮别人做网站服务器南京seo代理
  • 北京网站建设方案书培训机构是干什么的
  • 上海网站建设永灿14年品牌百度指数排名明星
  • 检察门户网站 建设意义百度关键词搜索指数查询
  • 做算命网站网站建设案例
  • 可信网站 quot 验证能防范哪些安全.广西壮族自治区免费百度推广
  • 网站utf8乱码微营销官网
  • 做网站为什么要公安局备案最全磁力搜索引擎
  • 北京网站制作百度推广关键词排名代发
  • 南宁网站建设 超博网络百度广告联盟一个月能赚多少
  • 做物流的网站都有什么风险网络营销课程大概学什么内容
  • 网站构建代码模板seo学堂
  • 十大必做调查网站营销网页
  • 郑州制作网站设计免费自助建站
  • 怀远网站建设哪家好培训心得体会万能模板
  • 高端的网站开发公司电子商务网站设计方案
  • 西安网站制作sxyun百度一下百度搜索网站
  • 博学网站建设公司百度关键词优化首选667seo
  • php是用来做网站的吗如何搜索网页关键词
  • 网站建设开发软件seo推广优化工具
  • 官方网站模板网络商城应该如何推广
  • 做网站的知识德州百度推广公司
  • 安徽省建设质量安全协会网站友情链接站长平台
  • 虹口区网站建设什么推广方法是有效果的