2014-02-10 2 views
0

Я использую vb.net (4.0) для взаимодействия с DocuSign API. Я пытаюсь сделать процесс, который позволяет пользователю добавлять 30 дней к текущей дате истечения срока действия вместо входа в DocuSign.net для исправления конверта. Код, кажется, работает нормально (не вызывает никаких ошибок), но коррекция не происходит на стороне DocuSign.Обновление API-интерфейса DocuSign SOAP (правильно) Срок действия конверта

Me.EnvelopeID является ID конверта

DocuService это пространство имен Service Reference DocuSign API.

Me.AuthorizationString - это имя пользователя, пароль, аккаунт и ключ Integrator для отправки в виде заголовков HTTP.

Private Sub UpdateExpiration() 
    'Get envelope details 
    Dim orig As DocuService.Envelope = ExecuteSoap(Function(client) client.RequestEnvelope(Me.EnvelopeID, False), Me.AuthorizationString) 

    Dim cor As New DocuService.Correction 
    cor.EnvelopeID = Me.EnvelopeID 
    cor.Reminders = orig.Notification.Reminders 
    cor.Expirations = orig.Notification.Expirations 
    cor.Expirations.ExpireAfter = (Integer.Parse(orig.Notification.Expirations.ExpireAfter) + 30) 


    'Execute Correction 
    Dim cord As DocuService.CorrectionStatus = Me.ExecuteSoap(Function(client) client.CorrectAndResendEnvelope(cor), Me.AuthorizationString) 
    'If I add a break point on the next line and check the values of cord, 
    'there is a returned CorrectionStatus object but every property in the object is "Nothing" 

    Dim check As DocuService.Envelope = ExecuteSoap(Function(client) client.RequestEnvelope(Me.EnvelopeID, False), Me.AuthorizationString) 
    Console.WriteLine(check.Notification.Expirations.ExpireAfter & " " & (Integer.Parse(orig.Notification.Expirations.ExpireAfter) + 30)) 
    If check.Notification.Expirations.ExpireAfter = (Integer.Parse(orig.Notification.Expirations.ExpireAfter)) Then 
     'Success :) 
     MsgBox("success!") 
    Else 
     'Failure :(
     MsgBox("failure!") 
    End If 
    End Sub 


Private Function ExecuteSoap(Of TResult)(func As Func(Of DSAPIServiceSoapClient, TResult), authorizationString As String) As TResult 
    Using client As New DocuService.DSAPIServiceSoapClient(My.Settings.DocusignMode) 
     Using scope As OperationContextScope = New System.ServiceModel.OperationContextScope(client.InnerChannel) 
      Dim hp As HttpRequestMessageProperty = New HttpRequestMessageProperty 
      hp.Headers.Add("X-Docusign-Authentication", authorizationString) 
      OperationContext.Current.OutgoingMessageProperties(HttpRequestMessageProperty.Name) = hp 
      Return If(func IsNot Nothing, func(client), Nothing) 
     End Using 
    End Using 
End Function 

Мы используем ту же самую функцию ExecuteSOAP и AuthorizationString создать & отправить конверты и делать получатель обновлений, так что я знаю, это правильно. Я не уверен, что случилось!

ответ

0

Это, скорее всего, 1 из 3 возможных.

  • Я удивлен, что это не ошибка, но вы не должны помещать свой аккаунт в заголовок http auth. См. Стр. 19 руководство по SOAP PDF: http://www.docusign.com/sites/default/files/DocuSignAPI_Guide.pdf

  • С вашим вызовом API SOAP что-то еще не настроено правильно. Осмотрите свой необработанный исходящий запрос и убедитесь, что xml - это то, что вы ожидаете. Если вы не уверены, отправьте здесь необработанный запрос.

  • Ошибка с DocuSign. Сначала исключите два других варианта, и если ни один кубик не отправит здесь комментарий, и я могу получить ошибку, зарегистрированную на стороне DocuSign. Также хорошим испытанием было бы сделать запрос коррекции через REST api, чтобы увидеть, можете ли вы заставить это работать.

+0

Спасибо, я получил еще один проект на неделю или две, но я скоро вернусь к этому. –

 Смежные вопросы

  • Нет связанных вопросов^_^