{"record":{"id":"8c2a56aa8f9c92b9","repo":"JeffreySu/WeiXinMPSDK","slug":"tenpayv3profitshareingrequestdata-8c2a56","errorCode":null,"errorMessage":"必须指定待添加的分账接收方","messagePattern":"必须指定待添加的分账接收方","errorType":"validation","errorClass":"ArgumentNullException","httpStatus":null,"severity":"error","filePath":"src/Senparc.Weixin.TenPay/Senparc.Weixin.TenPay/V3/Universal/Entities/Request/TenpayV3ProfitShareingRequestData.cs","lineNumber":560,"sourceCode":"        /// <param name=\"key\"></param>\n        /// <param name=\"nonceStr\"></param>\n        /// <param name=\"receiver\">新添加的分账接收方对象\n        /// </param>\n        public TenpayV3ProfitShareingAddReceiverRequestData(\n            string appId, string mchId, string subappid, string submchid, string key, string nonceStr,\n            TenpayV3ProfitShareingAddReceiverRequestData_ReceiverInfo receiver\n        )\n        {\n            AppId = appId;\n            MchId = mchId;\n            NonceStr = nonceStr;\n            Key = key;\n            SubAppId = subappid;\n            SubMchId = submchid;\n            Receiver = receiver;\n            if (Receiver == null)\n            {\n                throw new ArgumentNullException(\"必须指定待添加的分账接收方\");\n            }\n\n            #region 设置RequestHandler\n\n            //创建支付应答对象\n            PackageRequestHandler = new RequestHandler(null);\n            //初始化\n            PackageRequestHandler.Init();\n\n            //设置package订单参数\n            //以下设置顺序按照官方文档排序，方便维护：https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1\n            PackageRequestHandler.SetParameter(\"appid\", this.AppId);                       //公众账号ID\n            PackageRequestHandler.SetParameter(\"mch_id\", this.MchId);                      //商户号\n            PackageRequestHandler.SetParameterWhenNotNull(\"sub_appid\", this.SubAppId);     //子商户公众账号ID\n            PackageRequestHandler.SetParameterWhenNotNull(\"sub_mch_id\", this.SubMchId);    //子商户号\n            PackageRequestHandler.SetParameter(\"nonce_str\", this.NonceStr);                //随机字符串\n            PackageRequestHandler.SetParameter(\"sign_type\", this.SignType);     //签名类型，默认为MD5\n","sourceCodeStart":542,"sourceCodeEnd":578,"githubUrl":"https://github.com/JeffreySu/WeiXinMPSDK/blob/be573f6f94bdbf718dd5f6cdecb137fbc7ff651e/src/Senparc.Weixin.TenPay/Senparc.Weixin.TenPay/V3/Universal/Entities/Request/TenpayV3ProfitShareingRequestData.cs#L542-L578","documentation":"TenpayV3ProfitShareingAddReceiverRequestData's constructor requires a Receiver object describing the profit-sharing receiver to add. Passing null throws an ArgumentNullException with this message; WeChat Pay's add-receiver API cannot be called without a receiver payload.","triggerScenarios":"new TenpayV3ProfitShareingAddReceiverRequestData(...) with receiver = null when trying to register a 分账接收方 (merchant or personal payee).","commonSituations":"Receiver details loaded from config/database returned null (account not yet onboarded), or an uninitialized property was passed before population.","solutions":["Construct a valid Receiver (type MERCHANT_ID/PERSONAL_OPENID, account, name, relation type) before calling the constructor.","Null-check the receiver object at the call site.","Verify the source of the receiver record — the upstream lookup returning null is usually the root cause."],"exampleFix":"// before\nReceiver receiver = repo.Find(account); // may be null\nvar data = new TenpayV3ProfitShareingAddReceiverRequestData(key, appid, mchid, receiver);\n// after\nvar receiver = repo.Find(account) ?? throw new InvalidOperationException($\"receiver {account} not configured\");\nvar data = new TenpayV3ProfitShareingAddReceiverRequestData(key, appid, mchid, receiver);","handlingStrategy":"validation","validationCode":"// C#\nif (receiver is null)\n    throw new InvalidOperationException(\"Receiver must be loaded before calling AddReceiver\");","typeGuard":"bool IsValidReceiver(Receiver r) => r is not null && !string.IsNullOrWhiteSpace(r.Account);","tryCatchPattern":"try { var data = new TenpayV3ProfitShareingAddReceiverRequestData(key, appid, mchid, receiver); }\ncatch (ArgumentNullException ex) when (ex.Message.Contains(\"分账接收方\")) { log.LogWarning(\"AddReceiver skipped: receiver record missing\"); }","preventionTips":["Load and verify receiver config before constructing request data","Use nullable reference types to catch unassigned receiver properties","Keep receiver records in sync with WeChat merchant platform"],"tags":["null-argument","profit-sharing","weixin-tenpay"],"backgroundTag":"null-argument","analyzedSha":"be573f6f94bdbf718dd5f6cdecb137fbc7ff651e","analyzedAt":"2026-09-12T10:01:50.733Z","contentChangedAt":"2026-09-12T10:01:50.733Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}