以上可以获取到微信公众号的appid和商户号的mchid
https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay6_0.shtml
微信提供了微信支付平台证书下载工具,根据需要的商户号和公司名称下载证书(发红包/企业付款/退款等操作需要用到微信支付API证书)
以上可获得证书
登录微信支付商户平台,进入【账户中心】->【账户设置】->【API安全】->【APIv3密钥】中设置
以上可获得api秘钥和apiv3秘钥
注:项目的所有实现基于IJpay源码的IJPay-Demo-SpringBoot项目
创建cert文件,将下载的三个证书文件放到cert下面
以下附上我项目中已经应用到生产环境的依赖(包含eureka,oauth2等)
<dependencies>
<dependency>
<groupId>org.springframework.security.oauth</groupId>
<artifactId>spring-security-oauth2</artifactId>
<version>2.3.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.1.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.1.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.1.4.RELEASE</version>
</dependency>
<!-- eureka -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
<!-- sqlserver -->
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc4</artifactId>
<version>4.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/libs/sqljdbc4-4.0.jar</systemPath>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-dts</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>com.dachao.parameter</groupId>
<artifactId>parameter</artifactId>
<version>1.0.1-SNAPSHOT</version>
</dependency>
<!-- // 扩展包-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-extension</artifactId>
<version>3.2.0</version>
</dependency>
<!-- druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.16</version>
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!--SpringBoot集成redis依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-redis</artifactId>
<version>1.3.8.RELEASE</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<!-- IJPay -->
<dependency>
<groupId>com.github.javen205</groupId>
<artifactId>IJPay-All</artifactId>
<version>${ijapy.version}</version>
</dependency>
<dependency>
<groupId>com.github.xkzhangsan</groupId>
<artifactId>xk-time</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.7</version>
</dependency>
<dependency>
<groupId>com.youxuewang</groupId>
<artifactId>yxwApi</artifactId>
<version>1.1.0-SNAPSHOT</version>
</dependency>
<!-- hutool工具 -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.2.5</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.51</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.51</version>
</dependency>
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier><!-- jdk版本 -->
</dependency>
</dependencies>
https://gitee.com/javen205/IJPay
可以下载源码读一下,了解一下实现原理,封装了调用微信的api,需要下载,从源码中粘一部分代码进行修改
先完成准备工作,将源码IJPay-Demo-SpringBoot中的wxpay_v3.properties放到自己项目中的resources下
domain为微信已经授权的域名,详情请参考官方文档微信支付开发文档
v3.appId=公众号id
v3.keyPath=key.pem(resources文件下cert该文件的绝对路径,建议本地完成以后,放在服务器文件夹下访问)
v3.certPath=cert.pem (如上)
v3.certP12Path=cert.p12(如上)
v3.platformCertPath=wx_cert.pem(调用 WxPayV3Controller 中的 get接口生成)
v3.mchId=商户id
v3.apiKey3= 自定义 apiv3 秘钥
v3.apiKey= 自定义 apiv 秘钥
v3.domain= 微信授权域名
将以上拿到的appid,mchid等一些数据配置在这里,将WxPayV3Bean拿过来
将源码下的com.ijpay.demo.controller.wxpay.WxPayV3Controller文件Copy到自己的项目下,配置依赖使项目运行
调用get方法生成platformCert.pem文件。
JSAPI支付是指商户通过调用微信支付提供的JSAPI接口,在支付场景中调起微信支付模块完成收款。
随便取一个openid调用项目下/v3/jsApiPay接口
返回结果为官方文档(jaspi下单)发描述返回一下结果
以下为我的生产环境自己调整的返回结果。
这个接口返回的数据可以让前台调用唤起支付jsapi唤起支付
商户Native支付下单接口,微信后台系统返回链接参数code_url,商户后台系统将code_url值生成二维码图片,用户使用微信客户端扫码后发起支付。
调用v3/nativePay接口
按照官方文档描述只要返回以下信息,native接口即调用成功
以下为我的生产环境自己调整的返回结果。
完结撒花,所有的支付都可以按照这个逻辑来
IJpay包含了微信支付,京东支付,支付宝支付等一系列支付。