Дерево страниц
Перейти к концу метаданных
Переход к началу метаданных

После получения заявки, банковский сервис может оповещать систему 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.

  • Нет меток