IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 【微信开发】SpringBoot 集成微信小程序支付 -> 正文阅读

[移动开发]【微信开发】SpringBoot 集成微信小程序支付

【微信开发】SpringBoot 集成微信小程序支付

在上一篇文章的基础上,实现小程序支付就很简单了,直接对接支付的接口,以及前端怎么唤起微信小程序的支付就OK了

1、SprinBoot 后端

增加controller两个方法,一个创建订单,一个支付成功的回调

	@ApiOperation("统一下单")
	@PostMapping("createOrder")
	public AjaxResult createOrder(@RequestBody OrderInfo entity) {
		return weiXinService.createOrder(entity);
	}

	@ApiOperation("支付回调")
	@RequestMapping("notifyUrl")
	public String notifyUrl() {
		return weiXinService.notifyUrl();
	}

service方法照样实现

	/**
	 * 统一下单接口
	 *
	 * @param entity
	 * @return
	 */
	AjaxResult createOrder(OrderInfo entity);

	/**
	 * 支付回调
	 *
	 * @return
	 */
	String notifyUrl();

service两个方法的实现类

	@Override
	public AjaxResult createOrder(OrderInfo entity) {
		try {
			WxPayUnifiedOrderRequest orderRequest = new WxPayUnifiedOrderRequest();
			orderRequest.setSignType(WxPayConstants.SignType.MD5);
			orderRequest.setBody("Tellsea科技");
			orderRequest.setOutTradeNo(UUID.randomUUID().toString().substring(0, 32));
			orderRequest.setTradeType(WxPayConstants.TradeType.JSAPI);
			orderRequest.setTotalFee(BaseWxPayRequest.yuanToFen(entity.getMoney()));
			orderRequest.setOpenid(entity.getOpenId());
			orderRequest.setSpbillCreateIp(ServletUtils.getClientIP());
			orderRequest.setNotifyUrl(wxPayProperties.getNotifyUrl());
			Object order = wxPayService.createOrder(orderRequest);
			log.error("下单成功:{}", order.toString());
			return AjaxResult.success("下单成功", JSON.toJSONString(order));
		} catch (WxPayException e) {
			log.error("下单失败:{}", e.toString());
			return AjaxResult.error("下单失败");
		}
	}

	@Override
	public String notifyUrl() {
		try {
			HttpServletRequest request = ServletUtils.getRequest();
			HttpServletResponse response = ServletUtils.getResponse();
			String xmlResult = IOUtils.toString(request.getInputStream(), request.getCharacterEncoding());
			WxPayOrderNotifyResult result = wxPayService.parseOrderNotifyResult(xmlResult);
			// 加入自己处理订单的业务逻辑,需要判断订单是否已经支付过,否则可能会重复调用
			String orderId = result.getOutTradeNo();
			String tradeNo = result.getTransactionId();
			String totalFee = BaseWxPayResult.fenToYuan(result.getTotalFee());

			return WxPayNotifyResponse.success("处理成功!");
		} catch (Exception e) {
			log.error("微信回调结果异常,异常原因{}", e.getMessage());
			return WxPayNotifyResponse.fail(e.getMessage());
		}
	}

模拟订单参数

import lombok.Data;

/**
 * 模拟订单参数
 *
 * @author Tellsea
 * @date 2021/11/11
 */
@Data
public class OrderInfo {

	private String openId;

	private String money;
}

2、Uniapp 前端

(1)唤起支付

在第一个篇集成小程序登录的文章中,该有的所有配置都有了,这里只需要通过统一下单接口返回的参数,唤起支付即可

let param = {
    openId: '登录成功获取的openId',
    money: 1
};
that.$u.post('/au/weiXin/createOrder', param).then(res => {
    let data = JSON.parse(res.data);
    wx.requestPayment({
        timeStamp: data.timeStamp,
        nonceStr: data.nonceStr,
        package: data.packageValue,
        signType: data.signType,
        paySign: data.paySign
    });
});

(2)测试案例

这里微信开发者工具中的测试样子
在这里插入图片描述

微信公众号

每天Get一个小技巧

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-11-12 19:42:39  更:2021-11-12 19:42:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:05:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码