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
using System;
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.repayment
    /// </summary>
    public class OapiFinanceLoanNotifyRepaymentRequest : BaseDingTalkRequest<DingTalk.Api.Response.OapiFinanceLoanNotifyRepaymentResponse>
    {
        /// <summary>
        /// 授信额度(单位:分),授信成功必需
        /// </summary>
        public Nullable<long> Amount { get; set; }
 
        /// <summary>
        /// 可用授信额度:等于授信总额度减去已经借款总额度
        /// </summary>
        public Nullable<long> AvailableAmount { get; set; }
 
        /// <summary>
        /// 还款银行名称
        /// </summary>
        public string BankName { get; set; }
 
        /// <summary>
        /// 还款银行卡号
        /// </summary>
        public string BankcardNo { get; set; }
 
        /// <summary>
        /// 本次还款时利息逾期天数(不包括已经还逾期的,没有则为0):多笔分期还款逾期,求各逾期天数总和;如:1期逾期35天,第2期逾期4天,总逾期39天
        /// </summary>
        public Nullable<long> CurrentIntOvdDays { get; set; }
 
        /// <summary>
        /// 本次还款时逾期期次(不包括已经还的逾期,没有则为0):如1,2=第1期+第2期都逾期
        /// </summary>
        public string CurrentOvdTerms { get; set; }
 
        /// <summary>
        /// 本次已还利息(单位:分)
        /// </summary>
        public Nullable<long> CurrentPaidInterest { get; set; }
 
        /// <summary>
        /// 本次已还罚息(单位:分,精确2位小数,没有则为0)=本次本金罚息+本次利息罚息
        /// </summary>
        public Nullable<long> CurrentPaidPenalty { get; set; }
 
        /// <summary>
        /// 本次已还本金(单位:分)
        /// </summary>
        public Nullable<long> CurrentPaidPrincipal { get; set; }
 
        /// <summary>
        /// 本次已还总金额(单位:分):已还本金+已还利息+已还罚息
        /// </summary>
        public Nullable<long> CurrentPaidTotalAmount { get; set; }
 
        /// <summary>
        /// 本次还款时本金逾期天数(不包括已经还逾期的,没有则为0):多笔分期还款逾期,求各逾期天数总和;如:1期逾期35天,第2期逾期4天,总逾期39天
        /// </summary>
        public Nullable<long> CurrentPrinOvdDays { get; set; }
 
        /// <summary>
        /// 还款结果信息:失败原因等
        /// </summary>
        public string FailReason { get; set; }
 
        /// <summary>
        /// 还款失败原因(还款失败必传):用户发送钉钉卡片消息
        /// </summary>
        public string FailReasonToUser { get; set; }
 
        /// <summary>
        /// 身份证号
        /// </summary>
        public string IdCardNo { get; set; }
 
        /// <summary>
        /// 借据编号
        /// </summary>
        public string LoanOrderNo { 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 没有还清,1 全部还清
        /// </summary>
        public Nullable<long> PeriodPaidAll { get; set; }
 
        /// <summary>
        /// 该期次已还利息(单位:分)
        /// </summary>
        public Nullable<long> PeriodPaidInterest { get; set; }
 
        /// <summary>
        /// 该期次已还罚息(单位:分,精确2位小数,没有则为0)=该期次本金罚息+该期次利息罚息
        /// </summary>
        public Nullable<long> PeriodPaidPenalty { get; set; }
 
        /// <summary>
        /// 该期次已还本金(单位:分)
        /// </summary>
        public Nullable<long> PeriodPaidPrincipal { get; set; }
 
        /// <summary>
        /// 该期次已还总金额(单位:分)
        /// </summary>
        public Nullable<long> PeriodPaidTotalAmount { get; set; }
 
        /// <summary>
        /// 该期次应还利息(单位:分)
        /// </summary>
        public Nullable<long> PeriodPayableInterest { get; set; }
 
        /// <summary>
        /// 该期次应还罚息(单位:分,没有则为0)
        /// </summary>
        public Nullable<long> PeriodPayablePenalty { get; set; }
 
        /// <summary>
        /// 该期次应还本金(单位:分)
        /// </summary>
        public Nullable<long> PeriodPayablePrincipal { get; set; }
 
        /// <summary>
        /// 该期次应还总金额(单位:分):应还本金+应还利息+应还罚息
        /// </summary>
        public Nullable<long> PeriodPayableTotalAmount { get; set; }
 
        /// <summary>
        /// 还款时间
        /// </summary>
        public string RepayRealDate { get; set; }
 
        /// <summary>
        /// 还款方式:RMT00 等额本息,RMT01 先息后本
        /// </summary>
        public string RepayType { get; set; }
 
        /// <summary>
        /// 还款编号:当前渠道唯一,用于处理重复通知问题
        /// </summary>
        public string RepaymentNo { get; set; }
 
        /// <summary>
        /// 还款期次:1=第1期
        /// </summary>
        public string RepaymentTerms { get; set; }
 
        /// <summary>
        /// 还款状态:SUCCESS=成功、FAIL=失败、PING=还款中
        /// </summary>
        public string Status { get; set; }
 
        /// <summary>
        /// 还款类型:SYSTERM=系统代扣、ONTIME=按期还款、ADVANCE=提前还款、OVERDUE=逾期还款
        /// </summary>
        public string Type { get; set; }
 
        /// <summary>
        /// 手机号
        /// </summary>
        public string UserMobile { get; set; }
 
        #region IDingTalkRequest Members
 
        public override string GetApiName()
        {
            return "dingtalk.oapi.finance.loan.notify.repayment";
        }
 
        public override string GetApiCallType()
        {
            return DingTalkConstants.CALL_TYPE_OAPI;
        }
 
        public override IDictionary<string, string> GetParameters()
        {
            TopDictionary parameters = new TopDictionary();
            parameters.Add("amount", this.Amount);
            parameters.Add("available_amount", this.AvailableAmount);
            parameters.Add("bank_name", this.BankName);
            parameters.Add("bankcard_no", this.BankcardNo);
            parameters.Add("current_int_ovd_days", this.CurrentIntOvdDays);
            parameters.Add("current_ovd_terms", this.CurrentOvdTerms);
            parameters.Add("current_paid_interest", this.CurrentPaidInterest);
            parameters.Add("current_paid_penalty", this.CurrentPaidPenalty);
            parameters.Add("current_paid_principal", this.CurrentPaidPrincipal);
            parameters.Add("current_paid_total_amount", this.CurrentPaidTotalAmount);
            parameters.Add("current_prin_ovd_days", this.CurrentPrinOvdDays);
            parameters.Add("fail_reason", this.FailReason);
            parameters.Add("fail_reason_to_user", this.FailReasonToUser);
            parameters.Add("id_card_no", this.IdCardNo);
            parameters.Add("loan_order_no", this.LoanOrderNo);
            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("period_paid_all", this.PeriodPaidAll);
            parameters.Add("period_paid_interest", this.PeriodPaidInterest);
            parameters.Add("period_paid_penalty", this.PeriodPaidPenalty);
            parameters.Add("period_paid_principal", this.PeriodPaidPrincipal);
            parameters.Add("period_paid_total_amount", this.PeriodPaidTotalAmount);
            parameters.Add("period_payable_interest", this.PeriodPayableInterest);
            parameters.Add("period_payable_penalty", this.PeriodPayablePenalty);
            parameters.Add("period_payable_principal", this.PeriodPayablePrincipal);
            parameters.Add("period_payable_total_amount", this.PeriodPayableTotalAmount);
            parameters.Add("repay_real_date", this.RepayRealDate);
            parameters.Add("repay_type", this.RepayType);
            parameters.Add("repayment_no", this.RepaymentNo);
            parameters.Add("repayment_terms", this.RepaymentTerms);
            parameters.Add("status", this.Status);
            parameters.Add("type", this.Type);
            parameters.Add("user_mobile", this.UserMobile);
            if (this.otherParams != null)
            {
                parameters.AddAll(this.otherParams);
            }
            return parameters;
        }
 
        public override void Validate()
        {
            RequestValidator.ValidateRequired("amount", this.Amount);
            RequestValidator.ValidateRequired("available_amount", this.AvailableAmount);
            RequestValidator.ValidateRequired("bank_name", this.BankName);
            RequestValidator.ValidateRequired("bankcard_no", this.BankcardNo);
            RequestValidator.ValidateRequired("current_int_ovd_days", this.CurrentIntOvdDays);
            RequestValidator.ValidateRequired("current_ovd_terms", this.CurrentOvdTerms);
            RequestValidator.ValidateRequired("current_paid_interest", this.CurrentPaidInterest);
            RequestValidator.ValidateRequired("current_paid_penalty", this.CurrentPaidPenalty);
            RequestValidator.ValidateRequired("current_paid_principal", this.CurrentPaidPrincipal);
            RequestValidator.ValidateRequired("current_paid_total_amount", this.CurrentPaidTotalAmount);
            RequestValidator.ValidateRequired("current_prin_ovd_days", this.CurrentPrinOvdDays);
            RequestValidator.ValidateRequired("fail_reason", this.FailReason);
            RequestValidator.ValidateRequired("fail_reason_to_user", this.FailReasonToUser);
            RequestValidator.ValidateRequired("id_card_no", this.IdCardNo);
            RequestValidator.ValidateRequired("loan_order_no", this.LoanOrderNo);
            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("period_paid_all", this.PeriodPaidAll);
            RequestValidator.ValidateRequired("period_paid_interest", this.PeriodPaidInterest);
            RequestValidator.ValidateRequired("period_paid_penalty", this.PeriodPaidPenalty);
            RequestValidator.ValidateRequired("period_paid_principal", this.PeriodPaidPrincipal);
            RequestValidator.ValidateRequired("period_paid_total_amount", this.PeriodPaidTotalAmount);
            RequestValidator.ValidateRequired("period_payable_interest", this.PeriodPayableInterest);
            RequestValidator.ValidateRequired("period_payable_penalty", this.PeriodPayablePenalty);
            RequestValidator.ValidateRequired("period_payable_principal", this.PeriodPayablePrincipal);
            RequestValidator.ValidateRequired("period_payable_total_amount", this.PeriodPayableTotalAmount);
            RequestValidator.ValidateRequired("repay_real_date", this.RepayRealDate);
            RequestValidator.ValidateRequired("repay_type", this.RepayType);
            RequestValidator.ValidateRequired("repayment_no", this.RepaymentNo);
            RequestValidator.ValidateRequired("repayment_terms", this.RepaymentTerms);
            RequestValidator.ValidateRequired("status", this.Status);
            RequestValidator.ValidateRequired("type", this.Type);
            RequestValidator.ValidateRequired("user_mobile", this.UserMobile);
        }
 
        #endregion
    }
}