付款是支付给特定收款人的。由于收款人信息随时可能发生更改,我们会在付款放行时克隆收款人对象,以保留付款当时的准确详情记录。
何时克隆收款人?
在付款放行后克隆收款人。这意味着在付款处于 ready_to_send
状态时,您仍可以更改收款人详情。一旦状态更新,收款人即被克隆,之后对收款人所做的更改将不再影响与该付款关联的收款人详情,但更新后的详情将适用于所有其他处于 ready_to_send
状态的付款。
如何操作?
被克隆的收款人将被分配一个新的 UUID,该 UUID 与已放行的付款相关联,且无法对该收款人进行任何更改。所有尚未放行的付款(ready_to_send
状态)仍将引用原始收款人,并且可以更新其详细信息。
示例:
支付创建的 API 响应:
{ "id":"286bbc9e-5224-4290-a538-2d6282549de6", "amount":"1.00", "beneficiary_id":"140068cd-d6d6-4ead-8c2d-df9cc5ff3911", "currency":"GBP", "reference":"Test Bene Details", "reason":"Test Bene Details", "status": "ready_to_send", "creator_contact_id":"669b4860-4bb3-4636-8ee4-9e672810d350", "payment_type": "regular", "payment_date":"2020-01-16", "transferred_at": "", "authorisation_steps_required":"0", "last_updater_contact_id":"669b4860-4bb3-4636-8ee4-9e672810d350", "short_reference":"200116-BYNXQW001", "conversion_id": null, "failure_reason": "", "payer_id":"0cda56cc-0b62-4171-841e-4003402801e8", "payer_details_source": "account", "created_at":"2020-01-16T11:38:55+00:00", "updated_at":"2020-01-16T11:38:55+00:00", "payment_group_id": null, "unique_request_id": null, "failure_returned_amount":"0.00", "ultimate_beneficiary_name": null, "purpose_code": null, "charge_type": null, "fee_amount": null, "fee_currency": null }
推送通知:
{ "id":"286bbc9e-5224-4290-a538-2d6282549de6", "amount":"1.00", "failure_returned_amount": "", "beneficiary_id":"140068cd-d6d6-4ead-8c2d-df9cc5ff3911", "conversion_id": null, "currency":"GBP", "reference":"Test Bene Details", "reason":"Test Bene Details", "status": "ready_to_send", "payment_type": "regular", "payment_date":"2020-01-16T00:00:00+00:00", "transferred_at": null, "authorisation_steps_required":0, "creator_contact_id":"669b4860-4bb3-4636-8ee4-9e672810d350", "last_updater_contact_id":"669b4860-4bb3-4636-8ee4-9e672810d350", "short_reference":"200116-BYNXQW001", "failure_reason": "", "payment_group_id": null, "unique_request_id": null, "fee_amount": null, "fee_currency": null }
在此示例中,当付款处于 ready_to_send
状态时,API 响应和推送通知均显示 beneficiary_id = 140068cd-d6d6-4ead-8c2d-df9cc5ff3911。
当完成付款后,API 响应和推送通知将显示更新的 status
和新的 beneficiary_id
。
API 响应:
{ "id":"286bbc9e-5224-4290-a538-2d6282549de6", "amount":"1.00", "beneficiary_id": "fc3c3ca7-08fe-41bd-acc9-baec129c8a98", "currency":"GBP", "reference":"Test Bene Details", "reason":"Test Bene Details", "status": "completed", "creator_contact_id":"669b4860-4bb3-4636-8ee4-9e672810d350", "payment_type": "regular", "payment_date":"2020-01-16", "transferred_at":"2020-01-16T12:30:02Z", "authorisation_steps_required":"0", "last_updater_contact_id":"669b4860-4bb3-4636-8ee4-9e672810d350", "short_reference":"200116-BYNXQW001", "conversion_id": null, "failure_reason": "", "payer_id":"0cda56cc-0b62-4171-841e-4003402801e8", "payer_details_source": "account", "created_at":"2020-01-16T11:38:55+00:00", "updated_at":"2020-01-16T12:30:02+00:00", "payment_group_id": null, "unique_request_id": null, "failure_returned_amount":"0.00", "ultimate_beneficiary_name": null, "purpose_code": null, "charge_type": null, "fee_amount": null, "fee_currency": null }
推送通知
{ "id":"286bbc9e-5224-4290-a538-2d6282549de6", "amount":"1.00", "failure_returned_amount": "", "beneficiary_id": "fc3c3ca7-08fe-41bd-acc9-baec129c8a98", "conversion_id": null, "currency":"GBP", "reference":"Test Bene Details", "reason":"Test Bene Details", "status": "completed", "payment_type": "regular", "payment_date":"2020-01-16T00:00:00+00:00", "transferred_at":"2020-01-16T12:30:02+00:00", "authorisation_steps_required":0, "creator_contact_id":"669b4860-4bb3-4636-8ee4-9e672810d350", "last_updater_contact_id":"669b4860-4bb3-4636-8ee4-9e672810d350", "short_reference":"200116-BYNXQW001", "failure_reason": "", "payment_group_id": null, "unique_request_id": null, "fee_amount": null, "fee_currency": null }
同一笔付款已进入 completed
状态,且收款人 ID 已更改:
beneficiary_id = fc3c3ca7-08fe-41bd-acc9-baec129c8a98
这个新的 beneficiary_id 是克隆后的收款人 ID,且属性为只读。这意味着虽然您可以通过 Get Beneficiary /v2/beneficiaries/{id} 查看此信息,但在使用 Find Beneficiaries /v2/beneficiaries/find 端点进行搜索时,该信息不会出现在结果中,而且您无法更新或删除此克隆的收款人。搜索只读收款人将失败并返回错误响应:
{ "error_code": "beneficiary_not_found", "error_messages": { "id": [ { "code": "beneficiary_not_found", "message":"Beneficiary was not found for this id", "params": {} } ] } }