企微自建应用获取收款流水

  1. 目录

    1.背景简介:

    2.认证企业主体

    2.1 认证企业主体,根据指引上传相关资料(认证收费300-3000不等)

     3.开通企微对外收款功能

     4.创建企业自建应用

     4.1通过企微管理后台进行自建应用创建

    5.自建应用授权

    5.1设置可信域名

     5.2配置可信ip

     6.对外收款应用授权

    6.1对外收款授权,(注意企微天坑操作)

    6.2 如果6.1没有配置 你的api 接口就会报各种异常

    7.postman 进行demo调用

    7.3获取access_token

    7.2获取对外收款数据

    8.springboot 项目调用企微数据 demo



    1.背景简介:

 通过企业微信开通对外收款功能,创建自建应用 进行相关api授权以及可信域名效验,然后通过springboot 项目调用企微open API抓取收款记录!以及其他数据...

以下内容都是博主多次踩坑 精心总结,给第一次对接企微api 的小伙伴绝对能提供很大的帮助,MD 我踩坑整整一周才弄通整体流程..还有一定要按照博主指引步骤操作,否则你会遇到各式各样的问题.话不多说直接上图)

企微管理后台地址https://work.weixin.qq.com/wework_admin/loginpage_wx企业微信-开发者中心https://developer.work.weixin.qq.com/document/path/90664

2.认证企业主体

2.1 认证企业主体,根据指引上传相关资料(认证收费300-3000不等)

 

 

 3.开通企微对外收款功能

3.1 申请开通对外收款功能,根据指引步骤提交相关资料

提交完成之后 进行最后一步对公账号验证

开通成功之后,在企微工作台可以看到相关功能

 4.创建企业自建应用

 4.1通过企微管理后台进行自建应用创建

4.2 查看自建应用的secret 后面调用api 时会用到,会把secret 发送到企微app消息框内进行查看

 

5.自建应用授权

5.1设置可信域名

注意这个必须要授权 否则后面调用API 会一直报 48002 或者60020的 异常(没有调用权限或者没有可信ip 等...),可信域名必须需要备案注册,而且必须的和当前企业主体一致,否则会效验失败.. 这步骤如果没有成功,后续是无法进行下去的....

需要在域名服务器上上传归属认证文件,否则也不会效验成功 

 

 5.2配置可信ip

可信ip就是后期需要调用api的服务器ip,或者是你本地的公网ip

 5.3授权应用可见范围

 6.对外收款应用授权

6.1对外收款授权,(注意企微天坑操作)

 点击api 按钮,进行应用授权(MD 博主之前不知道这块有个授权功能,直接去调用的api ,然后就是各种获取不到数据,40082 60020 一堆异常!

然后各种看文档 提工单,翻社区 ...想破了脑袋都不知道 这块还有这么一个步骤... 窝草..了个DJ...真是扑街...

6.2 如果6.1没有配置 你的api 接口就会报各种异常

7.postman 进行demo调用

7.1获取access_token

参数说明:

corpid  :企微管理后台 >>> 我的企业 

corpsecret: 4.2步骤获取的

参数必须说明
corpid企业ID,获取方式参考:术语说明-corpid
corpsecret应用的凭证密钥,注意应用需要是启用状态,获取方式参考:术语说明-secret

7.2获取对外收款数据

 

 好,到这就表示企微自建应用 获取api 数据已完成!

8.springboot 项目调用企微数据 demo

demo 仅供参数,网上源码一堆,这块非小白伙伴就不用在往下继续看了...


import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;

import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.client.utils.URIBuilder;
import org.springblade.common.domain.Result;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

/**
 * @title: TestController
 * @projectName zhimei
 * @description: TODO
 * @author zpw
 * @date 2023/7/29
 */
@RestController
@Slf4j
public class TestController {


	@PostMapping("/wecom/get_bill_list")
	public Result audiencePackageCreate(
		@RequestParam("access_token") String access_token,
		@RequestBody JSONObject json) {
		Map<String, Object> param = new HashMap<>();
		param.put("access_token", access_token);
		JSONObject jsonObject=null;
		try {
			 jsonObject = okHttpClient(param, json.toJSONString(), null, "POST",
				"https://qyapi.weixin.qq.com/cgi-bin/externalpay/get_bill_list", "");
			log.info(jsonObject.toJSONString());
		} catch (Exception e) {
			e.printStackTrace();
		}

		return Result.buildResult(jsonObject);

	}

	public static JSONObject okHttpClient(Map<String, Object> param, String jsonStr, String access_token, String method, String host, String urls)
		throws URISyntaxException, IOException {
		OkHttpClient client = new OkHttpClient().newBuilder().build();
		URIBuilder ub = new URIBuilder(host + urls);

		if (MapUtils.isNotEmpty(param)) {
			param.forEach((k, v) -> {
				ub.addParameter(k, v instanceof String ? (String) v : param.get(k).toString());
			});
		}

		URL url = ub.build().toURL();

		okhttp3.RequestBody body = null;
		if (StringUtils.isNotBlank(jsonStr)) {
			body = okhttp3.RequestBody.create(MediaType.parse("application/json"), jsonStr);
		}

		okhttp3.Request request = new Request.Builder()
			.url(url)
			.method(method, body)
			//	.addHeader("Access-Token", access_token)
			.build();
		Response response = client.newCall(request).execute();
		return JSONObject.parseObject(response.body().string());
	}
}

后续其他功能还在开发中,有时间的情况下,会把服务商开发流程给分享给在座的所有小伙伴们...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值