欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

2020-8-11 SpringBoot项目接入微信接口

程序员文章站 2022-06-28 18:23:36
...

首先讲一下接入接口的具体步骤:

1、注册一个微信支付

点我查看注册方法,在注册后可以获得下面三个参数,在第四步配置微信数据时需要用

2020-8-11 SpringBoot项目接入微信接口

2、下载Java对应的SDK

点我下载SDK

3、配置依赖

可以在下载的文件中找到pom文件,找到自己的依赖

2020-8-11 SpringBoot项目接入微信接口

<!-- 微信支付 -->
    <dependency>
      <groupId>com.github.wxpay</groupId>
      <artifactId>wxpay-sdk</artifactId>
      <version>0.0.3</version>
    </dependency>

4、配置微信数据

将下载好的sdk文件导入项目中,如下图的几个文件,在同一个文件夹下,FeiConfig为自己配置的

2020-8-11 SpringBoot项目接入微信接口

需要配置FeiConfig文件类,*** 为自己的配置

package github.wxpay.sdk;

import java.io.InputStream;

/*
    微信平台的相关配置

 */
public class FeiConfig extends WXPayConfig {

    //注册微信支付账号后获取
    @Override
    String getAppID() {
        return "***";
    }

    @Override
    String getMchID() {
        return "***";
    }

    @Override
    String getKey() {
        return "***";
    }

    @Override
    InputStream getCertStream() {
        return null;
    }

    @Override
    IWXPayDomain getWXPayDomain() {
        return new IWXPayDomain() {
            @Override
            public void report(String domain, long elapsedTimeMillis, Exception ex) {

            }

            @Override
            public DomainInfo getDomain(WXPayConfig config) {
                return new DomainInfo(WXPayConstants.DOMAIN_API, true);
            }
        };
    }


}

5、代码实现

我是写了一个工具类,在工具类中有生成二维码和查询订单状态的方法。但是生成二维码的方法需要自己将return的字符串转为二维码,自己可以百度一下,这种插件还是很多的。在生成二维码后,可以在前端写一个定时器不断查询订单状态,不过这就不属于本篇文章的内容了(手动狗头)

package com.fh.util;

import github.wxpay.sdk.FeiConfig;
import github.wxpay.sdk.WXPay;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

public class WXUtil {

    //私有化构造
    private WXUtil(){}

    //生成code_url  三个参数分别是订单描述、订单唯一的标识,可以是id、订单的支付金额
    public static String createCodeUrl(String body, String orderPay, String sumMoney) throws Exception {
        // 微信支付  natvie   商户生成二维码
        //配置配置信息
        FeiConfig config = new FeiConfig();
        //得到微信支付对象
        WXPay wxpay = new WXPay(config);
        //设置请求参数
        Map<String, String> data = new HashMap<String, String>();
        //对订单信息描述
        data.put("body", body);
        //String payId = System.currentTimeMillis()+"";
        //设置订单号 (保证唯一 )
        data.put("out_trade_no",orderPay);
        //设置币种
        data.put("fee_type", "CNY");
        SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddHHmmss");
        Date d=new Date();
        String dateStr = sdf.format(new Date(d.getTime() + 120000000));
        //设置二维码的失效时间
        data.put("time_expire", dateStr);
        //设置订单金额   单位分
        data.put("total_fee",sumMoney);
        data.put("notify_url", "http://www.example.com/wxpay/notify");
        //设置支付方式
        data.put("trade_type", "NATIVE");  // 此处指定为扫码支付
        // 统一下单
        Map<String, String> resp = wxpay.unifiedOrder(data);
        String codeUrl = resp.get("code_url");
        return codeUrl;
    }

    //查询订单状态
    public static String getOrderState(String orderPay) throws Exception {
        FeiConfig config = new FeiConfig();
        WXPay wxpay = new WXPay(config);
        Map<String, String> data = new HashMap<String, String>();
        data.put("out_trade_no",orderPay);
        // 查询支付状态
        Map<String, String> resp = wxpay.orderQuery(data);
        String state = resp.get("trade_state");
        return state;
    }
}

 

相关标签: Web应用程序