支付給特定收款人。由於收款人詳細資料隨時可能變更,因此我們會在支付釋放後立即複製收款人對象,以保留支付時詳細資料的準確記錄。
收款人會在什麼時候被複製?
一旦支付被釋放,收款人即被複製。這意味著當支付處於 ready_to_send 狀態時,您可以變更收款人詳細資料。一旦狀態更新,收款人就會被複製,對收款人所做的任何變更都不會影響針對該支付所持有的收款人詳細資料,但更新後的詳細資料將用於任何其他具有 ready_to_send 狀態的支付。
如何操作?
複製的收款人將被分配一個新的 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,且唯讀。這意味著,雖然您可以使用獲取收款人 /v2/beneficiaries/{id} 來查看該收款人,但在使用查找收款人 /v2/beneficiaries/find 端點時,該收款人不會出現在搜尋中,而且您無法更新或刪除複製的收款人。搜尋唯讀收款人將會失敗,並顯示錯誤回應:
{
"error_code": "beneficiary_not_found",
"error_messages": {
"id": [
{
"code": "beneficiary_not_found",
"message":"Beneficiary was not found for this id",
"params": {}
}
]
}
}