赞
踩
一、前期准备工作:
上篇博客配置的一些参数和文件Jar包 都要用到
微信支付需要小程序和商户绑定
APP绑定微信商户平台获取商户id(mchID)、
证书(商户后台下载)、
支付签名密钥(商户后台设置api密钥)、
退款签名密钥(商户后台设置api密钥ipv3)等
可以去微信官方文档那里查看怎么获取生成后台所需要的参数
官方文档:
支付异步回调通知:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_7&index=8
退款异步回调通知:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_16&index=11
二、支付流程:
个人理解:
微信支付需要提供三个接口 :
第一步是你的创建订单的动作
第二步前端确认用户支付的情况下 通过订单ID查询生成调用微信支付的参数 执行扣款动作
第三步微信支付成功后会自动调你提供给微信的回调地址
在回调操作里面修改订单状态 完成你支付成功后的后续动作。
PS:
支付退款的回调地址 必须是外网可以访问的
微信支付金额是分 支付宝是元
三、微信支付详细代码案例:
日期工具类:
import cn.njcool.common.enums.DateEnum; import cn.njcool.common.enums.NumberEnum; import org.apache.commons.lang3.StringUtils; import java.time.DayOfWeek; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.time.temporal.TemporalField; import java.time.temporal.WeekFields; import java.util.ArrayList; import java.util.List; /** * @Name: DateUtil * @Author: zhu * @Date: 2020-02-07 * @Description: 日期时间处理工具类 */ public class DateUtil { private static final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("yyyy-MM-dd"); private static final DateTimeFormatter DATE_TIME_FORMAT = DateTimeFormatter .ofPattern("yyyy-MM-dd HH:mm:ss"); private static final DateTimeFormatter NO_SPACE_DATE_TIME_FORMAT = DateTimeFormatter.ofPattern("yyyyMMddHHmmss"); private static final DateTimeFormatter DATE_TIME_WITH_HMS_FORMAT = DateTimeFormatter .ofPattern("HH:mm:ss"); public static String formatDateTime(LocalDateTime date, DateEnum dateEnum) { if (date != null) { switch (dateEnum) { case DATE: { return DATE_FORMAT.format(date); } case DATE_TIME: { return DATE_TIME_FORMAT.format(date); } case NO_SPACE_DATE_TIME: { return NO_SPACE_DATE_TIME_FORMAT.format(date); } case TIME_WITH_HMS: { return DATE_TIME_WITH_HMS_FORMAT.format(date); } } } return null; } public static LocalDateTime formatDateTime(String dateStr) { if (StringUtils.isNotEmpty(dateStr)) { if (dateStr.length() == DateEnum.DATE.getValue()) { dateStr += " 00:00:00"; return LocalDateTime.parse(dateStr, DATE_TIME_FORMAT); } else if (dateStr.length() == DateEnum.DATE_TIME.getValue()) { return LocalDateTime.parse(dateStr, DATE_TIME_FORMAT); } else if (dateStr.length() == DateEnum.NO_SPACE_DATE_TIME.getValue()) { return LocalDateTime.parse(dateStr, NO_SPACE_DATE_TIME_FORMAT); } else if (dateStr.length() == DateEnum.TIME.getValue()) { dateStr = "2020-01-01 " + dateStr + ":00"; return LocalDateTime.parse(dateStr, DATE_TIME_FORMAT); } } return null; } public static List<String> getWeekDateList(int week, String endDate, List<String> excludeDateList) { LocalDateTime now = LocalDateTime.now(); List<String> resultList = new ArrayList<>(); TemporalField temporalField = WeekFields.of(DayOfWeek.of(1), 1).dayOfWeek(); LocalDateTime localDateTime = now.with(temporalField, week); if (localDateTime.isBefore(now)) { localDateTime = localDateTime.plusWeeks(1); } while (true) { String localDateTimeStr = formatDateTime(localDateTime, DateEnum.DATE); if (localDateTimeStr.compareTo(endDate) > NumberEnum.ZERO.getValue()) { break; } if (!excludeDateList.contains(localDateTimeStr)) { resultList
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。