转账请求新增 transfer_scene_report_infos

This commit is contained in:
db_huang 2026-10-30 16:15:42 +08:00
parent 8f07b6bcf1
commit fa3517afbb
6 changed files with 16 additions and 1 deletions

View File

@ -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

View File

@ -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)

View File

@ -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):