Docusign: 400 Ошибка «Не удается разобрать составное тело» при попытке создать конверт из идентификатора шаблона из приложения UI5 - PullRequest
0 голосов
/ 09 января 2020

Мы пытаемся выяснить, можно ли Docusign использовать в производственном сценарии ios для наших требований клиента.

У нас есть приложение UI5, которое будет использоваться для подписания документов. Мы создали шаблон в демонстрационном экземпляре Docusign.

Однако, когда мы пытаемся создать конверт из приложения, мы получаем 400 Error Unable to parse multipart body. Теперь та же полезная нагрузка при использовании в приложении POSTMAN приводит к успешному созданию конверта. Переданные заголовки также одинаковы.

В приложении Ui5:

var settings = {
                "async": true,
                "crossDomain": true,
                "url": "/docusign/envelopes",
                "method": "POST",
                "timeout": 0,
                "headers": {
                    "Authorization": "User DnVj27euWrCi4ANoMV5puvxVxYAcUCG3PlkUSpWpC08=, Organization 6ba64ce816dec995b17d04605e329a30, Element X4XuUq/T5UUh2o9xwaamZCCRwOKUCPr1Kv1Nj+qHPj0=",
                    "Content-Type": "application/json"
                },
                "data": JSON.stringify({
                    "status": "sent",
                    "compositeTemplates": [{
                        "compositeTemplateId": "1",
                        "inlineTemplates": [{
                            "recipients": {
                                "signers": [{
                                    "email": "johndoe@testmail.com",
                                    "name": "John Doe",
                                    "recipientId": "1",
                                    "roleName": "Signer",
                                    "clientUserId": "12345",
                                    "tabs": {
                                        "textTabs": [{
                                            "tabLabel": "firstName",
                                            "value": "John"
                                        }, {
                                            "tabLabel": "lastName",
                                            "value": "Doe"
                                        }, {
                                            "tabLabel": "phoneNo",
                                            "value": "022-635363"
                                        }, {
                                            "tabLabel": "email",
                                            "value": "test@gmail.com"
                                        }]
                                    }
                                }]
                            },
                            "sequence": "1"
                        }],
                        "serverTemplates": [{
                            "sequence": "1",
                            "templateId": "0bf97611-a457-4e8e-ac7e-1593c17ba3f6"
                        }]
                    }]
                })
            };
    var deferred = $.Deferred();
            $.ajax(settings).done(function (response) {
                deferred.resolve(response);
            }.bind(this)).fail(function (error) {
                deferred.reject(error);
            }.bind(this));

В Почтальоне: Successful POST

Headers

Справка будет с благодарностью при решении этой проблемы

Ответы [ 3 ]

0 голосов
/ 14 января 2020

Если точно такое же JSON отправляется из Почтальона и из приложения UI5, то вы получите те же результаты. Но это не так, поэтому что-то другое.

Возможно, система UI5 отправляет API как многопользовательский запрос mime, но неправильно устанавливает тип содержимого для части запроса JSON.

Для проверки: используйте регистратор API DocuSign , чтобы узнать, что получает DocuSign. Сравните запрос, отправляемый из UI5 и от Почтальона.

Исправление: вам нужно установить дополнительные параметры UI5, чтобы запрос НЕ отправлялся как сообщение MIME из нескольких частей. Или отправьте сообщение из нескольких частей с необходимыми настройками. См. документы и многокомпонентный пример .

PS ПОЖАЛУЙСТА, напишите ответ на свой вопрос с решением вашей проблемы (как только вы его нашли) ) помогать другим в будущем. Спасибо!!

0 голосов
/ 17 января 2020

Мне удалось решить проблему, напрямую используя API Docusign (https://demo.docusign.net/restapi/v2/accounts). Ранее я использовал SAP Openconnector для подключения к Docusign. https://api.openconnectors.eu3.ext.hanatrial.ondemand.com/elements/api-v2

Спасибо всем за помощь.

0 голосов
/ 09 января 2020

Не могли бы вы провести строковое преобразование за пределами настроек json и, возможно, немного прервать ваш вызов, прежде чем вносить все в настройки.

т.е. попробуйте изменить свой jquery ajax вызов:

var headers = {"Authorization": "User DnVj27euWrCi4ANoMV5puvxVxYAcUCG3PlkUSpWpC08=, Organization 6ba64ce816dec995b17d04605e329a30, Element X4XuUq/T5UUh2o9xwaamZCCRwOKUCPr1Kv1Nj+qHPj0=", "Content-Type": "application/json" };
var payload = JSON.stringify({
                "status": "sent",
                "compositeTemplates": [{
                    "compositeTemplateId": "1",
                    "inlineTemplates": [{
                        "recipients": {
                            "signers": [{
                                "email": "johndoe@testmail.com",
                                "name": "John Doe",
                                "recipientId": "1",
                                "roleName": "Signer",
                                "clientUserId": "12345",
                                "tabs": {
                                    "textTabs": [{
                                        "tabLabel": "firstName",
                                        "value": "John"
                                    }, {
                                        "tabLabel": "lastName",
                                        "value": "Doe"
                                    }, {
                                        "tabLabel": "phoneNo",
                                        "value": "022-635363"
                                    }, {
                                        "tabLabel": "email",
                                        "value": "test@gmail.com"
                                    }]
                                }
                            }]
                        },
                        "sequence": "1"
                    }],
                    "serverTemplates": [{
                        "sequence": "1",
                        "templateId": "0bf97611-a457-4e8e-ac7e-1593c17ba3f6"
                    }]
                }]
            });
$.ajax({
  "async": true,
  "crossDomain": true,
  "url": "/docusign/envelopes",
  "method": "POST",
  "timeout": 0,
  "headers": headers,
  "data": payload
});

Я уверен, что это приведет вас к окончательному «сводному» ответу.

...