Ver código fonte

fix: JSON序列化问题

gatsby 3 semanas atrás
pai
commit
ef88bd31af

+ 2 - 0
backend/app/plugin/module_payment/account/schema.py

@@ -295,6 +295,8 @@ class TransferOutSchema(BaseModel):
     # ext_info: Optional[dict] = Field(default=None, description="扩展信息")
     created_time: datetime = Field(description="创建时间")
 
+    third_biz_no: Optional[str] = Field(default=None, description="三方侧订单号")
+
     @field_validator("payee_info", mode="after")
     def normal_payee_info(cls, v: Optional["PayeeInfoSchema"]) -> Optional["PayeeInfoSchema"]:
         if v is None:

+ 6 - 6
backend/app/plugin/module_payment/openapi/service.py

@@ -91,12 +91,12 @@ class OpenTransferService:
                 log.info("回调通知: 未配置回调地址, tenant_id={}", auth.tenant_id)
                 return False
 
-            result = TransferOutSchema.model_validate(transfer).model_dump(exclude_none=True)
-            result["third_biz_no"] = open_data.third_biz_no
+            result = TransferOutSchema.model_validate(transfer)
+            result.third_biz_no = open_data.third_biz_no
             
             notify_id = f"n{get_snowflake_id()}"
             timestamp = int(time.time() * 1000)
-            content = json.dumps(result)
+            content = result.model_dump_json(exclude_none=True)
 
             timeout = aiohttp.ClientTimeout(total=30)
             async with aiohttp.ClientSession(timeout=timeout) as session:
@@ -123,9 +123,9 @@ class OpenTransferService:
             raise CustomException("三方订单号不存在")
         
         result = await AccountService.transfer_detail_service(auth=auth, out_biz_no=transfer_data.out_biz_no)
-        result_dict = result.model_dump(exclude_none=True)
-        result_dict.update({"third_biz_no": transfer_data.third_biz_no})
-        return result_dict
+        result.third_biz_no = transfer_data.third_biz_no
+
+        return result.model_dump(exclude_none=True)
 
     @classmethod
     async def open_transfer_service(

+ 2 - 2
backend/tests/test_apikey_sign.py

@@ -16,8 +16,8 @@ class TestApiKeySign(unittest.TestCase):
         data = {
             "account_book_id": "2088480770941200",
             "amount": 1.00,
-            "order_title": "Apikey转账5",
-            "third_biz_no": "123424202604270055",
+            "order_title": "Apikey转账6",
+            "third_biz_no": "123424202604270066",
             "payee_info": {
                 "identity_type": "ALIPAY_ACCOUNT",
                 "name": "钱红武",