-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfengzhang.html
690 lines (649 loc) · 56.7 KB
/
fengzhang.html
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
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
<!doctype html>
<html>
<head>
<meta charset='UTF-8'><meta name='viewport' content='width=device-width initial-scale=1'>
<title>分账</title><link href='https://fonts.loli.net/css?family=Open+Sans:400italic,700italic,700,400&subset=latin,latin-ext' rel='stylesheet' type='text/css' /><style type='text/css'>html {overflow-x: initial !important;}:root { --node-fill: #ECECFF; --node-border: #CCCCFF; --cluster-fill: #ffffde; --cluster-border: #aaaa33; --note-fill: #fff5ad; --note-border: #aaaa33; --mermaid-color: var(--text-color); }
.label { font-family: var(--mermaid-font-family); color: rgb(51, 51, 51); }
.label text { fill: rgb(51, 51, 51); }
.node rect, .node circle, .node ellipse, .node polygon { fill: var(--node-fill); stroke: rgb(147, 112, 219); stroke-width: 1px; }
.node .label { text-align: center; }
.node.clickable { cursor: pointer; }
.arrowheadPath { fill: var(--text-color); }
.edgePath .path { stroke: var(--text-color); stroke-width: 1.5px; }
.edgeLabel { background-color: rgb(232, 232, 232); text-align: center; }
.cluster rect { fill: var(--cluster-fill); stroke: var(--cluster-border); stroke-width: 1px; }
.cluster text { fill: var(--text-color); }
div.mermaidTooltip { position: absolute; text-align: center; max-width: 200px; padding: 2px; font-family: var(--mermaid-font-family); font-size: 12px; background: var(--cluster-fill); border: 1px solid var(--cluster-border); border-radius: 2px; pointer-events: none; z-index: 100; }
.actor { stroke: var(--node-border); fill: var(--node-fill); }
text.actor { fill: black; stroke: none; }
.actor-line { stroke: grey; }
.messageLine0 { stroke-width: 1.5; stroke: var(--text-color); }
.messageLine1 { stroke-width: 1.5; stroke: var(--text-color); }
#arrowhead { fill: var(--text-color); }
.sequenceNumber { fill: white; }
#sequencenumber { fill: var(--text-color); }
#crosshead path { fill: var(--text-color) !important; stroke: var(--text-color) !important; }
.messageText { fill: var(--text-color); stroke: none; }
.labelBox { stroke: var(--node-border); fill: var(--node-fill); }
.labelText { fill: black; stroke: none; }
.loopText { fill: black; stroke: none; }
.loopLine { stroke-width: 2; stroke: var(--node-border); }
.note { stroke: var(--cluster-border); fill: rgb(255, 245, 173); }
.noteText { fill: black; stroke: none; font-family: var(--mermaid-font-family); font-size: 14px; }
.activation0 { fill: rgb(244, 244, 244); stroke: rgb(102, 102, 102); }
.activation1 { fill: rgb(244, 244, 244); stroke: rgb(102, 102, 102); }
.activation2 { fill: rgb(244, 244, 244); stroke: rgb(102, 102, 102); }
.mermaid-main-font { font-family: var(--mermaid-font-family); }
.section { stroke: none; opacity: 0.2; }
.section0 { fill: rgba(102, 102, 255, 0.49); }
.section2 { fill: rgb(255, 244, 0); }
.section1, .section3 { fill: white; opacity: 0.2; }
.sectionTitle0 { fill: var(--text-color); }
.sectionTitle1 { fill: var(--text-color); }
.sectionTitle2 { fill: var(--text-color); }
.sectionTitle3 { fill: var(--text-color); }
.sectionTitle { text-anchor: start; font-size: 11px; font-family: var(--mermaid-font-family); }
.grid .tick { stroke: lightgrey; opacity: 0.3; shape-rendering: crispedges; }
.grid .tick text { font-family: var(--mermaid-font-family); }
.grid path { stroke-width: 0; }
.today { fill: none; stroke: red; stroke-width: 2px; }
.task { stroke-width: 2; }
.taskText { text-anchor: middle; font-family: var(--mermaid-font-family); }
.taskText:not([font-size]) { font-size: 11px; }
.taskTextOutsideRight { fill: black; text-anchor: start; font-size: 11px; font-family: var(--mermaid-font-family); }
.taskTextOutsideLeft { fill: black; text-anchor: end; font-size: 11px; }
.task.clickable { cursor: pointer; }
.taskText.clickable { cursor: pointer; font-weight: bold; fill: rgb(0, 49, 99) !important; }
.taskTextOutsideLeft.clickable { cursor: pointer; font-weight: bold; fill: rgb(0, 49, 99) !important; }
.taskTextOutsideRight.clickable { cursor: pointer; font-weight: bold; fill: rgb(0, 49, 99) !important; }
.taskText0, .taskText1, .taskText2, .taskText3 { fill: white; }
.task0, .task1, .task2, .task3 { fill: rgb(138, 144, 221); stroke: rgb(83, 79, 188); }
.taskTextOutside0, .taskTextOutside2 { fill: black; }
.taskTextOutside1, .taskTextOutside3 { fill: black; }
.active0, .active1, .active2, .active3 { fill: rgb(191, 199, 255); stroke: rgb(83, 79, 188); }
.activeText0, .activeText1, .activeText2, .activeText3 { fill: black !important; }
.done0, .done1, .done2, .done3 { stroke: grey; fill: lightgrey; stroke-width: 2; }
.doneText0, .doneText1, .doneText2, .doneText3 { fill: black !important; }
.crit0, .crit1, .crit2, .crit3 { stroke: rgb(255, 136, 136); fill: red; stroke-width: 2; }
.activeCrit0, .activeCrit1, .activeCrit2, .activeCrit3 { stroke: rgb(255, 136, 136); fill: rgb(191, 199, 255); stroke-width: 2; }
.doneCrit0, .doneCrit1, .doneCrit2, .doneCrit3 { stroke: rgb(255, 136, 136); fill: lightgrey; stroke-width: 2; cursor: pointer; shape-rendering: crispedges; }
.milestone { transform: rotate(45deg) scale(0.8, 0.8); }
.milestoneText { font-style: italic; }
.doneCritText0, .doneCritText1, .doneCritText2, .doneCritText3 { fill: black !important; }
.activeCritText0, .activeCritText1, .activeCritText2, .activeCritText3 { fill: black !important; }
.titleText { text-anchor: middle; font-size: 18px; fill: black; font-family: var(--mermaid-font-family); }
g.classGroup text { fill: rgb(147, 112, 219); stroke: none; font-family: var(--mermaid-font-family); font-size: 10px; }
g.classGroup text .title { font-weight: bolder; }
g.classGroup rect { fill: var(--node-fill); stroke: rgb(147, 112, 219); }
g.classGroup line { stroke: rgb(147, 112, 219); stroke-width: 1; }
.classLabel .box { stroke: none; stroke-width: 0; fill: var(--node-fill); opacity: 0.5; }
.classLabel .label { fill: rgb(147, 112, 219); font-size: 10px; }
.relation { stroke: rgb(147, 112, 219); stroke-width: 1; fill: none; }
#compositionStart { fill: rgb(147, 112, 219); stroke: rgb(147, 112, 219); stroke-width: 1; }
#compositionEnd { fill: rgb(147, 112, 219); stroke: rgb(147, 112, 219); stroke-width: 1; }
#aggregationStart { fill: var(--node-fill); stroke: rgb(147, 112, 219); stroke-width: 1; }
#aggregationEnd { fill: var(--node-fill); stroke: rgb(147, 112, 219); stroke-width: 1; }
#dependencyStart { fill: rgb(147, 112, 219); stroke: rgb(147, 112, 219); stroke-width: 1; }
#dependencyEnd { fill: rgb(147, 112, 219); stroke: rgb(147, 112, 219); stroke-width: 1; }
#extensionStart { fill: rgb(147, 112, 219); stroke: rgb(147, 112, 219); stroke-width: 1; }
#extensionEnd { fill: rgb(147, 112, 219); stroke: rgb(147, 112, 219); stroke-width: 1; }
.commit-id, .commit-msg, .branch-label { fill: lightgrey; color: lightgrey; font-family: var(--mermaid-font-family); }
.pieTitleText { text-anchor: middle; font-size: 25px; fill: var(--text-color); font-family: var(--mermaid-font-family); }
.slice { font-family: var(--mermaid-font-family); }
g.stateGroup text { fill: rgb(147, 112, 219); stroke: none; font-size: 10px; font-family: var(--mermaid-font-family); }
g.stateGroup text { fill: rgb(147, 112, 219); stroke: none; font-size: 10px; }
g.stateGroup .state-title { font-weight: bolder; fill: black; }
g.stateGroup rect { fill: var(--node-fill); stroke: rgb(147, 112, 219); }
g.stateGroup line { stroke: rgb(147, 112, 219); stroke-width: 1; }
.transition { stroke: rgb(147, 112, 219); stroke-width: 1; fill: none; }
.stateGroup .composit { fill: white; border-bottom: 1px; }
.state-note { stroke: var(--cluster-border); fill: rgb(255, 245, 173); }
.state-note text { fill: black; stroke: none; font-size: 10px; }
.stateLabel .box { stroke: none; stroke-width: 0; fill: var(--node-fill); opacity: 0.5; }
.stateLabel text { fill: black; font-size: 10px; font-weight: bold; font-family: var(--mermaid-font-family); }
.node text { font-size: 14px; }
div.mermaidTooltip { position: absolute; text-align: center; max-width: 200px; padding: 2px; font-family: var(--mermaid-font-family); font-size: 12px; background: var(--cluster-fill); border: 1px solid var(--cluster-border); border-radius: 2px; pointer-events: none; z-index: 100; }
#write .md-diagram-panel .md-diagram-panel-preview div { width: initial; }
:root { --bg-color:#ffffff; --text-color:#333333; --select-text-bg-color:#B5D6FC; --select-text-font-color:auto; --monospace:"Lucida Console",Consolas,"Courier",monospace; }
html { font-size: 14px; background-color: var(--bg-color); color: var(--text-color); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; }
body { margin: 0px; padding: 0px; height: auto; bottom: 0px; top: 0px; left: 0px; right: 0px; font-size: 1rem; line-height: 1.42857; overflow-x: hidden; background: inherit; tab-size: 4; }
iframe { margin: auto; }
a.url { word-break: break-all; }
a:active, a:hover { outline: 0px; }
.in-text-selection, ::selection { text-shadow: none; background: var(--select-text-bg-color); color: var(--select-text-font-color); }
#write { margin: 0px auto; height: auto; width: inherit; word-break: normal; overflow-wrap: break-word; position: relative; white-space: normal; overflow-x: visible; padding-top: 40px; }
#write.first-line-indent p { text-indent: 2em; }
#write.first-line-indent li p, #write.first-line-indent p * { text-indent: 0px; }
#write.first-line-indent li { margin-left: 2em; }
.for-image #write { padding-left: 8px; padding-right: 8px; }
body.typora-export { padding-left: 30px; padding-right: 30px; }
.typora-export .footnote-line, .typora-export li, .typora-export p { white-space: pre-wrap; }
@media screen and (max-width: 500px) {
body.typora-export { padding-left: 0px; padding-right: 0px; }
#write { padding-left: 20px; padding-right: 20px; }
.CodeMirror-sizer { margin-left: 0px !important; }
.CodeMirror-gutters { display: none !important; }
}
#write li > figure:last-child { margin-bottom: 0.5rem; }
#write ol, #write ul { position: relative; }
img { max-width: 100%; vertical-align: middle; }
button, input, select, textarea { color: inherit; font: inherit; }
input[type="checkbox"], input[type="radio"] { line-height: normal; padding: 0px; }
*, ::after, ::before { box-sizing: border-box; }
#write h1, #write h2, #write h3, #write h4, #write h5, #write h6, #write p, #write pre { width: inherit; }
#write h1, #write h2, #write h3, #write h4, #write h5, #write h6, #write p { position: relative; }
p { line-height: inherit; }
h1, h2, h3, h4, h5, h6 { break-after: avoid-page; break-inside: avoid; orphans: 2; }
p { orphans: 4; }
h1 { font-size: 2rem; }
h2 { font-size: 1.8rem; }
h3 { font-size: 1.6rem; }
h4 { font-size: 1.4rem; }
h5 { font-size: 1.2rem; }
h6 { font-size: 1rem; }
.md-math-block, .md-rawblock, h1, h2, h3, h4, h5, h6, p { margin-top: 1rem; margin-bottom: 1rem; }
.hidden { display: none; }
.md-blockmeta { color: rgb(204, 204, 204); font-weight: 700; font-style: italic; }
a { cursor: pointer; }
sup.md-footnote { padding: 2px 4px; background-color: rgba(238, 238, 238, 0.7); color: rgb(85, 85, 85); border-radius: 4px; cursor: pointer; }
sup.md-footnote a, sup.md-footnote a:hover { color: inherit; text-transform: inherit; text-decoration: inherit; }
#write input[type="checkbox"] { cursor: pointer; width: inherit; height: inherit; }
figure { overflow-x: auto; margin: 1.2em 0px; max-width: calc(100% + 16px); padding: 0px; }
figure > table { margin: 0px !important; }
tr { break-inside: avoid; break-after: auto; }
thead { display: table-header-group; }
table { border-collapse: collapse; border-spacing: 0px; width: 100%; overflow: auto; break-inside: auto; text-align: left; }
table.md-table td { min-width: 32px; }
.CodeMirror-gutters { border-right: 0px; background-color: inherit; }
.CodeMirror-linenumber { user-select: none; }
.CodeMirror { text-align: left; }
.CodeMirror-placeholder { opacity: 0.3; }
.CodeMirror pre { padding: 0px 4px; }
.CodeMirror-lines { padding: 0px; }
div.hr:focus { cursor: none; }
#write pre { white-space: pre-wrap; }
#write.fences-no-line-wrapping pre { white-space: pre; }
#write pre.ty-contain-cm { white-space: normal; }
.CodeMirror-gutters { margin-right: 4px; }
.md-fences { font-size: 0.9rem; display: block; break-inside: avoid; text-align: left; overflow: visible; white-space: pre; background: inherit; position: relative !important; }
.md-diagram-panel { width: 100%; margin-top: 10px; text-align: center; padding-top: 0px; padding-bottom: 8px; overflow-x: auto; }
#write .md-fences.mock-cm { white-space: pre-wrap; }
.md-fences.md-fences-with-lineno { padding-left: 0px; }
#write.fences-no-line-wrapping .md-fences.mock-cm { white-space: pre; overflow-x: auto; }
.md-fences.mock-cm.md-fences-with-lineno { padding-left: 8px; }
.CodeMirror-line, twitterwidget { break-inside: avoid; }
.footnotes { opacity: 0.8; font-size: 0.9rem; margin-top: 1em; margin-bottom: 1em; }
.footnotes + .footnotes { margin-top: 0px; }
.md-reset { margin: 0px; padding: 0px; border: 0px; outline: 0px; vertical-align: top; background: 0px 0px; text-decoration: none; text-shadow: none; float: none; position: static; width: auto; height: auto; white-space: nowrap; cursor: inherit; -webkit-tap-highlight-color: transparent; line-height: normal; font-weight: 400; text-align: left; box-sizing: content-box; direction: ltr; }
li div { padding-top: 0px; }
blockquote { margin: 1rem 0px; }
li .mathjax-block, li p { margin: 0.5rem 0px; }
li { margin: 0px; position: relative; }
blockquote > :last-child { margin-bottom: 0px; }
blockquote > :first-child, li > :first-child { margin-top: 0px; }
.footnotes-area { color: rgb(136, 136, 136); margin-top: 0.714rem; padding-bottom: 0.143rem; white-space: normal; }
#write .footnote-line { white-space: pre-wrap; }
@media print {
body, html { border: 1px solid transparent; height: 99%; break-after: avoid; break-before: avoid; }
#write { margin-top: 0px; padding-top: 0px; border-color: transparent !important; }
.typora-export * { -webkit-print-color-adjust: exact; }
html.blink-to-pdf { font-size: 13px; }
.typora-export #write { padding-left: 32px; padding-right: 32px; padding-bottom: 0px; break-after: avoid; }
.typora-export #write::after { height: 0px; }
}
.footnote-line { margin-top: 0.714em; font-size: 0.7em; }
a img, img a { cursor: pointer; }
pre.md-meta-block { font-size: 0.8rem; min-height: 0.8rem; white-space: pre-wrap; background: rgb(204, 204, 204); display: block; overflow-x: hidden; }
p > .md-image:only-child:not(.md-img-error) img, p > img:only-child { display: block; margin: auto; }
p > .md-image:only-child { display: inline-block; width: 100%; }
#write .MathJax_Display { margin: 0.8em 0px 0px; }
.md-math-block { width: 100%; }
.md-math-block:not(:empty)::after { display: none; }
[contenteditable="true"]:active, [contenteditable="true"]:focus, [contenteditable="false"]:active, [contenteditable="false"]:focus { outline: 0px; box-shadow: none; }
.md-task-list-item { position: relative; list-style-type: none; }
.task-list-item.md-task-list-item { padding-left: 0px; }
.md-task-list-item > input { position: absolute; top: 0px; left: 0px; margin-left: -1.2em; margin-top: calc(1em - 10px); border: none; }
.math { font-size: 1rem; }
.md-toc { min-height: 3.58rem; position: relative; font-size: 0.9rem; border-radius: 10px; }
.md-toc-content { position: relative; margin-left: 0px; }
.md-toc-content::after, .md-toc::after { display: none; }
.md-toc-item { display: block; color: rgb(65, 131, 196); }
.md-toc-item a { text-decoration: none; }
.md-toc-inner:hover { text-decoration: underline; }
.md-toc-inner { display: inline-block; cursor: pointer; }
.md-toc-h1 .md-toc-inner { margin-left: 0px; font-weight: 700; }
.md-toc-h2 .md-toc-inner { margin-left: 2em; }
.md-toc-h3 .md-toc-inner { margin-left: 4em; }
.md-toc-h4 .md-toc-inner { margin-left: 6em; }
.md-toc-h5 .md-toc-inner { margin-left: 8em; }
.md-toc-h6 .md-toc-inner { margin-left: 10em; }
@media screen and (max-width: 48em) {
.md-toc-h3 .md-toc-inner { margin-left: 3.5em; }
.md-toc-h4 .md-toc-inner { margin-left: 5em; }
.md-toc-h5 .md-toc-inner { margin-left: 6.5em; }
.md-toc-h6 .md-toc-inner { margin-left: 8em; }
}
a.md-toc-inner { font-size: inherit; font-style: inherit; font-weight: inherit; line-height: inherit; }
.footnote-line a:not(.reversefootnote) { color: inherit; }
.md-attr { display: none; }
.md-fn-count::after { content: "."; }
code, pre, samp, tt { font-family: var(--monospace); }
kbd { margin: 0px 0.1em; padding: 0.1em 0.6em; font-size: 0.8em; color: rgb(36, 39, 41); background: rgb(255, 255, 255); border: 1px solid rgb(173, 179, 185); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap; vertical-align: middle; }
.md-comment { color: rgb(162, 127, 3); opacity: 0.8; font-family: var(--monospace); }
code { text-align: left; vertical-align: initial; }
a.md-print-anchor { white-space: pre !important; border-width: initial !important; border-style: none !important; border-color: initial !important; display: inline-block !important; position: absolute !important; width: 1px !important; right: 0px !important; outline: 0px !important; background: 0px 0px !important; text-decoration: initial !important; text-shadow: initial !important; }
.md-inline-math .MathJax_SVG .noError { display: none !important; }
.html-for-mac .inline-math-svg .MathJax_SVG { vertical-align: 0.2px; }
.md-math-block .MathJax_SVG_Display { text-align: center; margin: 0px; position: relative; text-indent: 0px; max-width: none; max-height: none; min-height: 0px; min-width: 100%; width: auto; overflow-y: hidden; display: block !important; }
.MathJax_SVG_Display, .md-inline-math .MathJax_SVG_Display { width: auto; margin: inherit; display: inline-block !important; }
.MathJax_SVG .MJX-monospace { font-family: var(--monospace); }
.MathJax_SVG .MJX-sans-serif { font-family: sans-serif; }
.MathJax_SVG { display: inline; font-style: normal; font-weight: 400; line-height: normal; zoom: 90%; text-indent: 0px; text-align: left; text-transform: none; letter-spacing: normal; word-spacing: normal; overflow-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px; }
.MathJax_SVG * { transition: none 0s ease 0s; }
.MathJax_SVG_Display svg { vertical-align: middle !important; margin-bottom: 0px !important; margin-top: 0px !important; }
.os-windows.monocolor-emoji .md-emoji { font-family: "Segoe UI Symbol", sans-serif; }
.md-diagram-panel > svg { max-width: 100%; }
[lang="flow"] svg, [lang="mermaid"] svg { max-width: 100%; height: auto; }
[lang="mermaid"] .node text { font-size: 1rem; }
table tr th { border-bottom: 0px; }
video { max-width: 100%; display: block; margin: 0px auto; }
iframe { max-width: 100%; width: 100%; border: none; }
.highlight td, .highlight tr { border: 0px; }
svg[id^="mermaidChart"] { line-height: 1em; }
mark { background: rgb(255, 255, 0); color: rgb(0, 0, 0); }
.md-html-inline .md-plain, .md-html-inline strong, mark .md-inline-math, mark strong { color: inherit; }
mark .md-meta { color: rgb(0, 0, 0); opacity: 0.3 !important; }
.CodeMirror { height: auto; }
.CodeMirror.cm-s-inner { background: inherit; }
.CodeMirror-scroll { overflow: auto hidden; z-index: 3; }
.CodeMirror-gutter-filler, .CodeMirror-scrollbar-filler { background-color: rgb(255, 255, 255); }
.CodeMirror-gutters { border-right: 1px solid rgb(221, 221, 221); background: inherit; white-space: nowrap; }
.CodeMirror-linenumber { padding: 0px 3px 0px 5px; text-align: right; color: rgb(153, 153, 153); }
.cm-s-inner .cm-keyword { color: rgb(119, 0, 136); }
.cm-s-inner .cm-atom, .cm-s-inner.cm-atom { color: rgb(34, 17, 153); }
.cm-s-inner .cm-number { color: rgb(17, 102, 68); }
.cm-s-inner .cm-def { color: rgb(0, 0, 255); }
.cm-s-inner .cm-variable { color: rgb(0, 0, 0); }
.cm-s-inner .cm-variable-2 { color: rgb(0, 85, 170); }
.cm-s-inner .cm-variable-3 { color: rgb(0, 136, 85); }
.cm-s-inner .cm-string { color: rgb(170, 17, 17); }
.cm-s-inner .cm-property { color: rgb(0, 0, 0); }
.cm-s-inner .cm-operator { color: rgb(152, 26, 26); }
.cm-s-inner .cm-comment, .cm-s-inner.cm-comment { color: rgb(170, 85, 0); }
.cm-s-inner .cm-string-2 { color: rgb(255, 85, 0); }
.cm-s-inner .cm-meta { color: rgb(85, 85, 85); }
.cm-s-inner .cm-qualifier { color: rgb(85, 85, 85); }
.cm-s-inner .cm-builtin { color: rgb(51, 0, 170); }
.cm-s-inner .cm-bracket { color: rgb(153, 153, 119); }
.cm-s-inner .cm-tag { color: rgb(17, 119, 0); }
.cm-s-inner .cm-attribute { color: rgb(0, 0, 204); }
.cm-s-inner .cm-header, .cm-s-inner.cm-header { color: rgb(0, 0, 255); }
.cm-s-inner .cm-quote, .cm-s-inner.cm-quote { color: rgb(0, 153, 0); }
.cm-s-inner .cm-hr, .cm-s-inner.cm-hr { color: rgb(153, 153, 153); }
.cm-s-inner .cm-link, .cm-s-inner.cm-link { color: rgb(0, 0, 204); }
.cm-negative { color: rgb(221, 68, 68); }
.cm-positive { color: rgb(34, 153, 34); }
.cm-header, .cm-strong { font-weight: 700; }
.cm-del { text-decoration: line-through; }
.cm-em { font-style: italic; }
.cm-link { text-decoration: underline; }
.cm-error { color: red; }
.cm-invalidchar { color: red; }
.cm-constant { color: rgb(38, 139, 210); }
.cm-defined { color: rgb(181, 137, 0); }
div.CodeMirror span.CodeMirror-matchingbracket { color: rgb(0, 255, 0); }
div.CodeMirror span.CodeMirror-nonmatchingbracket { color: rgb(255, 34, 34); }
.cm-s-inner .CodeMirror-activeline-background { background: inherit; }
.CodeMirror { position: relative; overflow: hidden; }
.CodeMirror-scroll { height: 100%; outline: 0px; position: relative; box-sizing: content-box; background: inherit; }
.CodeMirror-sizer { position: relative; }
.CodeMirror-gutter-filler, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-vscrollbar { position: absolute; z-index: 6; display: none; }
.CodeMirror-vscrollbar { right: 0px; top: 0px; overflow: hidden; }
.CodeMirror-hscrollbar { bottom: 0px; left: 0px; overflow: hidden; }
.CodeMirror-scrollbar-filler { right: 0px; bottom: 0px; }
.CodeMirror-gutter-filler { left: 0px; bottom: 0px; }
.CodeMirror-gutters { position: absolute; left: 0px; top: 0px; padding-bottom: 30px; z-index: 3; }
.CodeMirror-gutter { white-space: normal; height: 100%; box-sizing: content-box; padding-bottom: 30px; margin-bottom: -32px; display: inline-block; }
.CodeMirror-gutter-wrapper { position: absolute; z-index: 4; background: 0px 0px !important; border: none !important; }
.CodeMirror-gutter-background { position: absolute; top: 0px; bottom: 0px; z-index: 4; }
.CodeMirror-gutter-elt { position: absolute; cursor: default; z-index: 4; }
.CodeMirror-lines { cursor: text; }
.CodeMirror pre { border-radius: 0px; border-width: 0px; background: 0px 0px; font-family: inherit; font-size: inherit; margin: 0px; white-space: pre; overflow-wrap: normal; color: inherit; z-index: 2; position: relative; overflow: visible; }
.CodeMirror-wrap pre { overflow-wrap: break-word; white-space: pre-wrap; word-break: normal; }
.CodeMirror-code pre { border-right: 30px solid transparent; width: fit-content; }
.CodeMirror-wrap .CodeMirror-code pre { border-right: none; width: auto; }
.CodeMirror-linebackground { position: absolute; left: 0px; right: 0px; top: 0px; bottom: 0px; z-index: 0; }
.CodeMirror-linewidget { position: relative; z-index: 2; overflow: auto; }
.CodeMirror-wrap .CodeMirror-scroll { overflow-x: hidden; }
.CodeMirror-measure { position: absolute; width: 100%; height: 0px; overflow: hidden; visibility: hidden; }
.CodeMirror-measure pre { position: static; }
.CodeMirror div.CodeMirror-cursor { position: absolute; visibility: hidden; border-right: none; width: 0px; }
.CodeMirror div.CodeMirror-cursor { visibility: hidden; }
.CodeMirror-focused div.CodeMirror-cursor { visibility: inherit; }
.cm-searching { background: rgba(255, 255, 0, 0.4); }
@media print {
.CodeMirror div.CodeMirror-cursor { visibility: hidden; }
}
:root {
--side-bar-bg-color: #fafafa;
--control-text-color: #777;
}
@include-when-export url(https://fonts.loli.net/css?family=Open+Sans:400italic,700italic,700,400&subset=latin,latin-ext);
html {
font-size: 16px;
}
body {
font-family: "Open Sans","Clear Sans","Helvetica Neue",Helvetica,Arial,sans-serif;
color: rgb(51, 51, 51);
line-height: 1.6;
}
#write {
max-width: 860px;
margin: 0 auto;
padding: 30px;
padding-bottom: 100px;
}
#write > ul:first-child,
#write > ol:first-child{
margin-top: 30px;
}
a {
color: #4183C4;
}
h1,
h2,
h3,
h4,
h5,
h6 {
position: relative;
margin-top: 1rem;
margin-bottom: 1rem;
font-weight: bold;
line-height: 1.4;
cursor: text;
}
h1:hover a.anchor,
h2:hover a.anchor,
h3:hover a.anchor,
h4:hover a.anchor,
h5:hover a.anchor,
h6:hover a.anchor {
text-decoration: none;
}
h1 tt,
h1 code {
font-size: inherit;
}
h2 tt,
h2 code {
font-size: inherit;
}
h3 tt,
h3 code {
font-size: inherit;
}
h4 tt,
h4 code {
font-size: inherit;
}
h5 tt,
h5 code {
font-size: inherit;
}
h6 tt,
h6 code {
font-size: inherit;
}
h1 {
padding-bottom: .3em;
font-size: 2.25em;
line-height: 1.2;
border-bottom: 1px solid #eee;
}
h2 {
padding-bottom: .3em;
font-size: 1.75em;
line-height: 1.225;
border-bottom: 1px solid #eee;
}
h3 {
font-size: 1.5em;
line-height: 1.43;
}
h4 {
font-size: 1.25em;
}
h5 {
font-size: 1em;
}
h6 {
font-size: 1em;
color: #777;
}
p,
blockquote,
ul,
ol,
dl,
table{
margin: 0.8em 0;
}
li>ol,
li>ul {
margin: 0 0;
}
hr {
height: 2px;
padding: 0;
margin: 16px 0;
background-color: #e7e7e7;
border: 0 none;
overflow: hidden;
box-sizing: content-box;
}
li p.first {
display: inline-block;
}
ul,
ol {
padding-left: 30px;
}
ul:first-child,
ol:first-child {
margin-top: 0;
}
ul:last-child,
ol:last-child {
margin-bottom: 0;
}
blockquote {
border-left: 4px solid #dfe2e5;
padding: 0 15px;
color: #777777;
}
blockquote blockquote {
padding-right: 0;
}
table {
padding: 0;
word-break: initial;
}
table tr {
border-top: 1px solid #dfe2e5;
margin: 0;
padding: 0;
}
table tr:nth-child(2n),
thead {
background-color: #f8f8f8;
}
table tr th {
font-weight: bold;
border: 1px solid #dfe2e5;
border-bottom: 0;
margin: 0;
padding: 6px 13px;
}
table tr td {
border: 1px solid #dfe2e5;
margin: 0;
padding: 6px 13px;
}
table tr th:first-child,
table tr td:first-child {
margin-top: 0;
}
table tr th:last-child,
table tr td:last-child {
margin-bottom: 0;
}
.CodeMirror-lines {
padding-left: 4px;
}
.code-tooltip {
box-shadow: 0 1px 1px 0 rgba(0,28,36,.3);
border-top: 1px solid #eef2f2;
}
.md-fences,
code,
tt {
border: 1px solid #e7eaed;
background-color: #f8f8f8;
border-radius: 3px;
padding: 0;
padding: 2px 4px 0px 4px;
font-size: 0.9em;
}
code {
background-color: #f3f4f4;
padding: 0 2px 0 2px;
}
.md-fences {
margin-bottom: 15px;
margin-top: 15px;
padding-top: 8px;
padding-bottom: 6px;
}
.md-task-list-item > input {
margin-left: -1.3em;
}
@media print {
html {
font-size: 13px;
}
table,
pre {
page-break-inside: avoid;
}
pre {
word-wrap: break-word;
}
}
.md-fences {
background-color: #f8f8f8;
}
#write pre.md-meta-block {
padding: 1rem;
font-size: 85%;
line-height: 1.45;
background-color: #f7f7f7;
border: 0;
border-radius: 3px;
color: #777777;
margin-top: 0 !important;
}
.mathjax-block>.code-tooltip {
bottom: .375rem;
}
.md-mathjax-midline {
background: #fafafa;
}
#write>h3.md-focus:before{
left: -1.5625rem;
top: .375rem;
}
#write>h4.md-focus:before{
left: -1.5625rem;
top: .285714286rem;
}
#write>h5.md-focus:before{
left: -1.5625rem;
top: .285714286rem;
}
#write>h6.md-focus:before{
left: -1.5625rem;
top: .285714286rem;
}
.md-image>.md-meta {
/*border: 1px solid #ddd;*/
border-radius: 3px;
padding: 2px 0px 0px 4px;
font-size: 0.9em;
color: inherit;
}
.md-tag {
color: #a7a7a7;
opacity: 1;
}
.md-toc {
margin-top:20px;
padding-bottom:20px;
}
.sidebar-tabs {
border-bottom: none;
}
#typora-quick-open {
border: 1px solid #ddd;
background-color: #f8f8f8;
}
#typora-quick-open-item {
background-color: #FAFAFA;
border-color: #FEFEFE #e5e5e5 #e5e5e5 #eee;
border-style: solid;
border-width: 1px;
}
/** focus mode */
.on-focus-mode blockquote {
border-left-color: rgba(85, 85, 85, 0.12);
}
header, .context-menu, .megamenu-content, footer{
font-family: "Segoe UI", "Arial", sans-serif;
}
.file-node-content:hover .file-node-icon,
.file-node-content:hover .file-node-open-state{
visibility: visible;
}
.mac-seamless-mode #typora-sidebar {
background-color: #fafafa;
background-color: var(--side-bar-bg-color);
}
.md-lang {
color: #b4654d;
}
.html-for-mac .context-menu {
--item-hover-bg-color: #E6F0FE;
}
#md-notification .btn {
border: 0;
}
.dropdown-menu .divider {
border-color: #e5e5e5;
}
.ty-preferences .window-content {
background-color: #fafafa;
}
.ty-preferences .nav-group-item.active {
color: white;
background: #999;
}
</style>
</head>
<body class='typora-export os-windows' >
<div id='write' class = 'is-node'><div class='md-toc' mdtype='toc'><p class="md-toc-content" role="list"><span role="listitem" class="md-toc-item md-toc-h1" data-ref="n969"><a class="md-toc-inner" href="#分账产品prd-v11">分账产品PRD v1.1</a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n970"><a class="md-toc-inner" href="#文档综述">文档综述</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n971"><a class="md-toc-inner" href="#版本记录">版本记录</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n981"><a class="md-toc-inner" href="#名词解释">名词解释</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n998"><a class="md-toc-inner" href="#参考文档">参考文档</a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n1004"><a class="md-toc-inner" href="#产品概述">产品概述</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n1005"><a class="md-toc-inner" href="#项目背景">项目背景</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n1008"><a class="md-toc-inner" href="#项目目标">项目目标</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n1015"><a class="md-toc-inner" href="#用户群体">用户群体</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n1029"><a class="md-toc-inner" href="#功能列表">功能列表</a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n1075"><a class="md-toc-inner" href="#产品设计">产品设计</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n1076"><a class="md-toc-inner" href="#通道对比">通道对比</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n1138"><a class="md-toc-inner" href="#下单接口">下单接口</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n1139"><a class="md-toc-inner" href="#微信子商户">微信子商户</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n1155"><a class="md-toc-inner" href="#乐刷">乐刷</a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n1172"><a class="md-toc-inner" href="#时序图">时序图</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n1173"><a class="md-toc-inner" href="#支付流程">支付流程</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n1175"><a class="md-toc-inner" href="#退单流程">退单流程</a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n1177"><a class="md-toc-inner" href="#信息结构">信息结构</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n1178"><a class="md-toc-inner" href="#分账方管理">分账方管理</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n1201"><a class="md-toc-inner" href="#分账订单列表">分账订单列表</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n1217"><a class="md-toc-inner" href="#分账详情">分账详情</a></span></p></div><h1><a name="分账产品prd-v11" class="md-header-anchor"></a><span>分账产品PRD v1.1</span></h1><h2><a name="文档综述" class="md-header-anchor"></a><span>文档综述</span></h2><h3><a name="版本记录" class="md-header-anchor"></a><span>版本记录</span></h3><figure><table><thead><tr><th><strong><span>版本号</span></strong></th><th><span>修订时间</span></th><th><span>修订内容</span></th></tr></thead><tbody><tr><td><span>1.0</span></td><td><span>2020-04-16</span></td><td><span>第一次提交</span></td></tr></tbody></table></figure><h3><a name="名词解释" class="md-header-anchor"></a><span>名词解释</span></h3><figure><table><thead><tr><th><strong><span>名词</span></strong></th><th><strong><span>概念</span></strong></th></tr></thead><tbody><tr><td><span>分账方</span></td><td><span>将部分交易资金分出的一方,乐刷或微信子商户</span></td></tr><tr><td><span>分账接收方</span></td><td><span>接收资金的一方,乐刷商户号或微信子商户/微信号/openid</span></td></tr><tr><td><span>发起分账</span></td><td><span>支付成功后进行资金分账</span></td></tr><tr><td><span>分账退回</span></td><td><span>支付订单进行退款时候,需要先进行分账退回,才可确保支付订单资金够退</span></td></tr></tbody></table></figure><h3><a name="参考文档" class="md-header-anchor"></a><span>参考文档</span></h3><ol start='' ><li><span>服务商分账接口 </span><a href='https://pay.weixin.qq.com/wiki/doc/api/allocation_sl.php?chapter=24_1&index=1' target='_blank' class='url'>https://pay.weixin.qq.com/wiki/doc/api/allocation_sl.php?chapter=24_1&index=1</a></li><li><span>乐刷分账接口 </span><a href='https://www.yuque.com/leshuazf/doc/fz#KRHuf' target='_blank' class='url'>https://www.yuque.com/leshuazf/doc/fz#KRHuf</a></li></ol><h2><a name="产品概述" class="md-header-anchor"></a><span>产品概述</span></h2><h3><a name="项目背景" class="md-header-anchor"></a><span>项目背景</span></h3><ol start='' ><li><span>针对商场对商户的抽佣,代理商开发0费率客户想抽取一定手续费的场景,需要将顾客支付的费用在扣除手续费之后,分一部分到商场或者代理商的某个账户.</span></li></ol><h3><a name="项目目标" class="md-header-anchor"></a><span>项目目标</span></h3><ol start='' ><li><span>通过分账解决二清问题</span></li><li><span>丰富支付在实际中运用场景</span></li></ol><h3><a name="用户群体" class="md-header-anchor"></a><span>用户群体</span></h3><figure><table><thead><tr><th><span>角色</span></th><th><span>描述</span></th></tr></thead><tbody><tr><td><span>商场管理方</span></td><td><span>针对商家进行提点</span></td></tr><tr><td><span>代理商开发0费率客户</span></td><td><span>抽取千分之X手续费</span></td></tr><tr><td><span>商家联盟</span></td><td><span>针对商家交易进行提点</span></td></tr></tbody></table></figure><h3><a name="功能列表" class="md-header-anchor"></a><span>功能列表</span></h3><figure><table><thead><tr><th style='text-align:center;' ><strong><span>功 能 模块 </span></strong></th><th style='text-align:center;' ><strong><span>功能点</span></strong></th><th style='text-align:center;' ><strong><span>功能描述</span></strong></th></tr></thead><tbody><tr><td style='text-align:center;' ><strong><span>支撑系统</span></strong></td><td style='text-align:center;' ><span>分账接收方管理</span></td><td style='text-align:center;' ><span>管理分账方和分账接收方的关系</span></td></tr><tr><td style='text-align:center;' > </td><td style='text-align:center;' > </td><td style='text-align:center;' > </td></tr><tr><td style='text-align:center;' ><strong><span>支付系统</span></strong></td><td style='text-align:center;' ><span>请求单次分账</span></td><td style='text-align:center;' ><span>支付下单时候增加 profit_sharing 参数,支付成功后需要异步进行分账,分账成功则写入mps_order,做法参考押金预授权?</span></td></tr><tr><td style='text-align:center;' > </td><td style='text-align:center;' ><span>分账查询</span></td><td style='text-align:center;' ><span>用于</span></td></tr><tr><td style='text-align:center;' > </td><td style='text-align:center;' ><span>分账回退</span></td><td style='text-align:center;' ><span>对应订单退款时,需先进行分账回退,再调用退款接口</span></td></tr><tr><td style='text-align:center;' > </td><td style='text-align:center;' ><span>分账回退查询</span></td><td style='text-align:center;' ><span>类似"退款查询"的概念</span></td></tr><tr><td style='text-align:center;' > </td><td style='text-align:center;' ><span>分账订单列表</span></td><td style='text-align:center;' ><span>可查询分账订单,状态</span></td></tr><tr><td style='text-align:center;' ><strong><span>会员系统</span></strong></td><td style='text-align:center;' ><span>移动支付对账单</span></td><td style='text-align:center;' ><span>需增加 分账金额列 汇总(正在改造合并报表呢?)</span></td></tr><tr><td style='text-align:center;' > </td><td style='text-align:center;' ><span>清分报表</span></td><td style='text-align:center;' ><span>需增加 分账金额列以及汇总((正在改造合并报表呢?)</span></td></tr><tr><td style='text-align:center;' ><strong><span>钱客多APP</span></strong></td><td style='text-align:center;' ><span>对账</span></td><td style='text-align:center;' ><span>增加 分账金额 汇总,因为会影响客户对照实际收入</span></td></tr></tbody></table></figure><h2><a name="产品设计" class="md-header-anchor"></a><span>产品设计</span></h2><h3><a name="通道对比" class="md-header-anchor"></a><span>通道对比</span></h3><figure><table><thead><tr><th><span>通道名称</span></th><th><span>乐刷</span></th><th><span>子商户</span></th><th><span>接口说明</span></th></tr></thead><tbody><tr><td><span>申请分账功能</span></td><td><span>【分账授权申请-电子合同版】</span><a href='https://www.yuque.com/leshuazf/doc/fz#3IzIg' target='_blank' class='url'>https://www.yuque.com/leshuazf/doc/fz#3IzIg</a><span> </span><br><span>【分账授权申请】</span><a href='https://www.yuque.com/leshuazf/doc/fz#SDuJJ' target='_blank' class='url'>https://www.yuque.com/leshuazf/doc/fz#SDuJJ</a></td><td><a href='https://pay.weixin.qq.com/wiki/doc/api/allocation_sl.php?chapter=24_2&index=2' target='_blank' class='url'>https://pay.weixin.qq.com/wiki/doc/api/allocation_sl.php?chapter=24_2&index=2</a></td><td> </td></tr><tr><td><span>查询分账开通</span></td><td><a href='https://www.yuque.com/leshuazf/doc/fz#aw3NZ' target='_blank' class='url'>https://www.yuque.com/leshuazf/doc/fz#aw3NZ</a></td><td><span>同意授权就是开通了</span></td><td> </td></tr><tr><td><span>最大分账比例</span></td><td><span>最大30%</span></td><td><span>最大30%</span></td><td> </td></tr><tr><td><span>添加分账方</span></td><td><a href='https://www.yuque.com/leshuazf/doc/fz#inAlJ' target='_blank' class='url'>https://www.yuque.com/leshuazf/doc/fz#inAlJ</a></td><td><a href='https://pay.weixin.qq.com/wiki/doc/api/allocation_sl.php?chapter=25_3&index=4' target='_blank' class='url'>https://pay.weixin.qq.com/wiki/doc/api/allocation_sl.php?chapter=25_3&index=4</a></td><td> </td></tr><tr><td><span>删除分账方</span></td><td><span>无此接口</span></td><td><a href='https://pay.weixin.qq.com/wiki/doc/api/allocation_sl.php?chapter=25_4&index=5' target='_blank' class='url'>https://pay.weixin.qq.com/wiki/doc/api/allocation_sl.php?chapter=25_4&index=5</a></td><td> </td></tr><tr><td><span>请求单次分账</span></td><td><a href='https://www.yuque.com/leshuazf/doc/fz#xxq0D' target='_blank' class='url'>https://www.yuque.com/leshuazf/doc/fz#xxq0D</a></td><td><a href='https://pay.weixin.qq.com/wiki/doc/api/allocation_sl.php?chapter=25_1&index=1' target='_blank' class='url'>https://pay.weixin.qq.com/wiki/doc/api/allocation_sl.php?chapter=25_1&index=1</a></td><td> </td></tr><tr><td><span>请求多次分账</span></td><td><a href='https://www.yuque.com/leshuazf/doc/fz#1mWrX' target='_blank' class='url'>https://www.yuque.com/leshuazf/doc/fz#1mWrX</a></td><td><a href='https://pay.weixin.qq.com/wiki/doc/api/allocation_sl.php?chapter=25_6&index=2' target='_blank' class='url'>https://pay.weixin.qq.com/wiki/doc/api/allocation_sl.php?chapter=25_6&index=2</a></td><td> </td></tr><tr><td><span>分账查询</span></td><td><a href='https://www.yuque.com/leshuazf/doc/fz#PXHzA' target='_blank' class='url'>https://www.yuque.com/leshuazf/doc/fz#PXHzA</a></td><td><a href='https://pay.weixin.qq.com/wiki/doc/api/allocation_sl.php?chapter=25_2&index=3' target='_blank' class='url'>https://pay.weixin.qq.com/wiki/doc/api/allocation_sl.php?chapter=25_2&index=3</a></td><td> </td></tr><tr><td><span>分账回退</span></td><td><a href='https://www.yuque.com/leshuazf/doc/fz#upSk0' target='_blank' class='url'>https://www.yuque.com/leshuazf/doc/fz#upSk0</a></td><td><a href='https://pay.weixin.qq.com/wiki/doc/api/allocation_sl.php?chapter=25_7&index=7' target='_blank' class='url'>https://pay.weixin.qq.com/wiki/doc/api/allocation_sl.php?chapter=25_7&index=7</a></td><td> </td></tr><tr><td><span>分账回退查询</span></td><td><a href='https://www.yuque.com/leshuazf/doc/fz#fhJH2' target='_blank' class='url'>https://www.yuque.com/leshuazf/doc/fz#fhJH2</a></td><td><a href='https://pay.weixin.qq.com/wiki/doc/api/allocation_sl.php?chapter=25_8&index=8' target='_blank' class='url'>https://pay.weixin.qq.com/wiki/doc/api/allocation_sl.php?chapter=25_8&index=8</a></td><td> </td></tr><tr><td><span>分账动账通知</span></td><td><span>分账或分账回退成功后,异步通知</span><br><a href='https://pay.weixin.qq.com/wiki/doc/api/allocation_sl.php?chapter=25_9&index=9' target='_blank' class='url'>https://pay.weixin.qq.com/wiki/doc/api/allocation_sl.php?chapter=25_9&index=9</a></td><td><span>无此接口</span></td><td> </td></tr><tr><td><span>支持支付方式</span></td><td><span>付款码支付(普通,人脸转付款码)、JSAPI支付、APP支付、小程序支付</span></td><td><span>所有支付类型</span></td><td> </td></tr></tbody></table></figure><h3><a name="下单接口" class="md-header-anchor"></a><span>下单接口</span></h3><h4><a name="微信子商户" class="md-header-anchor"></a><span>微信子商户</span></h4><figure><table><thead><tr><th style='text-align:left;' ><span>字段名</span></th><th style='text-align:left;' ><span>变量名</span></th><th style='text-align:left;' ><span>必填</span></th><th style='text-align:left;' ><span>类型</span></th><th style='text-align:left;' ><span>示例值</span></th><th style='text-align:left;' ><span>描述</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>是否指定服务商分账</span></td><td style='text-align:left;' ><span>profit_sharing</span></td><td style='text-align:left;' ><span>否</span></td><td style='text-align:left;' ><span>String(16)</span></td><td style='text-align:left;' ><span>Y</span></td><td style='text-align:left;' ><span>Y-是,需要分账N-否,不分账字母要求大写,不传默认不分账</span></td></tr></tbody></table></figure><h4><a name="乐刷" class="md-header-anchor"></a><span>乐刷</span></h4><figure><table><thead><tr><th><strong><span>字段名</span></strong></th><th><strong><span>变量名</span></strong></th><th><strong><span>必填</span></strong></th><th><strong><span>长度限制</span></strong></th><th><strong><span>类型</span></strong></th><th><strong><span>说明</span></strong></th></tr></thead><tbody><tr><td><span>交易分账标识</span></td><td><span>royalty</span></td><td><span>否</span></td><td><span>1</span></td><td><span>string</span></td><td><span>预授权:2需分账:1不分账:0注:如果未传该字段默认按不分账处理</span></td></tr></tbody></table></figure><p><strong><span>注意事项:调用单次分账接口传1,调用多次分账接口传2</span></strong></p><h2><a name="时序图" class="md-header-anchor"></a><span>时序图</span></h2><h3><a name="支付流程" class="md-header-anchor"></a><span>支付流程</span></h3><div class="md-diagram-panel"><svg id="mermaidChart22" width="591" xmlns="http://www.w3.org/2000/svg" height="630" viewBox="-33 -8 591 630" style="height: 670px;"><style>
:root { --mermaid-font-family: sans-serif}
:root { --mermaid-alt-font-family: sans-serif}</style><style></style><g></g><g><line id="actor66" x1="75" y1="5" x2="75" y2="621" class="actor-line" stroke-width="0.5px" stroke="#999"></line><rect x="0" y="0" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3" class="actor"></rect><text x="75" y="32.5" dominant-baseline="central" alignment-baseline="central" class="actor" style="text-anchor: middle; font-size: 14px;"><tspan x="75" dy="0">业务端</tspan></text></g><g><line id="actor67" x1="275" y1="5" x2="275" y2="621" class="actor-line" stroke-width="0.5px" stroke="#999"></line><rect x="200" y="0" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3" class="actor"></rect><text x="275" y="32.5" dominant-baseline="central" alignment-baseline="central" class="actor" style="text-anchor: middle; font-size: 14px;"><tspan x="275" dy="0">聚合支付</tspan></text></g><g><line id="actor68" x1="475" y1="5" x2="475" y2="621" class="actor-line" stroke-width="0.5px" stroke="#999"></line><rect x="400" y="0" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3" class="actor"></rect><text x="475" y="32.5" dominant-baseline="central" alignment-baseline="central" class="actor" style="text-anchor: middle; font-size: 14px;"><tspan x="475" dy="0">支付通道</tspan></text></g><defs><marker id="arrowhead" refX="5" refY="2" markerWidth="6" markerHeight="4" orient="auto"><path d="M 0,0 V 4 L6,2 Z"></path></marker></defs><defs><marker id="crosshead" markerWidth="15" markerHeight="8" orient="auto" refX="16" refY="4"><path fill="black" stroke="#000000" stroke-width="1px" d="M 9,2 V 6 L16,4 Z" style="stroke-dasharray: 0, 0;"></path><path fill="none" stroke="#000000" stroke-width="1px" d="M 0,1 L 6,7 M 6,1 L 0,7" style="stroke-dasharray: 0, 0;"></path></marker></defs><defs><marker id="sequencenumber" refX="15" refY="15" markerWidth="60" markerHeight="40" orient="auto"><circle cx="15" cy="15" r="6"></circle></marker></defs><g><text x="175" y="93" class="messageText" style="text-anchor: middle;">发起支付请求,传入profit_sharing参数</text><line x1="75" y1="100" x2="275" y2="100" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><text x="275" y="128" class="messageText" style="text-anchor: middle;">记录分账订单</text><path d="M 275,135 C 335,125 335,165 275,155" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></path></g><g><text x="375" y="193" class="messageText" style="text-anchor: middle;">发起支付请求</text><line x1="275" y1="200" x2="475" y2="200" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><text x="375" y="228" class="messageText" style="text-anchor: middle;">返回支付结果</text><line x1="475" y1="235" x2="275" y2="235" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><text x="175" y="263" class="messageText" style="text-anchor: middle;">返回支付结果</text><line x1="275" y1="270" x2="75" y2="270" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><text x="75" y="298" class="messageText" style="text-anchor: middle;">处理业务</text><path d="M 75,305 C 135,295 135,335 75,325" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></path></g><g><text x="375" y="363" class="messageText" style="text-anchor: middle;">调用【请求分账】接口</text><line x1="275" y1="370" x2="475" y2="370" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><text x="375" y="398" class="messageText" style="text-anchor: middle;">返回分账请求结果(非最终结果)</text><line x1="475" y1="405" x2="275" y2="405" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><text x="375" y="433" class="messageText" style="text-anchor: middle;">调用【分账查询】接口</text><line x1="275" y1="440" x2="475" y2="440" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><text x="375" y="468" class="messageText" style="text-anchor: middle;">返回分账最终结果</text><line x1="475" y1="475" x2="275" y2="475" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><text x="275" y="503" class="messageText" style="text-anchor: middle;">更新分账订单和支付订单状态</text><path d="M 275,510 C 335,500 335,540 275,530" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></path></g><g><rect x="0" y="556" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3" class="actor"></rect><text x="75" y="588.5" dominant-baseline="central" alignment-baseline="central" class="actor" style="text-anchor: middle; font-size: 14px;"><tspan x="75" dy="0">业务端</tspan></text></g><g><rect x="200" y="556" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3" class="actor"></rect><text x="275" y="588.5" dominant-baseline="central" alignment-baseline="central" class="actor" style="text-anchor: middle; font-size: 14px;"><tspan x="275" dy="0">聚合支付</tspan></text></g><g><rect x="400" y="556" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3" class="actor"></rect><text x="475" y="588.5" dominant-baseline="central" alignment-baseline="central" class="actor" style="text-anchor: middle; font-size: 14px;"><tspan x="475" dy="0">支付通道</tspan></text></g></svg></div><h3><a name="退单流程" class="md-header-anchor"></a><span>退单流程</span></h3><div class="md-diagram-panel"><svg id="mermaidChart23" width="566" xmlns="http://www.w3.org/2000/svg" height="495" viewBox="-8 -8 566 495" style="height: 535px;"><style>
:root { --mermaid-font-family: sans-serif}
:root { --mermaid-alt-font-family: sans-serif}</style><style></style><g></g><g><line id="actor69" x1="75" y1="5" x2="75" y2="486" class="actor-line" stroke-width="0.5px" stroke="#999"></line><rect x="0" y="0" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3" class="actor"></rect><text x="75" y="32.5" dominant-baseline="central" alignment-baseline="central" class="actor" style="text-anchor: middle; font-size: 14px;"><tspan x="75" dy="0">业务端</tspan></text></g><g><line id="actor70" x1="275" y1="5" x2="275" y2="486" class="actor-line" stroke-width="0.5px" stroke="#999"></line><rect x="200" y="0" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3" class="actor"></rect><text x="275" y="32.5" dominant-baseline="central" alignment-baseline="central" class="actor" style="text-anchor: middle; font-size: 14px;"><tspan x="275" dy="0">聚合支付</tspan></text></g><g><line id="actor71" x1="475" y1="5" x2="475" y2="486" class="actor-line" stroke-width="0.5px" stroke="#999"></line><rect x="400" y="0" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3" class="actor"></rect><text x="475" y="32.5" dominant-baseline="central" alignment-baseline="central" class="actor" style="text-anchor: middle; font-size: 14px;"><tspan x="475" dy="0">支付通道</tspan></text></g><defs><marker id="arrowhead" refX="5" refY="2" markerWidth="6" markerHeight="4" orient="auto"><path d="M 0,0 V 4 L6,2 Z"></path></marker></defs><defs><marker id="crosshead" markerWidth="15" markerHeight="8" orient="auto" refX="16" refY="4"><path fill="black" stroke="#000000" stroke-width="1px" d="M 9,2 V 6 L16,4 Z" style="stroke-dasharray: 0, 0;"></path><path fill="none" stroke="#000000" stroke-width="1px" d="M 0,1 L 6,7 M 6,1 L 0,7" style="stroke-dasharray: 0, 0;"></path></marker></defs><defs><marker id="sequencenumber" refX="15" refY="15" markerWidth="60" markerHeight="40" orient="auto"><circle cx="15" cy="15" r="6"></circle></marker></defs><g><text x="175" y="93" class="messageText" style="text-anchor: middle;">发起退款请求</text><line x1="75" y1="100" x2="275" y2="100" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><text x="375" y="128" class="messageText" style="text-anchor: middle;">发起【分账回退】</text><line x1="275" y1="135" x2="475" y2="135" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><text x="375" y="163" class="messageText" style="text-anchor: middle;">同步返回分账回退结果</text><line x1="475" y1="170" x2="275" y2="170" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><text x="275" y="198" class="messageText" style="text-anchor: middle;">更新分账订单状态</text><path d="M 275,205 C 335,195 335,235 275,225" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></path></g><g><text x="375" y="263" class="messageText" style="text-anchor: middle;">发起退款请求</text><line x1="275" y1="270" x2="475" y2="270" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><text x="375" y="298" class="messageText" style="text-anchor: middle;">返回退款结果</text><line x1="475" y1="305" x2="275" y2="305" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><text x="275" y="333" class="messageText" style="text-anchor: middle;">更新支付订单状态</text><path d="M 275,340 C 335,330 335,370 275,360" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></path></g><g><text x="175" y="398" class="messageText" style="text-anchor: middle;">返回退款结果</text><line x1="275" y1="405" x2="75" y2="405" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><rect x="0" y="421" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3" class="actor"></rect><text x="75" y="453.5" dominant-baseline="central" alignment-baseline="central" class="actor" style="text-anchor: middle; font-size: 14px;"><tspan x="75" dy="0">业务端</tspan></text></g><g><rect x="200" y="421" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3" class="actor"></rect><text x="275" y="453.5" dominant-baseline="central" alignment-baseline="central" class="actor" style="text-anchor: middle; font-size: 14px;"><tspan x="275" dy="0">聚合支付</tspan></text></g><g><rect x="400" y="421" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3" class="actor"></rect><text x="475" y="453.5" dominant-baseline="central" alignment-baseline="central" class="actor" style="text-anchor: middle; font-size: 14px;"><tspan x="475" dy="0">支付通道</tspan></text></g></svg></div><h2><a name="信息结构" class="md-header-anchor"></a><span>信息结构</span></h2><h3><a name="分账方管理" class="md-header-anchor"></a><span>分账方管理</span></h3><figure><table><thead><tr><th><span>通道</span></th><th><span>分账方商户号</span></th><th><span>分账接收方账号</span></th><th><span>类型</span></th><th><span>接收方代理商</span></th><th><span>接收方归属商家</span></th></tr></thead><tbody><tr><td><span>乐刷</span></td><td><span>800002222</span></td><td><span>800030099</span></td><td> </td><td><span>1card1</span></td><td> </td></tr><tr><td><span>子商户</span></td><td><span>153669854</span></td><td><span>163997744</span></td><td><span>商户/微信号/openid</span></td><td> </td><td><span>xyf</span></td></tr></tbody></table></figure><h3><a name="分账订单列表" class="md-header-anchor"></a><span>分账订单列表</span></h3><figure><table><thead><tr><th><span>分账订单号</span></th><th><span>支付订单号</span></th><th><span>第三方交易单号</span></th><th><span>分账详情</span></th><th><span>订单状态</span></th><th> </th></tr></thead><tbody><tr><td><span>2020041600001</span></td><td><span>2020041600563</span></td><td><span>420000054545455451</span></td><td><span>{}</span></td><td><span>等待处理</span></td><td> </td></tr></tbody></table></figure><h4><a name="分账详情" class="md-header-anchor"></a><span>分账详情</span></h4><figure><table><thead><tr><th><span>分账订单号</span></th><th><span>类型</span></th><th> </th><th><span>金额(分)</span></th><th><span>描述</span></th><th> </th></tr></thead><tbody><tr><td><span>2020041600001</span></td><td><span>MERCHANT_ID</span></td><td><span>163997744</span></td><td><span>200</span></td><td><span>服务费</span></td><td> </td></tr></tbody></table></figure></div>
</body>
</html>