111
rk
2025-08-21 4e3e18cdb0d75c098b68353ef8c86cdd7c0f79b2
server/services/src/main/java/com/doumee/config/wx/TransferToUser.java
@@ -29,12 +29,20 @@
    public static void main(String[] args) {
        // TODO: 请准备商户开发必要参数,参考:https://pay.weixin.qq.com/doc/v3/merchant/4013070756
//        TransferToUser client = new TransferToUser(
//                "1229817002",                    // 商户号,是由微信支付系统生成并分配给每个商户的唯一标识符,商户号获取方式参考 https://pay.weixin.qq.com/doc/v3/merchant/4013070756
//                "3FE90C2F3D40A56E1C51926F31B8A8D22426CCE0",         // 商户API证书序列号,如何获取请参考 https://pay.weixin.qq.com/doc/v3/merchant/4013053053
//                "d://wechatApiclient_key.pem",    // 商户API证书私钥文件路径,本地文件路径
//                "PUB_KEY_ID_0112298170022025071700291836000600",      // 微信支付公钥ID,如何获取请参考 https://pay.weixin.qq.com/doc/v3/merchant/4013038816
//                "d://pub_key.pem"          // 微信支付公钥文件路径,本地文件路径
//        );
        TransferToUser client = new TransferToUser(
                "1229817002",                    // 商户号,是由微信支付系统生成并分配给每个商户的唯一标识符,商户号获取方式参考 https://pay.weixin.qq.com/doc/v3/merchant/4013070756
                "3FE90C2F3D40A56E1C51926F31B8A8D22426CCE0",         // 商户API证书序列号,如何获取请参考 https://pay.weixin.qq.com/doc/v3/merchant/4013053053
                "1661772003",                    // 商户号,是由微信支付系统生成并分配给每个商户的唯一标识符,商户号获取方式参考 https://pay.weixin.qq.com/doc/v3/merchant/4013070756
                "3C9A32FB6CD453FAAAF97F9737ECAEA9D6625727",         // 商户API证书序列号,如何获取请参考 https://pay.weixin.qq.com/doc/v3/merchant/4013053053
                "d://wechatApiclient_key.pem",    // 商户API证书私钥文件路径,本地文件路径
                "PUB_KEY_ID_0112298170022025071700291836000600",      // 微信支付公钥ID,如何获取请参考 https://pay.weixin.qq.com/doc/v3/merchant/4013038816
                "d://pub_key.pem"          // 微信支付公钥文件路径,本地文件路径
                "47E172124E73E8098A565E971064C20ACDE7C911",      // 微信支付公钥ID,如何获取请参考 https://pay.weixin.qq.com/doc/v3/merchant/4013038816
                "d://wechatpay_47E172124E73E8098A565E971064C20ACDE7C911.pem"          // 微信支付公钥文件路径,本地文件路径
        );
        TransferToUserRequest request = new TransferToUserRequest();
@@ -42,10 +50,10 @@
        request.outBillNo = "plfk2020042016";
        request.transferSceneId = "1005";
        request.openid = "oKKHU5IFKpss_DIbFX1lqghFJOEg";
        request.userName = client.encrypt("施旭辉");
        request.transferAmount = 91L;
//        request.userName = client.encrypt("施旭辉");
        request.transferAmount = 10L;
        request.transferRemark = "~~~";
        request.notifyUrl = "https://www.weixin.qq.com/wxpay/pay.php";
//        request.notifyUrl = "https://www.weixin.qq.com/wxpay/pay.php";
        request.userRecvPerception = "劳务报酬";
        request.transferSceneReportInfos = new ArrayList<>();
        {
@@ -118,6 +126,7 @@
    public TransferToUserResponse run(TransferToUserRequest request,String name) {
        String uri = PATH;
        request.appid = WxMiniConfig.wxProperties.getSubAppId();
//        request.notifyUrl = WxMiniConfig.wxProperties.getWechatNotifyUrl();
        request.transferSceneId = "1005";
        request.userRecvPerception = "劳务报酬";
        if(request.transferAmount >= 30){
@@ -140,7 +149,7 @@
        Request.Builder reqBuilder = new Request.Builder().url(HOST + uri);
        reqBuilder.addHeader("Accept", "application/json");
        reqBuilder.addHeader("Wechatpay-Serial", WxMiniConfig.wxProperties.getWechatPayPublicKeyId());
        reqBuilder.addHeader("Authorization", WXPayUtility.buildAuthorization(WxMiniConfig.wxProperties.getMchId(),
        reqBuilder.addHeader("Authorization", WXPayUtility.buildAuthorization(WxMiniConfig.wxProperties.getSubMchId(),
                WxMiniConfig.wxProperties.getWechatSerialNumer(),
                WXPayUtility.loadPrivateKeyFromPath(WxMiniConfig.wxProperties.getWechatPrivateKeyPath()),
                METHOD, uri, reqBody));
@@ -178,7 +187,7 @@
        Request.Builder reqBuilder = new Request.Builder().url(HOST + uri);
        reqBuilder.addHeader("Accept", "application/json");
        reqBuilder.addHeader("Wechatpay-Serial", wechatPayPublicKeyId);
        reqBuilder.addHeader("Authorization", WXPayUtility.buildAuthorization(WxMiniConfig.wxProperties.getMchId(),
        reqBuilder.addHeader("Authorization", WXPayUtility.buildAuthorization(WxMiniConfig.wxProperties.getSubMchId(),
                WxMiniConfig.wxProperties.getWechatSerialNumer(),
                WXPayUtility.loadPrivateKeyFromPath(WxMiniConfig.wxProperties.getWechatPrivateKeyPath()),
                METHOD, uri, null));