- Создал(а) Семенова Ирина фев 28, 2020
После получения заявки, банковский сервис может оповещать систему Goodfin об изменении статусов полученных и обрабатываемых заявок.
Чтобы Goodfin узнал о настройках статусной модели сервиса, нужно выполнить /api/v1/service/statusmapping/update (см. описание в 3.1.)
В песочнице в точку доступа /ad/v1/external/openapi/in отправляется сообщение типа ChangeDealApplicationStatusEvent
В действующей системе в точку доступа /ad/v1/external/openapi/in отправляется сообщение типа ChangeDealApplicationStatusEvent
Пример запроса для песочницы
где "receiver": "Shb" - это указание на систему Goodfin в качестве получателя сообщения;
"originator": "iniq8unrB1" - это указание на сервис - отправитель сообщения, при этом "iniq8unrB1" - логин/системное имя сервиса, которое получено на шаге 1.
Method: POST URL: https://sandbox.goodfin.ru/ad/v1/external/openapi/in HEADERS: Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOlsiYWRhcHRlciIsImpxMGp2TUpYbnoiLCJzaGIiXSwic2NvcGUiOlsicmVhZCIsIndyaXRlIl0sImV4cCI6MTU2MDE1MjA2MiwidXNlcklkIjoiZjkxYmRmOTAtNzE1My00Mzk1LTg2NjEtYjZkODUyYzY4NmIwIiwianRpIjoiNTZkYTAxNTYtODJkMy00MzZlLWJjNDMtNjFhNTkwMDFkMDY0IiwiY2xpZW50X2lkIjoianEwanZNSlhueiJ9.GFN0Av8SrxfyKNiHPLJvW5NUIg59f97nbgU86Gr1nbQ BODY: { "payloadType": "ChangeDealApplicationStatusEvent", "originator": "iniq8unrB1", "receiver": "Shb", "msgId": "4a5f52d0-26af-4fa9-a506-40aa4aba81c5", "msgDateTime": "2019-06-05T11:40:59.614", "payload": { "dealApplicationId": "4a5f52d0-26af-4fa9-a506-40aa4aba81c5", "status": "MY_SUPER_STATUS", "message": "Смена статуса", "params": null } }
Пример запроса для песочницы в формате HTTP/1.1:
POST /ad/v1/external/openapi/in HTTP/1.1 Host: sandbox.goodfin.ru Content-Type: application/json Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOlsiYWRhcHRlciIsImpxMGp2TUpYbnoiLCJzaGIiXSwic2NvcGUiOlsicmVhZCIsIndyaXRlIl0sImV4cCI6MTU2MDE1MjA2MiwidXNlcklkIjoiZjkxYmRmOTAtNzE1My00Mzk1LTg2NjEtYjZkODUyYzY4NmIwIiwianRpIjoiNTZkYTAxNTYtODJkMy00MzZlLWJjNDMtNjFhNTkwMDFkMDY0IiwiY2xpZW50X2lkIjoianEwanZNSlhueiJ9.GFN0Av8SrxfyKNiHPLJvW5NUIg59f97nbgU86Gr1nbQ Cache-Control: no-cache { "payloadType": "ChangeDealApplicationStatusEvent", "originator": "iniq8unrB1", "receiver": "Shb", "msgId": "4a5f52d0-26af-4fa9-a506-40aa4aba81c5", "msgDateTime": "2019-06-05T11:40:59.614", "payload": { "dealApplicationId": "4a5f52d0-26af-4fa9-a506-40aa4aba81c5", "status": "MY_SUPER_STATUS", "message": "Смена статуса", "params": null } }
Пример получаемого ответа:
<Пусто>
Пример выполнения метода в SoapUI |
---|
Например, в Goodfin пришло сообщение от сервиса "test1.srvtests.com":
Method: POST URL: https://app.goodfin.ru/ad/v1/external/openapi/in HEADERS: Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOlsiYWRhcHRlciIsImpxMGp2TUpYbnoiLCJzaGIiXSwic2NvcGUiOlsicmVhZCIsIndyaXRlIl0sImV4cCI6MTU2MDE1MjA2MiwidXNlcklkIjoiZjkxYmRmOTAtNzE1My00Mzk1LTg2NjEtYjZkODUyYzY4NmIwIiwianRpIjoiNTZkYTAxNTYtODJkMy00MzZlLWJjNDMtNjFhNTkwMDFkMDY0IiwiY2xpZW50X2lkIjoianEwanZNSlhueiJ9.GFN0Av8SrxfyKNiHPLJvW5NUIg59f97nbgU86Gr1nbQ BODY: { "payloadType":"ChangeDealApplicationStatusEvent", "originator":"test1.srvtests.com", "receiver":"Shb", "msgId":"5f231fa1-fe23-40ad-a443-57e33b24504a", "msgDateTime":"2019-06-05T11:40:59.614", "payload":{ "dealApplicationId":"bef9ebfc-6fae-4db0-9f04-bb65cbd0891c", "status":"16", "message":null, "params":null } }
Этот полученный статус в составе сообщения обрабатывается согласно настроек статусов "test1.srvtests.com" на стороне Goodfin.
Пример фрагмента настройки статусной модели (вместо цифр-кодов статусов, могут быть текстовые мнемокоды):
31:
dealApplicationStatus: null
displayStatus: "Запрос для мониторинга"
userActions: []
16:
dealApplicationStatus: null
displayStatus: "Проект на согласовании"
userActions:
- actionType: "CLIENT_SIGN"
label: "Принять"
description: "Перейти по ссылке для принятия предложения"
template: "http://test1.srvtests.com/requests/{APPLICATION_ID}/"
- actionType: "AGENT_GET_SIGN_URL"
label: "Получить ссылку"
description: "Получить ссылку для принятия предложения"
template: "http://test1.srvtests.com/requests/remote-sign/{APPLICATION_ID}/"
22:
dealApplicationStatus: "REJECTED_BY_SERVICE"
displayStatus: "Ошибка отправки"
userActions: []
В результате, клиент увидит у заявки статус "Проект на согласовании", а также кнопку "Принять".
А агент, если заявку готовил агент, увидит у заявки статус "Проект на согласовании", а также кнопку "Получить ссылку".
Вы можете отправить сообщение, о смене статуса вида
{
"payloadType": "ChangeDealApplicationStatusEvent",
"originator": "test1.srvtests.com",
"receiver": "Shb",
"msgId": "4a5f52d0-26af-4fa9-a506-40aa4aba81c5",
"msgDateTime": "2019-06-05T11:40:59.614",
"payload": {
"dealApplicationId": "4a5f52d0-26af-4fa9-a506-40aa4aba81c5",
"status": "MY_SUPER_STATUS",
"message": "Смена статуса",
"params": {
"PARAM1": "324",
"PARAM2": "АБЫРВАЛГ"
}
}
}
В конфигурации указать, что при поступлении на Goodfin статуса MY_SUPER_STATUS - показывать пользователю кнопку "CLIENT_SIGN", с подписью "Принять", и по нажатию на которую Goodfin откроет ссылку вида "http://test1.srvtests.com/path_to_action/4a5f52d0-26af-4fa9-a506-40aa4aba81c5/324?q=АБЫРВАЛГ"
MY_SUPER_STATUS: dealApplicationStatus: null displayStatus: "Проект на согласовании" userActions: - actionType: "CLIENT_SIGN" label: "Принять" description: "Перейти по ссылке для принятия предложения" template: "http://test1.srvtests.com/path_to_action/{APPLICATION_ID}/{PARAM1}?q={PARAM2}" - actionType: "AGENT_GET_SIGN_URL" label: "Получить ссылку" description: "Получить ссылку для принятия предложения" template: "http://test1.srvtests.com/path_to_action/{APPLICATION_ID}/{PARAM1}?q={PARAM2}"
Мы намеренно не создавали "COMMON_LINK_ACTION" из-за сложности предсказания того, какие кейсы возможны, например, кому этот action показывать, а кому нет, какое действие должно выполняться и т.д. К тому же старались следовать логике, что системы на уровне сообщений должны минимально зависеть друг от друга. Мы исходили из того, что одна система должна только знать какой статус отправлять и какая контекстная информация может понадобиться системе-получателю о данном статусе, а другая система должна иметь возможность через конфигурацию переносить ("маппить") эти статусы на свою логику.
Вы можете прислать примеры actions, которые вы планируете показывать пользователю и в каких статусах, чтобы мы смогли сформулировать требования для расширения Goodfin.
- Нет меток