_lsy-refunds-e2e.txt 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. ==========================================================================
  2. 1. 取管理端令牌
  3. ==========================================================================
  4. captcha/get -> HTTP 200 enable=True
  5. auto-login/users -> HTTP 200
  6. 免登录可选用户 33 个
  7. 取第一个:username=admin id=1
  8. auto-login/token -> HTTP 200
  9. auto-login -> HTTP 200
  10. 令牌已取得:len=606 (值不打印)
  11. ==========================================================================
  12. 2. GET /payment/collection/order/BC1790649777/refunds (本次新加的端点)
  13. ==========================================================================
  14. HTTP 200
  15. {
  16. "code": 0,
  17. "msg": "成功",
  18. "data": [
  19. {
  20. "id": "2104769177627619330",
  21. "status": "SUCCESS",
  22. "description": null,
  23. "created_time": "2026-09-29T11:04:11.331934+08:00",
  24. "updated_time": "2026-09-29T11:19:40.289253+08:00",
  25. "tenant_id": 2,
  26. "order_id": 2104763835497803777,
  27. "out_trade_no": "BC1790649777",
  28. "out_refund_no": "RF1104113b4da0",
  29. "refund_trace_no": "4e8ceec2b83b44a78efaacd73499b5a9",
  30. "refund_no": "200001070X4026092911041110001",
  31. "qd_refund_no": "2026092989141749",
  32. "refund_fee": 1,
  33. "refund_settle": null,
  34. "upstream_result_code": "PAY_SUCCESS",
  35. "upstream_result_msg": "退款成功",
  36. "next_query_time": "2026-09-29T11:05:11.330942+08:00",
  37. "refund_request_time": "20260929110411",
  38. "original_pay_time": "20260929104257",
  39. "notify_status": "FAIL",
  40. "notify_count": 8,
  41. "last_notify_time": "2026-09-29T11:19:40.288467+08:00",
  42. "finish_time": "2026-09-29T11:04:13.007374+08:00"
  43. }
  44. ],
  45. "status_code": 200,
  46. "success": true
  47. }
  48. -> 1 行
  49. [0] keys=['created_time', 'description', 'finish_time', 'id', 'last_notify_time', 'next_query_time', 'notify_count', 'notify_status', 'order_id', 'original_pay_time', 'out_refund_no', 'out_trade_no', 'qd_refund_no', 'refund_fee', 'refund_no', 'refund_request_time', 'refund_settle', 'refund_trace_no', 'status', 'tenant_id', 'updated_time', 'upstream_result_code', 'upstream_result_msg']
  50. out_refund_no = 'RF1104113b4da0'
  51. refund_fee = 1
  52. status = 'SUCCESS'
  53. refund_no = '200001070X4026092911041110001'
  54. finish_time = '2026-09-29T11:04:13.007374+08:00'
  55. ==========================================================================
  56. 3. GET /payment/collection/order/BC1790649777/notify-logs (trace 集合改过)
  57. ==========================================================================
  58. HTTP 200
  59. {
  60. "code": 0,
  61. "msg": "成功",
  62. "data": [
  63. {
  64. "id": "2104769184395755521",
  65. "status": null,
  66. "description": null,
  67. "created_time": "2026-09-29T11:04:12.937943+08:00",
  68. "updated_time": "2026-09-29T11:04:12.937943+08:00",
  69. "tenant_id": null,
  70. "trade_type": "0",
  71. "trade_no": "200001070X4026092911041110001",
  72. "pay_trace_no": "4e8ceec2b83b44a78efaacd73499b5a9",
  73. "refund_no": null,
  74. "raw_body": "{\"attach\":\"\",\"coupon_amount\":\"0\",\"discount_amount\":\"0\",\"end_time\":\"***\",\"inst_no\":\"900112\",\"mch_name\":\"建行小店基本休息修改\",\"mch_no\":\"Y52211090004\",\"o_trade_no\":\"200001070X***\",\"pay_amount\":\"-1\",\"pay_time\":\"***\",\"pay_trace_no\":\"4e8ceec2b83b44a78efaacd73499b5a9\",\"pay_type\":\"400\",\"qd_trade_no\":\"***\",\"receipt_amount\":\"-1\",\"result_code\":\"TRADE_REFUND\",\"return_code\":\"SUCCESS\",\"return_msg\":\"退款成功\",\"shop_name\":\"\",\"shop_no\":\"\",\"sign\":\"695351c2ec7129badfe726f5f6d168c3\",\"td_trade_no\":\"\",\"total_amount\":\"1\",\"trade_no\":\"200001070X***\",\"trade_type\":\"0\",\"user_id\":\"ogDZBwNxyOIt27zVTG-fXlrxOpLk\"}",
  75. "verify_status": "SUCCESS",
  76. "process_status": "ORDER_NOT_FOUND",
  77. "error_msg": "订单不存在"
  78. },
  79. {
  80. "id": "2104769184253149185",
  81. "status": null,
  82. "description": null,
  83. "created_time": "2026-09-29T11:04:12.903813+08:00",
  84. "updated_time": "2026-09-29T11:04:12.903813+08:00",
  85. "tenant_id": null,
  86. "trade_type": "0",
  87. "trade_no": "200001070X4026092911041110001",
  88. "pay_trace_no": "4e8ceec2b83b44a78efaacd73499b5a9",
  89. "refund_no": null,
  90. "raw_body": "{\"attach\":\"\",\"coupon_amount\":\"0\",\"discount_amount\":\"0\",\"end_time\":\"***\",\"inst_no\":\"900112\",\"mch_name\":\"建行小店基本休息修改\",\"mch_no\":\"Y52211090004\",\"o_trade_no\":\"200001070X***\",\"pay_amount\":\"-1\",\"pay_time\":\"***\",\"pay_trace_no\":\"4e8ceec2b83b44a78efaacd73499b5a9\",\"pay_type\":\"400\",\"qd_trade_no\":\"***\",\"receipt_amount\":\"-1\",\"result_code\":\"TRADE_REFUND\",\"return_code\":\"SUCCESS\",\"return_msg\":\"退款成功\",\"shop_name\":\"\",\"shop_no\":\"\",\"sign\":\"695351c2ec7129badfe726f5f6d168c3\",\"td_trade_no\":\"\",\"total_amount\":\"1\",\"trade_no\":\"200001070X***\",\"trade_type\":\"0\",\"user_id\":\"ogDZBwNxyOIt27zVTG-fXlrxOpLk\"}",
  91. "verify_status": "SUCCESS",
  92. "process_status": "RECEIVED",
  93. "error_msg": null
  94. },
  95. {
  96. "id": "2104763996284977154",
  97. "status": null,
  98. "description": null,
  99. "created_time": "2026-09-29T10:43:35.995723+08:00",
  100. "updated_time": "2026-09-29T10:43:35.995723+08:00",
  101. "tenant_id": 2,
  102. "trade_type": "1",
  103. "trade_no": "200001070X4126092910425710001",
  104. "pay_trace_no": "9df774f58716468e91addc1eb9ac400f",
  105. "refund_no": null,
  106. "raw_body": "{\"attach\":\"\",\"coupon_amount\":\"0\",\"discount_amount\":\"0\",\"end_time\":\"***\",\"inst_no\":\"900112\",\"mch_name\":\"建行小店基本休息修改\",\"mch_no\":\"Y52211090004\",\"pay_time\":\"***\",\"pay_trace_no\":\"9df774f58716468e91addc1eb9ac400f\",\"pay_type\":\"400\",\"qd_trade_no\":\"20260929MM7lrbnu\",\"receipt_amount\":\"1\",\"result_code\":\"PAY_SUCCESS\",\"return_code\":\"SUCCESS\",\"return_msg\":\"支付成功\",\"shop_name\":\"\",\"shop_no\":\"\",\"sign\":\"281c4e3d995fdf6d10acb193be53e421\",\"td_trade_no\":\"***\",\"total_amount\":\"1\",\"trade_no\":\"200001070X***\",\"trade_type\":\"1\",\"user_id\":\"ogDZBwNxyOIt27zVTG-fXlrxOpLk\"}",
  107. "verify_status": "SUCCESS",
  108. "process_status": "DUPLICATE",
  109. "error_msg": null
  110. },
  111. {
  112. "id": "2104763996108816386",
  113. "status": null,
  114. "description": null,
  115. "created_time": "2026-09-29T10:43:35.954092+08:00",
  116. "updated_time": "2026-09-29T10:43:35.954092+08:00",
  117. "tenant_id": null,
  118. "trade_type": "1",
  119. "trade_no": "200001070X4126092910425710001",
  120. "pay_trace_no": "9df774f58716468e91addc1eb9ac400f",
  121. "refund_no": null,
  122. "raw_body": "{\"attach\":\"\",\"coupon_amount\":\"0\",\"discount_amount\":\"0\",\"end_time\":\"***\",\"inst_no\":\"900112\",\"mch_name\":\"建行小店基本休息修改\",\"mch_no\":\"Y52211090004\",\"pay_time\":\"***\",\"pay_trace_no\":\"9df774f58716468e91addc1eb9ac400f\",\"pay_type\":\"400\",\"qd_trade_no\":\"20260929MM7lrbnu\",\"receipt_amount\":\"1\",\"result_code\":\"PAY_SUCCESS\",\"return_code\":\"SUCCESS\",\"return_msg\":\"支付成功\",\"shop_name\":\"\",\"shop_no\":\"\",\"sign\":\"281c4e3d995fdf6d10acb193be53e421\",\"td_trade_no\":\"***\",\"total_amount\":\"1\",\"trade_no\":\"200001070X***\",\"trade_type\":\"1\",\"user_id\":\"ogDZBwNxyOIt27zVTG-fXlrxOpLk\"}",
  123. "verify_status": "SUCCESS",
  124. "process_status": "RECEIVED",
  125. "error_msg": null
  126. },
  127. {
  128. "id": "2104763995425144834",
  129. "status": null,
  130. "description": null,
  131. "created_time": "2026-09-29T10:43:35.790768+08:00",
  132. "updated_time": "2026-09-29T10:43:35.790768+08:00",
  133. "tenant_id": 2,
  134. "trade_type": "1",
  135. "trade_no": "200001070X4126092910425710001",
  136. "pay_trace_no": "9df774f58716468e91addc1eb9ac400f",
  137. "refund_no": null,
  138. "raw_body": "{\"attach\":\"\",\"coupon_amount\":\"0\",\"discount_amount\":\"0\",\"end_time\":\"***\",\"inst_no\":\"900112\",\"mch_name\":\"建行小店基本休息修改\",\"mch_no\":\"Y52211090004\",\"pay_time\":\"***\",\"pay_trace_no\":\"9df774f58716468e91addc1eb9ac400f\",\"pay_type\":\"400\",\"qd_trade_no\":\"20260929MM7lrbnu\",\"receipt_amount\":\"1\",\"result_code\":\"PAY_SUCCESS\",\"return_code\":\"SUCCESS\",\"return_msg\":\"支付成功\",\"shop_name\":\"\",\"shop_no\":\"\",\"sign\":\"281c4e3d995fdf6d10acb193be53e421\",\"td_trade_no\":\"***\",\"total_amount\":\"1\",\"trade_no\":\"200001070X***\",\"trade_type\":\"1\",\"user_id\":\"ogDZBwNxyOIt27zVTG-fXlrxOpLk\"}",
  139. "verify_status": "SUCCESS",
  140. "process_status": "DUPLICATE",
  141. "error_msg": null
  142. },
  143. {
  144. "id": "2104763994984742913",
  145. "status": null,
  146. "description": null,
  147. "created_time": "2026-09-29T10:43:35.68853+08:00",
  148. "updated_time": "2026-09-29T10:43:35.68853+08:00",
  149. "tenant_id": null,
  150. "trade_type": "1",
  151. "trade_no": "200001070X4126092910425710001",
  152. "pay_trace_no": "9df774f58716468e91addc1eb9ac400f",
  153. "refund_no": null,
  154. "raw_body": "{\"attach\":\"\",\"coupon_amount\":\"0\",\"discount_amount\":\"0\",\"end_time\":\"***\",\"inst_no\":\"900112\",\"mch_name\":\"建行小店基本休息修改\",\"mch_no\":\"Y52211090004\",\"pay_time\":\"***\",\"pay_trace_no\":\"9df774f58716468e91addc1eb9ac400f\",\"pay_type\":\"400\",\"qd_trade_no\":\"20260929MM7lrbnu\",\"receipt_amount\":\"1\",\"result_code\":\"PAY_SUCCESS\",\"return_code\":\"SUCCESS\",\"return_msg\":\"支付成功\",\"shop_name\":\"\",\"shop_no\":\"\",\"sign\":\"281c4e3d995fdf6d10acb193be53e421\",\"td_trade_no\":\"***\",\"total_amount\":\"1\",\"trade_no\":\"200001070X***\",\"trade_type\":\"1\",\"user_id\":\"ogDZBwNxyOIt27zVTG-fXlrxOpLk\"}",
  155. "verify_status": "SUCCESS",
  156. "process_status": "RECEIVED",
  157. "error_msg": null
  158. }
  159. ],
  160. "status_code": 200,
  161. "success": true
  162. }
  163. -> 6 行(改前只按订单 trace 查,是 4 行)
  164. 2026-09-29T11:04:12.937943+08:00 tt=0 verify=SUCCESS process=ORDER_NOT_FOUND trace=4e8ceec2b83b44a78efaacd73499b5a9
  165. 2026-09-29T11:04:12.903813+08:00 tt=0 verify=SUCCESS process=RECEIVED trace=4e8ceec2b83b44a78efaacd73499b5a9
  166. 2026-09-29T10:43:35.995723+08:00 tt=1 verify=SUCCESS process=DUPLICATE trace=9df774f58716468e91addc1eb9ac400f
  167. 2026-09-29T10:43:35.954092+08:00 tt=1 verify=SUCCESS process=RECEIVED trace=9df774f58716468e91addc1eb9ac400f
  168. 2026-09-29T10:43:35.790768+08:00 tt=1 verify=SUCCESS process=DUPLICATE trace=9df774f58716468e91addc1eb9ac400f
  169. 2026-09-29T10:43:35.68853+08:00 tt=1 verify=SUCCESS process=RECEIVED trace=9df774f58716468e91addc1eb9ac400f
  170. 其中 trade_type=0(退款回调)的行 = 2
  171. 判定:
  172. 退款单 1 行(期望 1)、回调轨迹 6 行含退款 2 行(期望 6 / 2)
  173. => 两项都变了,用户报的两个症状在 HTTP 层确认修好