zrg
2024-08-16 18865d8bf24382e850e661dec6cca0e8b9dba6ae
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
using System;
using System.Xml.Serialization;
using System.Collections.Generic;
using Top.Api.Util;
using Top.Api;
using Top.Api.DingTalk;
 
namespace DingTalk.Api.Request
{
    /// <summary>
    /// TOP API: dingtalk.oapi.finance.loan.notify.lend
    /// </summary>
    public class OapiFinanceLoanNotifyLendRequest : BaseDingTalkRequest<DingTalk.Api.Response.OapiFinanceLoanNotifyLendResponse>
    {
        /// <summary>
        /// 借据更新时间(影响授信/可用额度等金额变化)
        /// </summary>
        public string AmountUpdateTime { get; set; }
 
        /// <summary>
        /// 剩余可用/可借额度(单位:分)
        /// </summary>
        public Nullable<long> AvailableLimit { get; set; }
 
        /// <summary>
        /// 收款银行名称
        /// </summary>
        public string BankName { get; set; }
 
        /// <summary>
        /// 收款银行卡号
        /// </summary>
        public string BankcardNo { get; set; }
 
        /// <summary>
        /// 每月账单日,如每月3号
        /// </summary>
        public Nullable<long> BillDate { get; set; }
 
        /// <summary>
        /// 账单分期期次信息,借款失败时传空数组
        /// </summary>
        public string BillInfoList { get; set; }
 
        public List<BillInfoDomain> BillInfoList_ { set { this.BillInfoList = TopUtils.ObjectToJson(value); } } 
 
        /// <summary>
        /// 授信总额度
        /// </summary>
        public Nullable<long> CreditAmount { get; set; }
 
        /// <summary>
        /// 日利率(精确4位小数,百分之*)
        /// </summary>
        public string DailyInterestRate { get; set; }
 
        /// <summary>
        /// 优惠券id:不存在传0,多个使用,分隔
        /// </summary>
        public string DiscountsId { get; set; }
 
        /// <summary>
        /// 放款失败原因:失败时值不能为空(尽可能详细)
        /// </summary>
        public string FailReason { get; set; }
 
        /// <summary>
        /// 支用时失败原因,失败时必传
        /// </summary>
        public string FailReasonToUser { get; set; }
 
        /// <summary>
        /// 首期账单日:与每月账单日相同可不传
        /// </summary>
        public string FirstBillDate { get; set; }
 
        /// <summary>
        /// 首期还款日:与每月还款日相同可不传
        /// </summary>
        public string FirstRepayDate { get; set; }
 
        /// <summary>
        /// 身份证号
        /// </summary>
        public string IdCardNo { get; set; }
 
        /// <summary>
        /// 最后还款日
        /// </summary>
        public string LastRepayDate { get; set; }
 
        /// <summary>
        /// 借款/支用金额(单位:分)
        /// </summary>
        public Nullable<long> LoanAmount { get; set; }
 
        /// <summary>
        /// 借据生效时间(成功):用户支用金额申请/提交后,行方审核完成时间
        /// </summary>
        public string LoanEffectiveTime { get; set; }
 
        /// <summary>
        /// 结清日期:最后一期(逾期)还款成功完成/结束时间
        /// </summary>
        public string LoanEndTime { get; set; }
 
        /// <summary>
        /// 借据流水号:没有传0
        /// </summary>
        public string LoanOrderFlowNo { get; set; }
 
        /// <summary>
        /// 借据编号
        /// </summary>
        public string LoanOrderNo { get; set; }
 
        /// <summary>
        /// 分期申请提交时间:用户支用金额申请/提交时间
        /// </summary>
        public string LoanSubmitTime { get; set; }
 
        /// <summary>
        /// 入账成功(打款到用户银行卡)时间:用户支用金额申请/提交后&行方审核通过后向用户银行卡打款时间
        /// </summary>
        public string LoanTxnTime { get; set; }
 
        /// <summary>
        /// 借款用途
        /// </summary>
        public string LoanUsage { get; set; }
 
        /// <summary>
        /// 渠道方名称
        /// </summary>
        public string OpenChannelName { get; set; }
 
        /// <summary>
        /// 渠道方产品码
        /// </summary>
        public string OpenProductCode { get; set; }
 
        /// <summary>
        /// 渠道方产品名称
        /// </summary>
        public string OpenProductName { get; set; }
 
        /// <summary>
        /// 渠道方产品类型
        /// </summary>
        public string OpenProductType { get; set; }
 
        /// <summary>
        /// 借据已还利息(单位:分)
        /// </summary>
        public Nullable<long> PaidInterest { get; set; }
 
        /// <summary>
        /// 借据已还罚息(单位:分,没有则为0)=本金罚息+利息罚息
        /// </summary>
        public Nullable<long> PaidPenalty { get; set; }
 
        /// <summary>
        /// 借据已还本金(单位:分)
        /// </summary>
        public Nullable<long> PaidPrincipal { get; set; }
 
        /// <summary>
        /// 借据已还总金额(单位:分):已还本金+已还利息+已还罚息
        /// </summary>
        public Nullable<long> PaidTotalAmount { get; set; }
 
        /// <summary>
        /// 应还利息(单位:分)
        /// </summary>
        public Nullable<long> PayableInterest { get; set; }
 
        /// <summary>
        /// 借据应还罚息(单位:分,没有则为0)=本金罚息+利息罚息
        /// </summary>
        public Nullable<long> PayablePenalty { get; set; }
 
        /// <summary>
        /// 应还本金(单位:分)
        /// </summary>
        public Nullable<long> PayablePrincipal { get; set; }
 
        /// <summary>
        /// 应还总金额(单位:分):应还本金+应还利息+应还罚息
        /// </summary>
        public Nullable<long> PayableTotalAmount { get; set; }
 
        /// <summary>
        /// 优惠券减免金额(单位:分):不存在传0
        /// </summary>
        public Nullable<long> ReductionTotalAmount { get; set; }
 
        /// <summary>
        /// 每月还款日,如每月5号
        /// </summary>
        public Nullable<long> RepayDate { get; set; }
 
        /// <summary>
        /// 还款方式:RMT00 等额本息,RMT01 先息后本
        /// </summary>
        public string RepayType { get; set; }
 
        /// <summary>
        /// 状态:APPLYING 支用申请中,CREDIT_SUCCESS 审核通过,CREDIT_FAILED 审核不通过/借款申请失败,USE_SUCCESS 支用成功:打款到用户银行卡成功,USE_FAILED 支用失败,NORMAL 还款中,OVERDUE 逾期,CLEAR 结清,WRITEOFF 核销
        /// </summary>
        public string Status { get; set; }
 
        /// <summary>
        /// 分期总期数
        /// </summary>
        public Nullable<long> TotalTerm { get; set; }
 
        /// <summary>
        /// 手机号
        /// </summary>
        public string UserMobile { get; set; }
 
        /// <summary>
        /// 年利率(精确2位小数,百分之*)
        /// </summary>
        public string YearLoanInterestRate { get; set; }
 
        #region IDingTalkRequest Members
 
        public override string GetApiName()
        {
            return "dingtalk.oapi.finance.loan.notify.lend";
        }
 
        public override string GetApiCallType()
        {
            return DingTalkConstants.CALL_TYPE_OAPI;
        }
 
        public override IDictionary<string, string> GetParameters()
        {
            TopDictionary parameters = new TopDictionary();
            parameters.Add("amount_update_time", this.AmountUpdateTime);
            parameters.Add("available_limit", this.AvailableLimit);
            parameters.Add("bank_name", this.BankName);
            parameters.Add("bankcard_no", this.BankcardNo);
            parameters.Add("bill_date", this.BillDate);
            parameters.Add("bill_info_list", this.BillInfoList);
            parameters.Add("credit_amount", this.CreditAmount);
            parameters.Add("daily_interest_rate", this.DailyInterestRate);
            parameters.Add("discounts_id", this.DiscountsId);
            parameters.Add("fail_reason", this.FailReason);
            parameters.Add("fail_reason_to_user", this.FailReasonToUser);
            parameters.Add("first_bill_date", this.FirstBillDate);
            parameters.Add("first_repay_date", this.FirstRepayDate);
            parameters.Add("id_card_no", this.IdCardNo);
            parameters.Add("last_repay_date", this.LastRepayDate);
            parameters.Add("loan_amount", this.LoanAmount);
            parameters.Add("loan_effective_time", this.LoanEffectiveTime);
            parameters.Add("loan_end_time", this.LoanEndTime);
            parameters.Add("loan_order_flow_no", this.LoanOrderFlowNo);
            parameters.Add("loan_order_no", this.LoanOrderNo);
            parameters.Add("loan_submit_time", this.LoanSubmitTime);
            parameters.Add("loan_txn_time", this.LoanTxnTime);
            parameters.Add("loan_usage", this.LoanUsage);
            parameters.Add("open_channel_name", this.OpenChannelName);
            parameters.Add("open_product_code", this.OpenProductCode);
            parameters.Add("open_product_name", this.OpenProductName);
            parameters.Add("open_product_type", this.OpenProductType);
            parameters.Add("paid_interest", this.PaidInterest);
            parameters.Add("paid_penalty", this.PaidPenalty);
            parameters.Add("paid_principal", this.PaidPrincipal);
            parameters.Add("paid_total_amount", this.PaidTotalAmount);
            parameters.Add("payable_interest", this.PayableInterest);
            parameters.Add("payable_penalty", this.PayablePenalty);
            parameters.Add("payable_principal", this.PayablePrincipal);
            parameters.Add("payable_total_amount", this.PayableTotalAmount);
            parameters.Add("reduction_total_amount", this.ReductionTotalAmount);
            parameters.Add("repay_date", this.RepayDate);
            parameters.Add("repay_type", this.RepayType);
            parameters.Add("status", this.Status);
            parameters.Add("total_term", this.TotalTerm);
            parameters.Add("user_mobile", this.UserMobile);
            parameters.Add("year_loan_interest_rate", this.YearLoanInterestRate);
            if (this.otherParams != null)
            {
                parameters.AddAll(this.otherParams);
            }
            return parameters;
        }
 
        public override void Validate()
        {
            RequestValidator.ValidateRequired("amount_update_time", this.AmountUpdateTime);
            RequestValidator.ValidateRequired("available_limit", this.AvailableLimit);
            RequestValidator.ValidateRequired("bank_name", this.BankName);
            RequestValidator.ValidateRequired("bankcard_no", this.BankcardNo);
            RequestValidator.ValidateRequired("bill_date", this.BillDate);
            RequestValidator.ValidateRequired("bill_info_list", this.BillInfoList);
            RequestValidator.ValidateObjectMaxListSize("bill_info_list", this.BillInfoList, 360);
            RequestValidator.ValidateRequired("credit_amount", this.CreditAmount);
            RequestValidator.ValidateRequired("daily_interest_rate", this.DailyInterestRate);
            RequestValidator.ValidateRequired("discounts_id", this.DiscountsId);
            RequestValidator.ValidateRequired("fail_reason", this.FailReason);
            RequestValidator.ValidateRequired("fail_reason_to_user", this.FailReasonToUser);
            RequestValidator.ValidateRequired("first_bill_date", this.FirstBillDate);
            RequestValidator.ValidateRequired("first_repay_date", this.FirstRepayDate);
            RequestValidator.ValidateRequired("id_card_no", this.IdCardNo);
            RequestValidator.ValidateRequired("last_repay_date", this.LastRepayDate);
            RequestValidator.ValidateRequired("loan_amount", this.LoanAmount);
            RequestValidator.ValidateRequired("loan_effective_time", this.LoanEffectiveTime);
            RequestValidator.ValidateRequired("loan_end_time", this.LoanEndTime);
            RequestValidator.ValidateRequired("loan_order_flow_no", this.LoanOrderFlowNo);
            RequestValidator.ValidateRequired("loan_order_no", this.LoanOrderNo);
            RequestValidator.ValidateRequired("loan_submit_time", this.LoanSubmitTime);
            RequestValidator.ValidateRequired("loan_txn_time", this.LoanTxnTime);
            RequestValidator.ValidateRequired("loan_usage", this.LoanUsage);
            RequestValidator.ValidateRequired("open_channel_name", this.OpenChannelName);
            RequestValidator.ValidateRequired("open_product_code", this.OpenProductCode);
            RequestValidator.ValidateRequired("open_product_name", this.OpenProductName);
            RequestValidator.ValidateRequired("open_product_type", this.OpenProductType);
            RequestValidator.ValidateRequired("paid_interest", this.PaidInterest);
            RequestValidator.ValidateRequired("paid_penalty", this.PaidPenalty);
            RequestValidator.ValidateRequired("paid_principal", this.PaidPrincipal);
            RequestValidator.ValidateRequired("paid_total_amount", this.PaidTotalAmount);
            RequestValidator.ValidateRequired("payable_interest", this.PayableInterest);
            RequestValidator.ValidateRequired("payable_penalty", this.PayablePenalty);
            RequestValidator.ValidateRequired("payable_principal", this.PayablePrincipal);
            RequestValidator.ValidateRequired("payable_total_amount", this.PayableTotalAmount);
            RequestValidator.ValidateRequired("reduction_total_amount", this.ReductionTotalAmount);
            RequestValidator.ValidateRequired("repay_date", this.RepayDate);
            RequestValidator.ValidateRequired("repay_type", this.RepayType);
            RequestValidator.ValidateRequired("status", this.Status);
            RequestValidator.ValidateRequired("total_term", this.TotalTerm);
            RequestValidator.ValidateRequired("user_mobile", this.UserMobile);
            RequestValidator.ValidateRequired("year_loan_interest_rate", this.YearLoanInterestRate);
        }
 
    /// <summary>
/// BillInfoDomain Data Structure.
/// </summary>
[Serializable]
 
public class BillInfoDomain : TopObject
{
            /// <summary>
            /// 本期账单日,样例
            /// </summary>
            [XmlElement("bill_date")]
            public string BillDate { get; set; }
    
            /// <summary>
            /// 期次已还罚息(单位:分,没有则为0)=本金罚息+利息罚息
            /// </summary>
            [XmlElement("paid_penalty")]
            public Nullable<long> PaidPenalty { get; set; }
    
            /// <summary>
            /// 期次已还利息(单位:分)
            /// </summary>
            [XmlElement("paid_pnterest")]
            public Nullable<long> PaidPnterest { get; set; }
    
            /// <summary>
            /// 期次已还本金(单位:分)
            /// </summary>
            [XmlElement("paid_principal")]
            public Nullable<long> PaidPrincipal { get; set; }
    
            /// <summary>
            /// 期次已还总金额(单位:分):已还本金+已还利息+已还罚息
            /// </summary>
            [XmlElement("paid_total_amount")]
            public Nullable<long> PaidTotalAmount { get; set; }
    
            /// <summary>
            /// 期次应还利息(单位:分)
            /// </summary>
            [XmlElement("payable_interest")]
            public Nullable<long> PayableInterest { get; set; }
    
            /// <summary>
            /// 期次应还罚息(单位:分,没有则为0)=本金罚息+利息罚息
            /// </summary>
            [XmlElement("payable_penalty")]
            public Nullable<long> PayablePenalty { get; set; }
    
            /// <summary>
            /// 期次应还本金(单位:分)
            /// </summary>
            [XmlElement("payable_principal")]
            public Nullable<long> PayablePrincipal { get; set; }
    
            /// <summary>
            /// 期次应还总金额(单位:分):应还本金+应还利息+应还罚息
            /// </summary>
            [XmlElement("payable_total_amount")]
            public Nullable<long> PayableTotalAmount { get; set; }
    
            /// <summary>
            /// 本期还款日,如每月5号
            /// </summary>
            [XmlElement("repay_date")]
            public string RepayDate { get; set; }
    
            /// <summary>
            /// 本期还款状态:INIT 未还款、ONGOING 还款中、PAID 已还清、OVERDUE 已逾期、FAIL 还款失败
            /// </summary>
            [XmlElement("status")]
            public string Status { get; set; }
    
            /// <summary>
            /// 本期期次:2=第2期
            /// </summary>
            [XmlElement("terms")]
            public string Terms { get; set; }
}
 
        #endregion
    }
}