com.wechat.pay.java.service.profitsharing.ProfitsharingService Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of wechatpay-java Show documentation
Show all versions of wechatpay-java Show documentation
A Java SDK for WeChat Pay APIv3
// Copyright 2021 Tencent Inc. All rights reserved.
//
// 微信支付分账API
//
// 微信支付分账API
//
// API version: 0.0.9
// Code generated by WechatPay APIv3 Generator based on [OpenAPI
// Generator](https://openapi-generator.tech); DO NOT EDIT.
package com.wechat.pay.java.service.profitsharing;
import static com.wechat.pay.java.core.http.UrlEncoder.urlEncode;
import static com.wechat.pay.java.core.util.GsonUtil.toJson;
import static java.util.Objects.requireNonNull;
import com.wechat.pay.java.core.Config;
import com.wechat.pay.java.core.cipher.PrivacyDecryptor;
import com.wechat.pay.java.core.cipher.PrivacyEncryptor;
import com.wechat.pay.java.core.exception.HttpException;
import com.wechat.pay.java.core.exception.MalformedMessageException;
import com.wechat.pay.java.core.exception.ServiceException;
import com.wechat.pay.java.core.exception.ValidationException;
import com.wechat.pay.java.core.http.Constant;
import com.wechat.pay.java.core.http.DefaultHttpClientBuilder;
import com.wechat.pay.java.core.http.HostName;
import com.wechat.pay.java.core.http.HttpClient;
import com.wechat.pay.java.core.http.HttpHeaders;
import com.wechat.pay.java.core.http.HttpMethod;
import com.wechat.pay.java.core.http.HttpRequest;
import com.wechat.pay.java.core.http.HttpResponse;
import com.wechat.pay.java.core.http.JsonRequestBody;
import com.wechat.pay.java.core.http.MediaType;
import com.wechat.pay.java.core.http.QueryParameter;
import com.wechat.pay.java.core.http.RequestBody;
import com.wechat.pay.java.service.profitsharing.model.AddReceiverRequest;
import com.wechat.pay.java.service.profitsharing.model.AddReceiverResponse;
import com.wechat.pay.java.service.profitsharing.model.CreateOrderRequest;
import com.wechat.pay.java.service.profitsharing.model.CreateReturnOrderRequest;
import com.wechat.pay.java.service.profitsharing.model.DeleteReceiverRequest;
import com.wechat.pay.java.service.profitsharing.model.DeleteReceiverResponse;
import com.wechat.pay.java.service.profitsharing.model.OrdersEntity;
import com.wechat.pay.java.service.profitsharing.model.QueryMerchantRatioRequest;
import com.wechat.pay.java.service.profitsharing.model.QueryMerchantRatioResponse;
import com.wechat.pay.java.service.profitsharing.model.QueryOrderAmountRequest;
import com.wechat.pay.java.service.profitsharing.model.QueryOrderAmountResponse;
import com.wechat.pay.java.service.profitsharing.model.QueryOrderRequest;
import com.wechat.pay.java.service.profitsharing.model.QueryReturnOrderRequest;
import com.wechat.pay.java.service.profitsharing.model.ReturnOrdersEntity;
import com.wechat.pay.java.service.profitsharing.model.SplitBillRequest;
import com.wechat.pay.java.service.profitsharing.model.SplitBillResponse;
import com.wechat.pay.java.service.profitsharing.model.UnfreezeOrderRequest;
/** ProfitsharingService服务 */
public class ProfitsharingService {
private final HttpClient httpClient;
private final HostName hostName;
private final PrivacyEncryptor encryptor;
private final PrivacyDecryptor decryptor;
private ProfitsharingService(
HttpClient httpClient,
HostName hostName,
PrivacyEncryptor encryptor,
PrivacyDecryptor decryptor) {
this.httpClient = requireNonNull(httpClient);
this.hostName = hostName;
this.encryptor = requireNonNull(encryptor);
this.decryptor = requireNonNull(decryptor);
}
/** ProfitsharingService构造器 */
public static class Builder {
private HttpClient httpClient;
private HostName hostName;
private PrivacyEncryptor encryptor;
private PrivacyDecryptor decryptor;
public Builder config(Config config) {
this.httpClient = new DefaultHttpClientBuilder().config(config).build();
this.encryptor = config.createEncryptor();
this.decryptor = config.createDecryptor();
return this;
}
public Builder hostName(HostName hostName) {
this.hostName = hostName;
return this;
}
public Builder httpClient(HttpClient httpClient) {
this.httpClient = httpClient;
return this;
}
public Builder encryptor(PrivacyEncryptor encryptor) {
this.encryptor = encryptor;
return this;
}
public Builder decryptor(PrivacyDecryptor decryptor) {
this.decryptor = decryptor;
return this;
}
public ProfitsharingService build() {
return new ProfitsharingService(httpClient, hostName, encryptor, decryptor);
}
}
/**
* 获取分账账单文件下载地址
*
* @param request 请求参数
* @return SplitBillResponse
* @throws HttpException 发送HTTP请求失败。例如构建请求参数失败、发送请求失败、I/O错误等。包含请求信息。
* @throws ValidationException 发送HTTP请求成功,验证微信支付返回签名失败。
* @throws ServiceException 发送HTTP请求成功,服务返回异常。例如返回状态码小于200或大于等于300。
* @throws MalformedMessageException 服务返回成功,content-type不为application/json、解析返回体失败。
*/
public SplitBillResponse splitBill(SplitBillRequest request) {
String requestPath = "https://api.mch.weixin.qq.com/v3/profitsharing/bills";
SplitBillRequest realRequest = request;
// 添加 query param
QueryParameter queryParameter = new QueryParameter();
if (realRequest.getSubMchid() != null) {
queryParameter.add("sub_mchid", urlEncode(realRequest.getSubMchid()));
}
if (realRequest.getBillDate() != null) {
queryParameter.add("bill_date", urlEncode(realRequest.getBillDate()));
}
if (realRequest.getTarType() != null) {
queryParameter.add("tar_type", urlEncode(realRequest.getTarType().toString()));
}
requestPath += queryParameter.getQueryStr();
if (this.hostName != null) {
requestPath = requestPath.replaceFirst(HostName.API.getValue(), hostName.getValue());
}
HttpHeaders headers = new HttpHeaders();
headers.addHeader(Constant.ACCEPT, MediaType.APPLICATION_JSON.getValue());
headers.addHeader(Constant.CONTENT_TYPE, MediaType.APPLICATION_JSON.getValue());
HttpRequest httpRequest =
new HttpRequest.Builder()
.httpMethod(HttpMethod.GET)
.url(requestPath)
.headers(headers)
.build();
HttpResponse httpResponse =
httpClient.execute(httpRequest, SplitBillResponse.class);
return httpResponse.getServiceResponse();
}
/**
* 查询最大分账比例API
*
* @param request 请求参数
* @return QueryMerchantRatioResponse
* @throws HttpException 发送HTTP请求失败。例如构建请求参数失败、发送请求失败、I/O错误等。包含请求信息。
* @throws ValidationException 发送HTTP请求成功,验证微信支付返回签名失败。
* @throws ServiceException 发送HTTP请求成功,服务返回异常。例如返回状态码小于200或大于等于300。
* @throws MalformedMessageException 服务返回成功,content-type不为application/json、解析返回体失败。
*/
public QueryMerchantRatioResponse queryMerchantRatio(QueryMerchantRatioRequest request) {
String requestPath =
"https://api.mch.weixin.qq.com/v3/profitsharing/merchant-configs/{sub_mchid}";
QueryMerchantRatioRequest realRequest = request;
// 添加 path param
requestPath =
requestPath.replace("{" + "sub_mchid" + "}", urlEncode(realRequest.getSubMchid()));
if (this.hostName != null) {
requestPath = requestPath.replaceFirst(HostName.API.getValue(), hostName.getValue());
}
HttpHeaders headers = new HttpHeaders();
headers.addHeader(Constant.ACCEPT, MediaType.APPLICATION_JSON.getValue());
headers.addHeader(Constant.CONTENT_TYPE, MediaType.APPLICATION_JSON.getValue());
HttpRequest httpRequest =
new HttpRequest.Builder()
.httpMethod(HttpMethod.GET)
.url(requestPath)
.headers(headers)
.build();
HttpResponse httpResponse =
httpClient.execute(httpRequest, QueryMerchantRatioResponse.class);
return httpResponse.getServiceResponse();
}
/**
* 请求分账API
*
* @param request 请求参数
* @return OrdersEntity
* @throws HttpException 发送HTTP请求失败。例如构建请求参数失败、发送请求失败、I/O错误等。包含请求信息。
* @throws ValidationException 发送HTTP请求成功,验证微信支付返回签名失败。
* @throws ServiceException 发送HTTP请求成功,服务返回异常。例如返回状态码小于200或大于等于300。
* @throws MalformedMessageException 服务返回成功,content-type不为application/json、解析返回体失败。
*/
public OrdersEntity createOrder(CreateOrderRequest request) {
String requestPath = "https://api.mch.weixin.qq.com/v3/profitsharing/orders";
// 加密敏感信息
CreateOrderRequest realRequest = request.cloneWithCipher(encryptor::encrypt);
if (this.hostName != null) {
requestPath = requestPath.replaceFirst(HostName.API.getValue(), hostName.getValue());
}
HttpHeaders headers = new HttpHeaders();
headers.addHeader(Constant.ACCEPT, MediaType.APPLICATION_JSON.getValue());
headers.addHeader(Constant.CONTENT_TYPE, MediaType.APPLICATION_JSON.getValue());
headers.addHeader(Constant.WECHAT_PAY_SERIAL, encryptor.getWechatpaySerial());
HttpRequest httpRequest =
new HttpRequest.Builder()
.httpMethod(HttpMethod.POST)
.url(requestPath)
.headers(headers)
.body(createRequestBody(realRequest))
.build();
HttpResponse httpResponse = httpClient.execute(httpRequest, OrdersEntity.class);
return httpResponse.getServiceResponse();
}
/**
* 查询分账结果API
*
* @param request 请求参数
* @return OrdersEntity
* @throws HttpException 发送HTTP请求失败。例如构建请求参数失败、发送请求失败、I/O错误等。包含请求信息。
* @throws ValidationException 发送HTTP请求成功,验证微信支付返回签名失败。
* @throws ServiceException 发送HTTP请求成功,服务返回异常。例如返回状态码小于200或大于等于300。
* @throws MalformedMessageException 服务返回成功,content-type不为application/json、解析返回体失败。
*/
public OrdersEntity queryOrder(QueryOrderRequest request) {
String requestPath = "https://api.mch.weixin.qq.com/v3/profitsharing/orders/{out_order_no}";
QueryOrderRequest realRequest = request;
// 添加 path param
requestPath =
requestPath.replace("{" + "out_order_no" + "}", urlEncode(realRequest.getOutOrderNo()));
// 添加 query param
QueryParameter queryParameter = new QueryParameter();
if (realRequest.getSubMchid() != null) {
queryParameter.add("sub_mchid", urlEncode(realRequest.getSubMchid()));
}
if (realRequest.getTransactionId() != null) {
queryParameter.add("transaction_id", urlEncode(realRequest.getTransactionId()));
}
requestPath += queryParameter.getQueryStr();
if (this.hostName != null) {
requestPath = requestPath.replaceFirst(HostName.API.getValue(), hostName.getValue());
}
HttpHeaders headers = new HttpHeaders();
headers.addHeader(Constant.ACCEPT, MediaType.APPLICATION_JSON.getValue());
headers.addHeader(Constant.CONTENT_TYPE, MediaType.APPLICATION_JSON.getValue());
HttpRequest httpRequest =
new HttpRequest.Builder()
.httpMethod(HttpMethod.GET)
.url(requestPath)
.headers(headers)
.build();
HttpResponse httpResponse = httpClient.execute(httpRequest, OrdersEntity.class);
return httpResponse.getServiceResponse();
}
/**
* 解冻剩余资金API
*
* @param request 请求参数
* @return OrdersEntity
* @throws HttpException 发送HTTP请求失败。例如构建请求参数失败、发送请求失败、I/O错误等。包含请求信息。
* @throws ValidationException 发送HTTP请求成功,验证微信支付返回签名失败。
* @throws ServiceException 发送HTTP请求成功,服务返回异常。例如返回状态码小于200或大于等于300。
* @throws MalformedMessageException 服务返回成功,content-type不为application/json、解析返回体失败。
*/
public OrdersEntity unfreezeOrder(UnfreezeOrderRequest request) {
String requestPath = "https://api.mch.weixin.qq.com/v3/profitsharing/orders/unfreeze";
UnfreezeOrderRequest realRequest = request;
if (this.hostName != null) {
requestPath = requestPath.replaceFirst(HostName.API.getValue(), hostName.getValue());
}
HttpHeaders headers = new HttpHeaders();
headers.addHeader(Constant.ACCEPT, MediaType.APPLICATION_JSON.getValue());
headers.addHeader(Constant.CONTENT_TYPE, MediaType.APPLICATION_JSON.getValue());
HttpRequest httpRequest =
new HttpRequest.Builder()
.httpMethod(HttpMethod.POST)
.url(requestPath)
.headers(headers)
.body(createRequestBody(realRequest))
.build();
HttpResponse httpResponse = httpClient.execute(httpRequest, OrdersEntity.class);
return httpResponse.getServiceResponse();
}
/**
* 添加分账接收方API
*
* @param request 请求参数
* @return AddReceiverResponse
* @throws HttpException 发送HTTP请求失败。例如构建请求参数失败、发送请求失败、I/O错误等。包含请求信息。
* @throws ValidationException 发送HTTP请求成功,验证微信支付返回签名失败。
* @throws ServiceException 发送HTTP请求成功,服务返回异常。例如返回状态码小于200或大于等于300。
* @throws MalformedMessageException 服务返回成功,content-type不为application/json、解析返回体失败。
*/
public AddReceiverResponse addReceiver(AddReceiverRequest request) {
String requestPath = "https://api.mch.weixin.qq.com/v3/profitsharing/receivers/add";
// 加密敏感信息
AddReceiverRequest realRequest = request.cloneWithCipher(encryptor::encrypt);
if (this.hostName != null) {
requestPath = requestPath.replaceFirst(HostName.API.getValue(), hostName.getValue());
}
HttpHeaders headers = new HttpHeaders();
headers.addHeader(Constant.ACCEPT, MediaType.APPLICATION_JSON.getValue());
headers.addHeader(Constant.CONTENT_TYPE, MediaType.APPLICATION_JSON.getValue());
headers.addHeader(Constant.WECHAT_PAY_SERIAL, encryptor.getWechatpaySerial());
HttpRequest httpRequest =
new HttpRequest.Builder()
.httpMethod(HttpMethod.POST)
.url(requestPath)
.headers(headers)
.body(createRequestBody(realRequest))
.build();
HttpResponse httpResponse =
httpClient.execute(httpRequest, AddReceiverResponse.class);
return httpResponse.getServiceResponse().cloneWithCipher(decryptor::decrypt);
}
/**
* 删除分账接收方API
*
* @param request 请求参数
* @return DeleteReceiverResponse
* @throws HttpException 发送HTTP请求失败。例如构建请求参数失败、发送请求失败、I/O错误等。包含请求信息。
* @throws ValidationException 发送HTTP请求成功,验证微信支付返回签名失败。
* @throws ServiceException 发送HTTP请求成功,服务返回异常。例如返回状态码小于200或大于等于300。
* @throws MalformedMessageException 服务返回成功,content-type不为application/json、解析返回体失败。
*/
public DeleteReceiverResponse deleteReceiver(DeleteReceiverRequest request) {
String requestPath = "https://api.mch.weixin.qq.com/v3/profitsharing/receivers/delete";
DeleteReceiverRequest realRequest = request;
if (this.hostName != null) {
requestPath = requestPath.replaceFirst(HostName.API.getValue(), hostName.getValue());
}
HttpHeaders headers = new HttpHeaders();
headers.addHeader(Constant.ACCEPT, MediaType.APPLICATION_JSON.getValue());
headers.addHeader(Constant.CONTENT_TYPE, MediaType.APPLICATION_JSON.getValue());
HttpRequest httpRequest =
new HttpRequest.Builder()
.httpMethod(HttpMethod.POST)
.url(requestPath)
.headers(headers)
.body(createRequestBody(realRequest))
.build();
HttpResponse httpResponse =
httpClient.execute(httpRequest, DeleteReceiverResponse.class);
return httpResponse.getServiceResponse();
}
/**
* 请求分账回退API
*
* @param request 请求参数
* @return ReturnOrdersEntity
* @throws HttpException 发送HTTP请求失败。例如构建请求参数失败、发送请求失败、I/O错误等。包含请求信息。
* @throws ValidationException 发送HTTP请求成功,验证微信支付返回签名失败。
* @throws ServiceException 发送HTTP请求成功,服务返回异常。例如返回状态码小于200或大于等于300。
* @throws MalformedMessageException 服务返回成功,content-type不为application/json、解析返回体失败。
*/
public ReturnOrdersEntity createReturnOrder(CreateReturnOrderRequest request) {
String requestPath = "https://api.mch.weixin.qq.com/v3/profitsharing/return-orders";
CreateReturnOrderRequest realRequest = request;
if (this.hostName != null) {
requestPath = requestPath.replaceFirst(HostName.API.getValue(), hostName.getValue());
}
HttpHeaders headers = new HttpHeaders();
headers.addHeader(Constant.ACCEPT, MediaType.APPLICATION_JSON.getValue());
headers.addHeader(Constant.CONTENT_TYPE, MediaType.APPLICATION_JSON.getValue());
HttpRequest httpRequest =
new HttpRequest.Builder()
.httpMethod(HttpMethod.POST)
.url(requestPath)
.headers(headers)
.body(createRequestBody(realRequest))
.build();
HttpResponse httpResponse =
httpClient.execute(httpRequest, ReturnOrdersEntity.class);
return httpResponse.getServiceResponse();
}
/**
* 查询分账回退结果API
*
* @param request 请求参数
* @return ReturnOrdersEntity
* @throws HttpException 发送HTTP请求失败。例如构建请求参数失败、发送请求失败、I/O错误等。包含请求信息。
* @throws ValidationException 发送HTTP请求成功,验证微信支付返回签名失败。
* @throws ServiceException 发送HTTP请求成功,服务返回异常。例如返回状态码小于200或大于等于300。
* @throws MalformedMessageException 服务返回成功,content-type不为application/json、解析返回体失败。
*/
public ReturnOrdersEntity queryReturnOrder(QueryReturnOrderRequest request) {
String requestPath =
"https://api.mch.weixin.qq.com/v3/profitsharing/return-orders/{out_return_no}";
QueryReturnOrderRequest realRequest = request;
// 添加 path param
requestPath =
requestPath.replace("{" + "out_return_no" + "}", urlEncode(realRequest.getOutReturnNo()));
// 添加 query param
QueryParameter queryParameter = new QueryParameter();
if (realRequest.getSubMchid() != null) {
queryParameter.add("sub_mchid", urlEncode(realRequest.getSubMchid()));
}
if (realRequest.getOutOrderNo() != null) {
queryParameter.add("out_order_no", urlEncode(realRequest.getOutOrderNo()));
}
requestPath += queryParameter.getQueryStr();
if (this.hostName != null) {
requestPath = requestPath.replaceFirst(HostName.API.getValue(), hostName.getValue());
}
HttpHeaders headers = new HttpHeaders();
headers.addHeader(Constant.ACCEPT, MediaType.APPLICATION_JSON.getValue());
headers.addHeader(Constant.CONTENT_TYPE, MediaType.APPLICATION_JSON.getValue());
HttpRequest httpRequest =
new HttpRequest.Builder()
.httpMethod(HttpMethod.GET)
.url(requestPath)
.headers(headers)
.build();
HttpResponse httpResponse =
httpClient.execute(httpRequest, ReturnOrdersEntity.class);
return httpResponse.getServiceResponse();
}
/**
* 查询剩余待分金额API
*
* @param request 请求参数
* @return QueryOrderAmountResponse
* @throws HttpException 发送HTTP请求失败。例如构建请求参数失败、发送请求失败、I/O错误等。包含请求信息。
* @throws ValidationException 发送HTTP请求成功,验证微信支付返回签名失败。
* @throws ServiceException 发送HTTP请求成功,服务返回异常。例如返回状态码小于200或大于等于300。
* @throws MalformedMessageException 服务返回成功,content-type不为application/json、解析返回体失败。
*/
public QueryOrderAmountResponse queryOrderAmount(QueryOrderAmountRequest request) {
String requestPath =
"https://api.mch.weixin.qq.com/v3/profitsharing/transactions/{transaction_id}/amounts";
QueryOrderAmountRequest realRequest = request;
// 添加 path param
requestPath =
requestPath.replace(
"{" + "transaction_id" + "}", urlEncode(realRequest.getTransactionId()));
if (this.hostName != null) {
requestPath = requestPath.replaceFirst(HostName.API.getValue(), hostName.getValue());
}
HttpHeaders headers = new HttpHeaders();
headers.addHeader(Constant.ACCEPT, MediaType.APPLICATION_JSON.getValue());
headers.addHeader(Constant.CONTENT_TYPE, MediaType.APPLICATION_JSON.getValue());
HttpRequest httpRequest =
new HttpRequest.Builder()
.httpMethod(HttpMethod.GET)
.url(requestPath)
.headers(headers)
.build();
HttpResponse httpResponse =
httpClient.execute(httpRequest, QueryOrderAmountResponse.class);
return httpResponse.getServiceResponse();
}
private RequestBody createRequestBody(Object request) {
return new JsonRequestBody.Builder().body(toJson(request)).build();
}
}