2017-04-05 5 views
2

Beim Versuch, webhook status zu einem gut funktionierenden Docusign Integration API hinzuzufügen, begann es mir einen Fehler INVALID_REQUEST_BODY zu geben.Docusign INVALID_REQUEST_BODY nach dem Hinzufügen von eventNotification

Als ich die PHP API bin mit, ich bin mir nicht die JSON Nutzlast zu schreiben, ist DocuSign PHP-Paket, das Ding verantwortlich für die Serialisierung, aber es INVALID_REQUEST_BODY sagt, hier zu zeigen:

"eventNotification":[{"url":"https:\/\/xxx.yyyy.zzz.com\/docusign\/webhook", 
        ^

Ich habe auch versucht, alles andere zu entfernen, nur den URL-Parameter sendend. Versucht, die URL zu ändern und nur eine Domain zu senden. Nichts hat geklappt. Wenn ich die Ereignisbenachrichtigung sende, bekomme ich den Fehler, wenn ich es nicht sende, funktioniert alles gut.

Und das Docusign PHP-Paket löst Ausnahmen aus, wenn Sie falsch benannte Elemente an es senden, also bin ich auch sicher, dass das EventNotification-Modell ziemlich korrekt ist.

Hier ist die vollständige Fehlermeldung, ohne sensible Daten:

[DEBUG] HTTP Request body ~BEGIN~ 
{"documents":[{"documentId":1,"name":"XXXXXXXXXX.pdf","documentBase64":"XXXXXXXX="}],"recipients":{"signers":[{"tabs":{"signHereTabs":[{"documentId":1,"recipientId":1,"pageNumber":1,"anchorString":"recipient_signature"}]},"name":"xxxxxxxxx","email":"[email protected]","recipientId":1,"clientUserId":XXXX}]},"eventNotification":[{"url":"https:\/\/xxx.yyyy.zzz.com\/docusign\/webhook","loggingEnabled":"true"}],"status":"sent","emailSubject":"XXXXXX - XXXXXX Certification","brandId":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"} 
~END~ 
* Hostname demo.docusign.net was found in DNS cache 
* Trying 162.248.186.25... 
* TCP_NODELAY set 
* Connected to demo.docusign.net (162.248.186.25) port 443 (#0) 
* TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 
* Server certificate: demo.docusign.net 
* Server certificate: Symantec Class 3 EV SSL CA - G3 
* Server certificate: VeriSign Class 3 Public Primary Certification Authority - G5 
> POST /restApi/v2/accounts/XXXXXX/envelopes HTTP/1.1 
Host: demo.docusign.net 
User-Agent: PHP-Swagger/2.0.0 
X-DocuSign-Authentication: {"Username":"[email protected]","Password":"xxxxxxx","IntegratorKey":"XXX-XXXXXXXX-XXX-XXXX-xxxxx-xxxxxxxxxxxx"} 
X-DocuSign-SDK: PHP 
Accept: application/json 
Content-Type: application/json 
Content-Length: 3981 
Expect: 100-continue 

< HTTP/1.1 100 Continue 
* We are completely uploaded and fine 
< HTTP/1.1 400 Bad Request 
< Cache-Control: no-cache 
< Content-Length: 725 
< Content-Type: application/json; charset=utf-8 
< X-DocuSign-TraceToken: c227xxxx 
< Date: Wed, 05 Apr 2017 00:13:16 GMT 
< Strict-Transport-Security: max-age=31536000; includeSubDomains 
< 
* Curl_http_done: called premature == 0 
* Connection #0 to host demo.docusign.net left intact 
[DEBUG] HTTP Response body ~BEGIN~ 
{ 
    "errorCode": "INVALID_REQUEST_BODY", 
    "message": "The request body is missing or improperly formatted. Cannot deserialize the current JSON array (e.g. [1,2,3]) into type 'API_REST.Models.v2.eventNotification' because the type requires a JSON object (e.g. {\"name\":\"value\"}) to deserialize correctly.\r\nTo fix this error either change the JSON to a JSON object (e.g. {\"name\":\"value\"}) or change the deserialized type to an array or a type that implements a collection interface (e.g. ICollection, IList) like List<T> that can be deserialized from a JSON array. JsonArrayAttribute can also be added to the type to force it to deserialize from a JSON array.\r\nPath 'eventNotification', line 1, position 3790." 
} 

Also, was geschieht?

Antwort

2

Sie verwenden den Parameter eventNotification fälschlicherweise als Array.

Folgendes sollte funktionieren. Ich habe die eckigen Klammern entfernt []

"eventNotification": { 
     "url": "https:\/\/xxx.yyyy.zzz.com\/docusign\/webhook", 
     "loggingEnabled": "true" 
} 

Hier ist Ihre vollständige Anfrage

{ 
    "documents": [ { "documentId": 1, "name": "XXXXXXXXXX.pdf", "documentBase64": "XXXXXXXX=" } ], 
    "recipients": { 
     "signers": [ 
      { 
       "tabs": { 
        "signHereTabs": [ 
         { 
          "documentId": 1, 
          "recipientId": 1, 
          "pageNumber": 1, 
          "anchorString": "recipient_signature" 
         } 
        ] 
       }, 
       "name": "xxxxxxxxx", 
       "email": "[email protected]", 
       "recipientId": 1, 
       "clientUserId": XXXX 
      } 
     ] 
    }, 
    "eventNotification": { 
     "url": "https:\/\/xxx.yyyy.zzz.com\/docusign\/webhook", 
     "loggingEnabled": "true" 
    }, 
    "status": "sent", 
    "emailSubject": "XXXXXX - XXXXXX Certification", 
    "brandId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" 
} 
+0

Sie waren absolut richtig und es funktioniert jetzt gut, danke! Aber sind diese Informationen irgendwie im Webinterface (https://appdemo.docusign.com/documents) verfügbar? Da Docusign nicht auf meine Webhook-URL trifft, möchte ich überprüfen, ob die URL und der Status korrekt im Umschlag gespeichert sind. –

+0

Siehe [Antwort] (http://stackoverflow.com/a/43222592/1219543) zur Fehlerbehebung bei Verbindungsproblemen. –

Verwandte Themen