mirror of
https://gitee.com/dromara/dax-pay.git
synced 2025-09-03 11:06:46 +00:00
feat 微信对账单解析
This commit is contained in:
@@ -97,4 +97,7 @@ public interface WeChatPayCode {
|
||||
/** 订单总退款次数 */
|
||||
String TOTAL_REFUND_COUNT = "total_refund_count";
|
||||
|
||||
/** */
|
||||
String account_type_basic = "Basic";
|
||||
|
||||
}
|
||||
|
@@ -0,0 +1,12 @@
|
||||
package cn.bootx.platform.daxpay.service.core.channel.alipay.domain;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 支付宝对账单
|
||||
* @author xxm
|
||||
* @since 2024/1/17
|
||||
*/
|
||||
@Data
|
||||
public class AliPayReconcileBill {
|
||||
}
|
@@ -0,0 +1,100 @@
|
||||
package cn.bootx.platform.daxpay.service.core.channel.wechat.domain;
|
||||
|
||||
import cn.hutool.core.annotation.Alias;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 微信对账单明细
|
||||
* @author xxm
|
||||
* @since 2024/1/17
|
||||
*/
|
||||
@Data
|
||||
public class WechatPayReconcileBillDetail {
|
||||
@Alias("交易时间")
|
||||
private String transactionTime;
|
||||
|
||||
@Alias("公众账号ID")
|
||||
private String appId;
|
||||
|
||||
@Alias("商户号")
|
||||
private String merchantId;
|
||||
|
||||
@Alias("特约商户号")
|
||||
private String subMerchantId;
|
||||
|
||||
@Alias("微信订单号")
|
||||
private String weiXinOrderNo;
|
||||
|
||||
@Alias("商户订单号")
|
||||
private String mchOrderNo;
|
||||
|
||||
@Alias("用户标识")
|
||||
private String userId;
|
||||
|
||||
@Alias("设备号")
|
||||
private String deviceInfo;
|
||||
|
||||
@Alias("交易状态")
|
||||
private String transactionState;
|
||||
|
||||
@Alias("交易类型")
|
||||
private String type;
|
||||
|
||||
@Alias("交易状态")
|
||||
private String status;
|
||||
|
||||
@Alias("付款银行")
|
||||
private String bank;
|
||||
|
||||
@Alias("货币种类")
|
||||
private String currency;
|
||||
|
||||
@Alias("应结订单金额")
|
||||
private String amount;
|
||||
|
||||
@Alias("代金券金额")
|
||||
private String envelopeAmount;
|
||||
|
||||
@Alias("微信退款单号")
|
||||
private String name;
|
||||
|
||||
@Alias("商户退款单号")
|
||||
private String packet;
|
||||
|
||||
@Alias("退款金额")
|
||||
private String poundage;
|
||||
|
||||
|
||||
@Alias("充值券退款金额")
|
||||
private String amount2;
|
||||
|
||||
@Alias("退款类型")
|
||||
private String rate;
|
||||
|
||||
@Alias("退款状态")
|
||||
private String orderAmount;
|
||||
|
||||
@Alias("商品名称")
|
||||
private String packet2;
|
||||
|
||||
@Alias("商户数据包")
|
||||
private String packet3;
|
||||
|
||||
@Alias("手续费")
|
||||
private String packet4;
|
||||
|
||||
@Alias("费率")
|
||||
private String packet5;
|
||||
|
||||
@Alias("订单金额")
|
||||
private String packet6;
|
||||
|
||||
@Alias("申请退款金额")
|
||||
private String packet7;
|
||||
|
||||
@Alias("费率备注")
|
||||
private String packet8;
|
||||
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,35 @@
|
||||
package cn.bootx.platform.daxpay.service.core.channel.wechat.domain;
|
||||
|
||||
import cn.hutool.core.annotation.Alias;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 微信对账单汇总
|
||||
* @author xxm
|
||||
* @since 2024/1/17
|
||||
*/
|
||||
@Data
|
||||
public class WechatPayReconcileBillTotal {
|
||||
|
||||
@Alias("总交易单数")
|
||||
private String totalNum;
|
||||
|
||||
@Alias("应结订单总金额")
|
||||
private String totalAmount;
|
||||
|
||||
@Alias("退款总金额")
|
||||
private String totalRefundAmount;
|
||||
|
||||
@Alias("充值券退款总金额")
|
||||
private String totalRefundCouponAmount;
|
||||
|
||||
@Alias("手续费总金额")
|
||||
private String totalFee;
|
||||
|
||||
@Alias("订单总金额")
|
||||
private String totalOrderAmount;
|
||||
|
||||
@Alias("申请退款总金额")
|
||||
private String applyTotalRefundAmount;
|
||||
|
||||
}
|
@@ -1,7 +1,11 @@
|
||||
package cn.bootx.platform.daxpay.service.core.channel.wechat.service;
|
||||
|
||||
import cn.bootx.platform.daxpay.service.core.channel.wechat.domain.WechatPayReconcileBillDetail;
|
||||
import cn.bootx.platform.daxpay.service.core.channel.wechat.domain.WechatPayReconcileBillTotal;
|
||||
import cn.bootx.platform.daxpay.service.core.channel.wechat.entity.WeChatPayConfig;
|
||||
import cn.hutool.core.codec.Base64;
|
||||
import cn.hutool.core.text.csv.CsvReader;
|
||||
import cn.hutool.core.text.csv.CsvUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ijpay.core.enums.SignType;
|
||||
import com.ijpay.core.kit.WxPayKit;
|
||||
@@ -13,6 +17,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
@@ -41,7 +46,7 @@ public class WechatPayReconcileService {
|
||||
*/
|
||||
public void downBill(String date, WeChatPayConfig config){
|
||||
// 下载交易账单
|
||||
Map<String, String> bill = DownloadBillModel.builder()
|
||||
Map<String, String> params = DownloadBillModel.builder()
|
||||
.mch_id(config.getWxMchId())
|
||||
.appid(config.getWxAppId())
|
||||
.nonce_str(WxPayKit.generateStr())
|
||||
@@ -49,8 +54,13 @@ public class WechatPayReconcileService {
|
||||
.bill_type("ALL")
|
||||
.build()
|
||||
.createSign(config.getApiKeyV2(), SignType.HMACSHA256);
|
||||
String s = WxPayApi.downloadBill(config.isSandbox(), bill);
|
||||
System.out.println(s);
|
||||
String res = WxPayApi.downloadBill(config.isSandbox(), params);
|
||||
// 获取交易记录
|
||||
|
||||
// 获取汇总数据
|
||||
System.out.println(res);
|
||||
CsvReader reader = CsvUtil.getReader();
|
||||
List<WechatPayReconcileBillDetail> read = reader.read(res, WechatPayReconcileBillDetail.class);
|
||||
}
|
||||
|
||||
|
||||
@@ -73,7 +83,25 @@ public class WechatPayReconcileService {
|
||||
ByteArrayInputStream inputStream = new ByteArrayInputStream(fileBytes);
|
||||
// 证书密码为 微信商户号
|
||||
String s = WxPayApi.downloadFundFlow(fundFlow, inputStream, config.getWxMchId());
|
||||
// String url = WxPayApi.getReqUrl(PayApiEnum.DOWNLOAD_BILL, null, config.isSandbox());
|
||||
// String post = HttpUtil.post(url, WxPayKit.toXml(fundFlow));
|
||||
System.out.println(s);
|
||||
}
|
||||
|
||||
|
||||
public static void main(String[] args){
|
||||
String s = "\uFEFF交易时间,公众账号ID,商户号,特约商户号,设备号,微信订单号,商户订单号,用户标识,交易类型,交易状态,付款银行,货币种类,应结订单金额,代金券金额,微信退款单号,商户退款单号,退款金额,充值券退款金额,退款类型,退款状态,商品名称,商户数据包,手续费,费率,订单金额,申请退款金额,费率备注\n" +
|
||||
"`2024-01-16 22:43:59,`wx9dfe38480f030e85,`1627859777,`0,`,`4200002086202401160745964084,`1747268229775183872,`o2RW45oGxo1Z8Fhcf6Oy9rMM7aT8,`NATIVE,`SUCCESS,`OTHERS,`CNY,`0.02,`0.00,`0,`0,`0.00,`0.00,`,`,`测试支付4,`,`0.00000,`0.90%,`0.02,`0.00,`\n" +
|
||||
"`2024-01-16 22:45:16,`wx9dfe38480f030e85,`1627859777,`0,`,`4200002086202401160745964084,`1747268229775183872,`o2RW45oGxo1Z8Fhcf6Oy9rMM7aT8,`NATIVE,`REFUND,`OTHERS,`CNY,`0.00,`0.00,`50303108562024011601487282563,`R1747268742516264960,`0.01,`0.00,`ORIGINAL,`SUCCESS,`测试支付4,`,`0.00000,`0.90%,`0.00,`0.01,`\n" +
|
||||
"`2024-01-16 23:10:18,`wx9dfe38480f030e85,`1627859777,`0,`,`4200002086202401160745964084,`1747268229775183872,`o2RW45oGxo1Z8Fhcf6Oy9rMM7aT8,`NATIVE,`REFUND,`OTHERS,`CNY,`0.00,`0.00,`50303108562024011683774350275,`R1747275041228390400,`0.01,`0.00,`ORIGINAL,`SUCCESS,`测试支付4,`,`0.00000,`0.90%,`0.00,`0.01,`\n" +
|
||||
"总交易单数,应结订单总金额,退款总金额,充值券退款总金额,手续费总金额,订单总金额,申请退款总金额\n" +
|
||||
"`3,`0.02,`0.02,`0.00,`0.00000,`0.02,`0.02";
|
||||
s = s.replaceAll("`", "").replaceAll("\uFEFF", "");
|
||||
String s1 = StrUtil.subBefore(s, "总交易单数", false);
|
||||
String s2 = s.substring(s.indexOf("总交易单数"));
|
||||
CsvReader reader = CsvUtil.getReader();
|
||||
List<WechatPayReconcileBillDetail> read = reader.read(s1, WechatPayReconcileBillDetail.class);
|
||||
List<WechatPayReconcileBillTotal> read1 = reader.read(s2, WechatPayReconcileBillTotal.class);
|
||||
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user