首页 > 编程语言 >SpringBoot集成微信支付(JAVA)

SpringBoot集成微信支付(JAVA)

时间:2024-04-06 13:32:03浏览次数:30  
标签:JAVA SpringBoot java 微信 request import com payment

微信支付(Java)

目录

微信支付(Java)

简介:

登录微信公众平台(JSAPI支付):

注意事项:

添加依赖:

application.yaml:

WeixinPayController:

PaymentService:

PaymentServiceImpl:

实体类PaymentJSAPI:


简介:

        Springboot项目集成微信支付(JSAPI),用于微信公众号对接支付功能。

登录微信支付(JSAPI支付)

        获取如下参数:

        商户号、商户API私钥路径、商户证书序列号、商户APIV3密钥、appId

注意事项:

        JDK版本建议11。

添加依赖:

<dependency>
    <groupId>com.github.wechatpay-apiv3</groupId>
    <artifactId>wechatpay-java</artifactId>
    <version>0.2.12</version>
</dependency>

application.yaml:

        添加微信支付相关配置。

weixin:
  merchantId: XXXXXX # 商户号
  privateKeyPath: /www/weixin/cert/apiclient_key.pem # 商户API私钥路径
  merchantSerialNumber: XXXXXXXXXXXXXXXXXXXXXXXXXXXX  #商户证书序列号
  apiV3Key: XXXXXX # 商户APIV3密钥
  appId: XXXXXX# 自己的AppId
  notifyUrl: http://localhost:${server.port}/weixin/payment/notify # 自定义回调地址

WeixinPayController:

        功能描述

  •                 发起支付;
  •                 获取签名;
  •                 成功回调(需自测)。
import com.alibaba.fastjson.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
import java.util.Map;

/**
 * 微信支付
 *
 */
@RequestMapping("weixin/payment")
@RestController
public class WeixinPayController {
    @Autowired
    private PaymentService paymentService;

    /**
     * 发起支付
     * @param payment
     * @return
     */
    @PostMapping("send")
    public String payment(@RequestBody PaymentJSAPI payment){
        return paymentService.payment(payment);
    }


    /**
     * 获取签名
     * @param jsonObject
     * @return
     */
    @PostMapping("sign")
    public String sign(@RequestBody JSONObject jsonObject) throws Exception {
        return paymentService.sign(jsonObject);
    }



}

PaymentService:

import com.alibaba.fastjson.JSONObject;

public interface PaymentService {
    /**
     * 发起支付
     *
     * @param payment
     * @return
     */
    String payment(PaymentJSAPI payment);

    /**
     * 生成签名
     *
     * @param jsonObject
     * @return
     */
    String sign(JSONObject  jsonObject) throws Exception;
}

PaymentServiceImpl:

import com.alibaba.fastjson.JSONObject;
import com.wechat.pay.java.service.payments.jsapi.JsapiService;
import com.wechat.pay.java.service.payments.jsapi.model.Amount;
import com.wechat.pay.java.service.payments.jsapi.model.Payer;
import com.wechat.pay.java.service.payments.jsapi.model.PrepayRequest;
import com.wechat.pay.java.service.payments.jsapi.model.PrepayResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Slf4j
@Service
public class PaymentServiceImpl  implements PaymentService {
    @Autowired
    private  JsapiService jsapiService;
    @Autowired
    private WeiXinConfig weiXinConfig;

    @Override
    public String payment(PaymentJSAPI payment) {
        PrepayRequest request = new PrepayRequest();
        Amount  amount = new Amount();
        amount.setTotal(weiXinConfig.amountVal);
        request.setAmount(amount);
        request.setAppid(weiXinConfig.appId);
        request.setMchid(weiXinConfig.merchantId);

        Payer payer = new Payer();
        payer.setOpenid(payment.getOpenid());
        request.setPayer(payer);
        request.setDescription(payment.getDescription());
        request.setNotifyUrl(weiXinConfig.notifyUrl);
        request.setOutTradeNo("trade_no_" + System.currentTimeMillis());  // 一个用户就一次
        // 调用下单方法,得到应答
        PrepayResponse response = jsapiService.prepay(request);
        log.info("----payment--response:{}---------", response);
        return response.getPrepayId();
    }

    @Override
    public String sign(JSONObject jsonObject) throws Exception {
        return weiXinConfig.sign(jsonObject.toJSONString());
    }

}

实体类PaymentJSAPI:

import lombok.Data;
import java.io.Serializable;

/**
 * 发起账单参数
 */
@Data
public class PaymentJSAPI implements Serializable {
    // 描述
    private String description;
    // 用户的openId
    private String openid;

}

后续我们会更新订单查询等功能。

标签:JAVA,SpringBoot,java,微信,request,import,com,payment
From: https://blog.csdn.net/qq_36507293/article/details/137426512

相关文章

  • SpringBoot集成微信支付(JAVA)
    微信支付(Java)目录微信支付(Java)简介:登录微信公众平台(JSAPI支付):注意事项:添加依赖:application.yaml:WeixinPayController:PaymentService:PaymentServiceImpl:实体类PaymentJSAPI:简介:        Springboot项目集成微信支付(JSAPI),用于微信公众号对接支付功能......
  • Java(1)——注解
    常用注解Java注解从Java1.5开始引入,注解就是代码中的特殊标记,告诉类要如何运作。注解的典型应用是:通过反射技术获得类中的注解,来决定如何运行类。注解可以标记在类、属性、方法、变量等,并且一个地方可以同时标记多个注解。先从一个简单的注解开始说起。classSuperClass{......
  • Go 实战|使用 Wails 构建轻量级的桌面应用:仿微信登录界面 Demo
    概述本文探讨Wails框架的使用,从搭建环境到开发,再到最终的构建打包,本项目源码GitHub地址:https://github.com/mazeyqian/go-run-wechat-demo前言Wails是一个跨平台桌面应用开发框架,他允许开发者利用Go的性能优势,并结合任何前端技术栈,如React、Vue或Svelte,来创建桌面应......
  • 2024年150道高频Java面试题(十八)
    35.List、Set、Map之间的区别是什么?List、Set和Map是Java中CollectionFramework中的三大接口,它们用于存储集合数据,但是它们之间有着明显的区别:List(列表):List是一个有序集合,它允许元素重复。它维护了元素插入的顺序,可以通过索引(基于0的整数)访问。List接......
  • springboot校园志愿者管理系统
    随着信息化时代的到来,管理系统都趋向于智能化、系统化,校园志愿者管理系统也不例外,但目前国内仍都使用人工管理,市场规模越来越大,同时信息量也越来越庞大,人工管理显然已无法应对时代的变化,而校园志愿者管理系统能很好地解决这一问题,轻松应对校园志愿者平时的工作,既能提高人力物力......
  • 游戏攻略|基于Springboot和vue的游戏分享平台系统设计与实现(源码+数据库+文档)
    游戏攻略分享平台目录基于Springboot的在线考试管理系统设计与实现一、前言二、系统设计三、系统功能设计 1、前台:2、后台5.2.1管理员功能模块四、数据库设计 五、核心代码 六、论文参考七、最新计算机毕设选题推荐八、源码获取:博主介绍:✌️大厂码农|毕设布道......
  • java计算机毕业设计(附源码)榆林学院学术成果申报与管理(ssm+mysql+maven+LW文档)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:榆林学院,位于陕西省的一所综合性高等学府,承载着培养高素质人才和推动地区科教发展的重要使命。随着国家对高等教育质量的持续关注和科研创新能力的不断提......
  • java计算机毕业设计(附源码)羽毛球馆场地管理系统(ssm+mysql+maven+LW文档)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:在当今社会,随着人们生活水平的提高和对健康生活方式的追求,体育运动逐渐成为人们日常生活的重要组成部分。羽毛球作为一项深受大众喜爱的运动项目,在全球范......
  • java5年经验要求是什么
    对于具有5年经验的Java开发人员,通常会有更高级的技术要求和期望。以下是一些常见的技术和能力要求:1.**深入理解Java语言和生态系统**:对Java语言的高级特性、JVM原理、Java生态系统(如Spring框架、Hibernate等)有深入理解,能够解决复杂的技术挑战。2.**系统架构设计和优化**:具......
  • Ueditor富文本回显word文档(doc和docx格式都支持)进行二次编辑,springboot后端
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档vue+ueditor+springboot,实现word文档上传编辑前言`前端导入word文档(doc和docx格式都支持),Ueditor富文本回显进行二次编辑,目前ueditor项目archived了,实现两种格式的相关材料相对稀缺。解决思路:1.上传word......