2013-07-23 2 views
0

Я хотел использовать свою собственную логику для запроса подписи, но после того, как подпись завершена, я хочу отправить Signed Image (as png) в DocuSign Envelope. Я просмотрел поток Set Signature Image for Accountless Signer и, казалось, работал нормально, но изображение подписи не было встроено в конверт.Set Signature Image for Accountless Signer DocuSign

Это то, что я делаю

  1. Получить информацию об учетной записи
  2. Создать конверт из шаблона, как «Created (проект)» статус
  3. Добавить получатель
  4. Добавить вкладку Подписи
  5. Обновить статус конверта с "Создано" до "Отправлено"
  6. Установите изображение подписи для получателя.

Все, кажется, работает нормально, без каких-либо ошибок. Но я не вижу изображения. Пожалуйста, дайте мне знать, если я делаю что-то неправильно или у вас есть примеры отправки изображения подписи в конверты.

+0

Вопрос: что вы пытаетесь сделать? Вы пытаетесь сделать подписку самостоятельно, а затем просто загрузите завершенный конверт в DocuSign или просто хотите передать DocuSign изображение из вашей системы в качестве выбранной eSignature? – mikebz

+0

Я пытаюсь создать приложение для личной подписью на iPad. Я хотел создать собственный пользовательский интерфейс для подписывания человека (в основном позволяя ему нарисовать свой знак), а затем отправить этот образ подписи в Docusign, чтобы прикрепить его к конверту. – user2608913

+0

Отправьте мне сообщение по электронной почте. Я не знаю, делает ли это простой ответ, и переполнение стека не поддается возврату, четвертому и открытию. – mikebz

ответ

0

Не стесняйтесь обращаться к нам за более творческим решением, однако самый простой способ получить подпись на iPad - это делегировать коллекцию изображений подписи на DocuSign вообще. вот способ получить подпись на шаблоне (вы также можете сделать это с потоком байта документа). Это взято из GitHub gist: https://gist.github.com/Ergin008/5645812.

Вид для подписания может отображаться в веб-обозревателе в приложении iOS.

// 
// API Walkthrough 8 - Launch the signing (recipient) view of an envelope in an embedded session 
// 
// To run this sample: 
//  1. Copy the below code into your iOS project 
//  2. Enter your email, password, integrator key, name, templateId, and roleName and save 
//  3. Run the code 
// 

- (void)embeddedSigning 
{ 
    // Enter your info: 
    NSString *email = @"<#email#>"; 
    NSString *password = @"<#password#>"; 
    NSString *integratorKey = @"<#integratorKey#>"; 
    NSString *name = @"<#name#>"; 

    // use same name as template role you saved through the Console UI 
    NSString *roleName = @"<#roleName#>"; 

    // need to login to the console and copy a valid templateId into this string 
    NSString *templateId = @"<#templateId#>"; 

    /////////////////////////////////////////////////////////////////////////////////////// 
    // STEP 1 - Login (retrieves accountId and baseUrl) 
    /////////////////////////////////////////////////////////////////////////////////////// 

    NSString *loginURL = @"https://demo.docusign.net/restapi/v2/login_information"; 

    NSMutableURLRequest *loginRequest = [[NSMutableURLRequest alloc] init]; 
    [loginRequest setHTTPMethod:@"GET"]; 
    [loginRequest setURL:[NSURL URLWithString:loginURL]]; 

    // set JSON formatted X-DocuSign-Authentication header (XML format also accepted) 
    NSDictionary *authenticationHeader = @{ @"Username": email, @"Password" : password, @"IntegratorKey" : integratorKey }; 

    // jsonStringFromObject() function defined below... 
    [loginRequest setValue:[self jsonStringFromObject:authenticationHeader] forHTTPHeaderField:@"X-DocuSign-Authentication"]; 

    // also set the Content-Type header (other accepted type is application/xml) 
    [loginRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 

    //*** make an asynchronous web request 
    [NSURLConnection sendAsynchronousRequest:loginRequest queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *loginResponse, NSData *loginData, NSError *loginError) { 

     if (loginError) { // succesful GET returns status 200 
      NSLog(@"Error sending request %@. Got Response %@ Error is: %@", loginRequest, loginResponse, loginError); 
      return; 
     } 

     // we use NSJSONSerialization to parse the JSON formatted response 
     NSError *jsonError = nil; 
     NSDictionary *responseDictionary = [NSJSONSerialization JSONObjectWithData:loginData options:kNilOptions error:&jsonError]; 
     NSArray *loginArray = responseDictionary[@"loginAccounts"]; 

     // parse the accountId and baseUrl from the response and use in the next request 
     NSString *accountId = loginArray[0][@"accountId"]; 
     NSString *baseUrl = loginArray[0][@"baseUrl"]; 

     //--- display results 
     NSLog(@"\naccountId = %@\nbaseUrl = %@\n", accountId, baseUrl); 

     /////////////////////////////////////////////////////////////////////////////////////// 
     // STEP 2 - Create Envelope via Template and send the envelope 
     /////////////////////////////////////////////////////////////////////////////////////// 

     // append "/envelopes" URI to your baseUrl and use as endpoint for signature request call 
     NSString *envelopesURL = [NSString stringWithFormat:@"%@/envelopes",baseUrl]; 

     NSMutableURLRequest *signatureRequest = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:envelopesURL]]; 

     [signatureRequest setHTTPMethod:@"POST"]; 
     [signatureRequest setURL:[NSURL URLWithString:envelopesURL]]; 

     // construct a JSON formatted signature request body (multi-line for readability) 
     NSDictionary *signatureRequestData = @{@"accountId": accountId, 
               @"emailSubject" : @"Embedded Sending API call", 
               @"emailBlurb" : @"email body goes here", 
               @"templateId" : templateId, 
               @"templateRoles" : [NSArray arrayWithObjects: @{@"email":email, @"name": name, @"roleName": roleName, @"clientUserId": @"1001" }, nil ], 
               @"status" : @"sent" 
               }; 

     // convert request body into an NSData object 
     NSData* data = [[self jsonStringFromObject:signatureRequestData] dataUsingEncoding:NSUTF8StringEncoding]; 

     // attach body to the request 
     [signatureRequest setHTTPBody:data]; 

     // authentication and content-type headers 
     [signatureRequest setValue:[self jsonStringFromObject:authenticationHeader] forHTTPHeaderField:@"X-DocuSign-Authentication"]; 
     [signatureRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 

     // Send the signature request... 
     [NSURLConnection sendAsynchronousRequest:signatureRequest queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *envelopeResponse, NSData *envelopeData, NSError *envelopeError) { 

      NSError *jsonError = nil; 
      NSDictionary *responseDictionary = [NSJSONSerialization JSONObjectWithData:envelopeData options:kNilOptions error:&jsonError]; 
      NSLog(@"Signature request sent, envelope info is: \n%@\n", responseDictionary); 

      // parse envelopeId from resposne as it will be used in next request 
      NSString *envelopeId = responseDictionary[@"envelopeId"]; 

      /////////////////////////////////////////////////////////////////////////////////////// 
      // STEP 3 - Get the Embedded Signing View (aka recipient view) of the envelope 
      /////////////////////////////////////////////////////////////////////////////////////// 

      // append /envelopes/{envelopeId}/views/recipient to baseUrl and use in request 
      NSString *embeddedURL = [NSString stringWithFormat:@"%@/envelopes/%@/views/recipient", baseUrl, envelopeId]; 

      NSMutableURLRequest *embeddedRequest = [[NSMutableURLRequest alloc] init]; 
      [embeddedRequest setHTTPMethod:@"POST"]; 
      [embeddedRequest setURL:[NSURL URLWithString:embeddedURL]]; 

      // simply set the returnUrl in the request body (user is directed here after signing) 
      NSDictionary *embeddedRequestData = @{@"returnUrl": @"http://www.docusign.com/devcenter", 
                @"authenticationMethod" : @"none", 
                @"email" : email, 
                @"userName" : name, 
                @"clientUserId" : @"1001" // must match clientUserId set is step 2 
                }; 

      // convert request body into an NSData object 
      NSData* data = [[self jsonStringFromObject:embeddedRequestData] dataUsingEncoding:NSUTF8StringEncoding]; 

      // attach body to the request 
      [embeddedRequest setHTTPBody:data]; 

      // set JSON formatted X-DocuSign-Authentication header (XML format also accepted) 
      NSDictionary *authenticationHeader = @{ @"Username": email, @"Password" : password, @"IntegratorKey" : integratorKey }; 

      // jsonStringFromObject() function defined below... 
      [embeddedRequest setValue:[self jsonStringFromObject:authenticationHeader] forHTTPHeaderField:@"X-DocuSign-Authentication"]; 

      // also set the Content-Type header (other accepted type is application/xml) 
      [embeddedRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 

      //*** make an asynchronous web request 
      [NSURLConnection sendAsynchronousRequest:embeddedRequest queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *embeddedResponse, NSData *embeddedData, NSError *embeddedError) { 

       if (embeddedError) { // succesful POST returns status 201 
        NSLog(@"Error sending request %@. Got Response %@ Error is: %@", embeddedRequest, embeddedResponse, embeddedError); 
        return; 
       } 

       // we use NSJSONSerialization to parse the JSON formatted response 
       NSError *jsonError = nil; 
       NSDictionary *responseDictionary = [NSJSONSerialization JSONObjectWithData:embeddedData options:kNilOptions error:&jsonError]; 
       NSString *embeddedURLToken = responseDictionary[@"url"]; 

       //--- display results 
       NSLog(@"URL token created - please navigate to the following URL to start the embedded signing workflow:\n\n%@\n\n", embeddedURLToken); 
      }]; 
     }]; 
    }]; 
} 

- (NSString *)jsonStringFromObject:(id)object { 
    NSString *string = [[NSString alloc] initWithData:[NSJSONSerialization dataWithJSONObject:object options:0 error:nil] encoding:NSUTF8StringEncoding]; 
    return string; 
} 

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

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