Ruby on Rails Adobe EchoSign SOAP-запрос
Я пытаюсь использовать Ruby on Rails для создания SOAP-запроса к EchoSign API, но получаю сообщение об ошибке, в котором указано, что одно из полей пустое:
{http://dto14.api.echosign}RecipientRole: cannot accept ''
Это код, который я использую:
require 'soap/wsdlDriver'
require 'base64'
filename = 'quote'
recipient = 'martin@domain.co.uk'
quote_id = params[:id]
$S = SOAP::WSDLDriverFactory.new("https://secure.echosign.com/services/EchoSignDocumentService16?wsdl").create_rpc_driver
r = $S.sendDocument(
:apiKey => 'XXXXXXXXXXX',
:senderInfo => SOAP::SOAPNil.new, # we need to explicitly set elements to nil
:documentCreationInfo => {
:fileInfos => [{
:file => RAILS_ROOT + '/pdfs/' + quote_id + '.pdf',
:fileName => filename,
}],
:recipients =>
[{ :RecipientInfo => [{
:email => 'martin@domain.co.uk',
:fax => SOAP::SOAPNil.new,
:role => 'SIGNER'
}]
}],
:message => "This is neat.",
:name => "Test from SOAP-Lite: " + filename,
:reminderFrequency => "WEEKLY_UNTIL_SIGNED",
:signatureFlow => "SENDER_SIGNATURE_NOT_REQUIRED",
:signatureType => "ESIGN",
:callbackInfo => SOAP::SOAPNil.new, # we need to explicitly set elements to nil
:ccs => SOAP::SOAPNil.new, # we need to explicitly set elements to nil
:externalId => SOAP::SOAPNil.new, # we need to explicitly set elements to nil
:securityOptions => SOAP::SOAPNil.new, # we need to explicitly set elements to nil
}
)
Там должно быть что-то не так с тем, как я делаю
:recipients =>
[{ :RecipientInfo => [{
:email => 'martin@domain.co.uk',
:fax => SOAP::SOAPNil.new,
:role => 'SIGNER'
}]
}],
но мне очень трудно найти то, что просто из документации, я думаю, что это будет что-то глупое, но не могу этого заметить.
Обновить
после более внимательного изучения примера запроса я попробовал следующее, но это не имело никакого значения:
require 'soap/wsdlDriver'
require 'base64'
filename = 'quote'
quote_id = params[:id]
$S = SOAP::WSDLDriverFactory.new("https://secure.echosign.com/services/EchoSignDocumentService16?wsdl").create_rpc_driver
r = $S.sendDocument(
:apiKey => 'XXXXXXXXXXX',
:senderInfo => SOAP::SOAPNil.new,
:documentCreationInfo => {
:fileInfos => {
:FileInfo => {
:file => RAILS_ROOT + '/pdfs/' + quote_id + '.pdf',
:fileName => filename
}
},
:recipients => {
:RecipientInfo => {
:email => 'martin@domain.co.uk',
:fax => SOAP::SOAPNil.new,
:role => 'SIGNER'
}
},
:mergeFieldInfo => SOAP::SOAPNil.new,
:tos => SOAP::SOAPNil.new,
:message => "This is neat.",
:name => "Test from SOAP-Lite: " + filename,
:reminderFrequency => "WEEKLY_UNTIL_SIGNED",
:signatureFlow => "SENDER_SIGNATURE_NOT_REQUIRED",
:signatureType => "ESIGN",
:callbackInfo => SOAP::SOAPNil.new, # we need to explicitly set elements to nil
:ccs => SOAP::SOAPNil.new, # we need to explicitly set elements to nil
:externalId => SOAP::SOAPNil.new, # we need to explicitly set elements to nil
:securityOptions => SOAP::SOAPNil.new # we need to explicitly set elements to nil
}
)
2 ответа
Можете ли вы попробовать передать значение SIGNER
с двойными кавычками вроде "SIGNER"
, Так же, как у вас есть для "ESIGN"
и некоторые другие параметры.
Кроме того, если отправка для ESIGN
, Fax
не должно быть nil
, Попробуй не определяя :Fax
совсем.
Вы должны изменить адрес электронной почты и роль, чтобы двойные кавычки вместо одинарных кавычек.
:RecipientInfo => {
:email => "martin@domain.co.uk",
:fax => SOAP::SOAPNil.new,
:role => "SIGNER" change
То же самое, что вы сделали для: warnderFrequency => "WEEKLY_UNTIL_SIGNED",:signatureFlow => "SENDER_SIGNATURE_NOT_REQUIRED",