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",

Другие вопросы по тегам