From fa3517afbb2483d0c3fbf451da42a189205d1bd1 Mon Sep 17 00:00:00 2001 From: db_huang <18006480240@163.com> Date: Fri, 30 Oct 2026 16:15:42 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BD=AC=E8=B4=A6=E8=AF=B7=E6=B1=82=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=20transfer=5Fscene=5Freport=5Finfos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alipay_provider.cpython-313.pyc | Bin 21594 -> 22111 bytes backend/app/__pycache__/main.cpython-313.pyc | Bin 358960 -> 358910 bytes backend/app/alipay_provider.py | 8 ++++++++ backend/app/main.py | 2 +- ...ipay_provider.cpython-313-pytest-9.1.1.pyc | Bin 25527 -> 26164 bytes backend/tests/test_alipay_provider.py | 7 +++++++ 6 files changed, 16 insertions(+), 1 deletion(-) diff --git a/backend/app/__pycache__/alipay_provider.cpython-313.pyc b/backend/app/__pycache__/alipay_provider.cpython-313.pyc index 5ab77176a23f16a4c484ad56fee7acabf2a611b2..e7034d2690dd9413966280635552e5be57099c12 100644 GIT binary patch delta 1513 zcmZ`&ZA@EL7(S=H{ia`(k3#t2fhNdjc)fPyhnE%TwH_;a|VD5sh#H7vd(y#biK;kK+mN^HVAMZnkbNWG`RI&b_^T z?M8}T%)R%QvRAKVm%b!m`?LA2l@$`-C(X^y?tFbC)kUP+^NYDlUuBnOa+l`ztFv?O zWM|*a&EGC8&Rzca-o@*?w`Q^zmv>&DFYLH`3ohVQ?*e=r$GSP#j6dwIsQ#a7#Vvr- zfrF$g8_Z(pL+u$|f^-p0UYOuAC3!e9E+jc2nQls~xId&$6rcPetiADN)>^=67P; zFw=;a0@e6TP>W9mj;eQQWDma?2tp(NA>eVCNcG}Rl>LXAf2moa214u#c0n_KIapgm z8xKl%H<4=BGOaGJPhNchm9Fzo}?%7`uj!{Ri=wh~WSL delta 1063 zcmY*WUr19?96sl6yZe7PHO*{Or)6GahUsdvrc*aH-2!*KvAB{gyh1Xk-f0j-`Wp1q z??rl!Fz6-hA*iRwFnY-7AsC51NJ2?USx;e|vvsFkxZnAH-}%n(&pB(4adrUGc_NyZwQkyrybZ8=cCF6V%!e3_&4zsBmIsj{TXk~*ZNkWXq%yR5jE zd73QRHKeTs6I=h`zVfuK8p+L?Kk>rH<$2mJ+2c029XhVF$InA!i`z`ARwJsm(Wuto zq%6dkSVW2&b;png$t_wQBT5G86AAKJO_2oI5AWUOLrMBN3X;$5ZxotxNRIk{a+0=@ z*i$$;p!tYh5(L!D5rH@YoFph5p#?gGQ9O!*x+*k^#S&QQI|A=IYOn`F5f_M^XJD=K zzRr{N!FpF2-0O-#Nw^hnz{N0ukKw!A7J_v2D9lAF`E6QAbi#v3eJE=fpBPb6S;J)V zrlMqxsxmdBWTw^E)S_-NSZ0u*kQFA?i5u5P6m?ip)d@Aj-WLMh)unnmr;h#^iNYLO z)hny|AWU^%087t0Z1srcFKrzaVLy81w?x`?OPoK_s#|I`MA{d3=(0d^%d_U( XvYZ!Jt|W8e%IMfGGwnpdd+GFFKw;E1 diff --git a/backend/app/__pycache__/main.cpython-313.pyc b/backend/app/__pycache__/main.cpython-313.pyc index ef62d605e457dec5fb956b99230c7606438664a4..b583da3b10e698260e09fa1c25bd390316c2ee53 100644 GIT binary patch delta 58 zcmdn+MfBfiQSQ&Yyj%=GP!{-PBX_q0BX{#jhxU^Wj6lq^{iFkPc?a9GuB9(q*R;Ex MWZv#}lI7I~0HtOa!vFvP delta 108 zcmezOS#-k}QSQ&Yyj%=G@a6lxjojT1#n&Ma40WDY=<>#U(|FF)pda*(Lb} zG0FKUsTDEhsd*`hS(%A3Nr}nXKz2;?bcgoo4vav|w0*h*b9o2bi~Uoct=ZQua*}zw J$Vrx08vs33Eh7K` diff --git a/backend/app/alipay_provider.py b/backend/app/alipay_provider.py index 22e119e..1a4b65f 100644 --- a/backend/app/alipay_provider.py +++ b/backend/app/alipay_provider.py @@ -259,6 +259,7 @@ def _provider_error_from_exception(exc: Exception) -> AlipayTransferError | None def transfer(*, out_biz_no: str, amount_fen: int, account: str, payee_name: str, order_title: str) -> dict: from alipay.aop.api.domain.AlipayFundTransUniTransferModel import AlipayFundTransUniTransferModel from alipay.aop.api.domain.Participant import Participant + from alipay.aop.api.domain.TransferSceneReportInfo import TransferSceneReportInfo from alipay.aop.api.request.AlipayFundTransUniTransferRequest import AlipayFundTransUniTransferRequest model = AlipayFundTransUniTransferModel() @@ -267,6 +268,13 @@ def transfer(*, out_biz_no: str, amount_fen: int, account: str, payee_name: str, model.product_code = "TRANS_ACCOUNT_NO_PWD" model.biz_scene = "DIRECT_TRANSFER" model.transfer_scene_name = settings.alipay_transfer_scene_name + business_name = TransferSceneReportInfo() + business_name.info_type = "业务名称" + business_name.info_content = "问大家问答任务" + business_description = TransferSceneReportInfo() + business_description.info_type = "业务描述" + business_description.info_content = f"用户完成问答任务后发放任务报酬,关联业务:{order_title}"[:100] + model.transfer_scene_report_infos = [business_name, business_description] model.order_title = order_title[:128] payee = Participant() payee.identity = account diff --git a/backend/app/main.py b/backend/app/main.py index 595d155..116b8a8 100644 --- a/backend/app/main.py +++ b/backend/app/main.py @@ -3753,7 +3753,7 @@ def _perform_alipay_refund(db: Session, record, kind: str, user: AdminUser, paye amount_fen=amount_fen, account=identity["alipay_account"], payee_name=identity["payee_name"], - order_title=f"问大家任务返款-{record.id}", + order_title=f"问大家任务报酬-{record.id}", ) except AlipayTransferError as exc: order = db.get(AlipayRefundOrder, order.id) diff --git a/backend/tests/__pycache__/test_alipay_provider.cpython-313-pytest-9.1.1.pyc b/backend/tests/__pycache__/test_alipay_provider.cpython-313-pytest-9.1.1.pyc index d69700f83724b20480b1fd2c0189c8cf2152d3ea..8878b59438856a2b50848fce25dcd6fbb353996b 100644 GIT binary patch delta 1959 zcmZ8heN0nV6z^?)4@z628-iHeO3}FvgC9V2=+wBVI25UcEN((+YtbtG;J#Laiq1sj zLqXlGTjpGXhD~Gq+TI*)8XcQXw~&c*ZscW&EYbp+44p3i zFFPzbT1TeCioesf@|r|KNS0iow`+GO<}h^yq$)3UN*-^(>!jXLkcOSUKvhtRjE5rz zKRg|4KNdUv6$t&OqJ0-G#F~#pj9}?Ie+b0b{+9k@XKh-=h%ru2Fc9_z!it`2;o6Wl zQUt#J(c|&Pj@aqF@y7kb4q6Q1t+9Ov;?Ya$!SUu#2kTD`UECY1mj`x6)f7V)55>>z z88~xr;Bqv6^3t&6@qPOSE}xap7#c_tg*55#NQ%7BR6usz8nd9sklLM=chivnKqCrb zPx_4W+ixZo_h$Hd(x*NYbo!(Rf>2?lbCN6B@`_XLv1)~Bo{o7i_LcSt!qIzGqbggO*qldC%7 zrFpEvI%%307+Qs}4sCju-|br$2}UGaBK0A?6=5SnkiC++O=t!&S3Z_HHHmCxH!M}= zZD_LtY)N)Wl9z@pQ(g_#&bCRkj+JCa6L)~gMz+jkf2NpOf^|7_ThreinU?0^87&C) z=xtPV)U{bny#ZOCzZxY!fMQq}s&%T#@@Nq0MuY~08g|X<6QUr#Dd%UMOMuGnzqae0 zaD4wYMl8JddywyEXr4 zi9Uy>fK0Elk|kI4ID*0KBN`2}lT?sLW^)6{94$J!dc`t(=IzVp6|y>Ao-HeI+V7vu4N5lx#extSF5Dwtr@r- zV@FOznZVv~OenP(>1}lT9f2>z|K$%~h&dDsRE)SHRYB@^g=fxE`__Q`u+^CjMc+40 zWQ&Rx2)$ryly?_>B#^_{73Z!eoG zJO<;(a$nhXk#xwX*32X1JiAw3YWf!=EdVw`pR%Hgbm0jo9n4perPUDDT5&xGH&qec zk-*w&FMO(=m%}&h`BJrlA01-5oDtH3<>Zel$HcF-6vlz+j4ZnRgt%GQoolGX3~2~E*%$7TB8p-&LKLA50WT))MZl6No-t}q il*D=d;Mz#FcRrm6R`}OQF1Et+x{yZ1zw_8$PxgPB+Bh)) delta 1603 zcmZXUeN0eite=al0E$$HviG965OIW0}QB^|cJwVT}QwZ4Q} zvvw+Zge64KITL^C4sAoq4rW=1E7kr;{aIpL;D@wErb1czx2y?V8Qw>pMmJqLEQewW z--a@OhH#J&K)`%X<_6s^hl8E%u}DmH+jtw<`Uo9_5S-08DvhA{sFs_Vm%#d3lJAJ6>Ixn;1aiEQx* zUFyLC^smT1NTwD-DR&jgeAY12qy?b zaC>K?^e&14tzy?cJ39`q?%xO(_MBxWKrVlbU4*gnEa&^^Ko!0dj~F)nW@dITUyCxI zhPm=j?87Mj7 z+2@izMZaOF@)fchaLjl9A<-W-s1!}Y2S|DrDk?`(h2;Q^8x7@mmHDf?Bh##B!1cO} zI(HJkL4FGa(GmaUzp^8WIc1?IQIE7mcv$W&C^QO3{jt)s2(x~(s!_U$`WLjg>IsRB zW7)D?7bwC;!iNZzAzb_c8ec@{O;Eev2cEi=Cte}lM+8wsno`X#(OAqDN-=Mmbc={_ z59S$ z`c$_DW8JMG1s}2H6h#j%x7#TC@!Mby#@2|JXLX8s?qqTKbz5&Z8i>lh9sDnvbdMk! z(8vxx5AJ1mVQov7=e5BbVIUxen45XK0T1iH5TCV@)9 mX^s2(N4J%PBdxKJvWusq6~87m2s6rdYbq;aOPj#n=J^{K!kozf diff --git a/backend/tests/test_alipay_provider.py b/backend/tests/test_alipay_provider.py index dc6d46d..dfa9bac 100644 --- a/backend/tests/test_alipay_provider.py +++ b/backend/tests/test_alipay_provider.py @@ -39,6 +39,13 @@ def test_transfer_parses_official_sdk_json_response(monkeypatch): assert result == {"out_biz_no": "RF001", "trade_no": "ALI001", "status": "SUCCESS"} biz_content = json.loads(client.params["biz_content"]) assert biz_content["transfer_scene_name"] == "佣金报酬" + assert biz_content["transfer_scene_report_infos"] == [ + {"info_content": "问大家问答任务", "info_type": "业务名称"}, + { + "info_content": "用户完成问答任务后发放任务报酬,关联业务:测试返款", + "info_type": "业务描述", + }, + ] def test_transfer_preserves_provider_business_error(monkeypatch):