public async Task <ActionResult> StarteSealTspFlow([FromQuery(Name = "env_slt")] string envSlt) { // First step is to get a token with the retrieve friom the query param SignatureOAuthUserToken signatureOAuthUserToken; try { signatureOAuthUserToken = await DocuSignService.GetBearerTokenFromEnvSltAsync(_httpClientFactory, _dsConfig, envSlt); } catch (Exception e) { // If you ending up in this case, make sure you clientId/clientSecret are good // Also make sure you are hitting the right environement return(BadRequest(e)); } // Initialize DocuSign ApiClient var apiClient = new eSign.Client.ApiClient(signatureOAuthUserToken.user_api + "/restapi"); apiClient.Configuration.AddDefaultHeader("Authorization", "Bearer " + signatureOAuthUserToken.access_token); DocuSign.eSign.Api.SignatureApi signatureApi = new eSign.Api.SignatureApi(apiClient); // UserInfo var userInfoResult = signatureApi.UserInfo(); UserCertificate userCertificate = new UserCertificate(userInfoResult.User.DisplayName, userInfoResult.User.Email, userInfoResult.Language.ToUpper(), "DocuSign"); var SignHashSessionInfoResult = signatureApi.SignHashSessionInfo(new eSign.Model.SignSessionInfoRequest(Convert.ToBase64String(userCertificate.CertContainer.Certificate.GetEncoded()))); if (SignHashSessionInfoResult.Documents[0] == null || SignHashSessionInfoResult.Documents[0].RemainingSignatures == 0L) { return(Ok("Nothing to sign")); } byte[] hashBytes = System.Convert.FromBase64String(SignHashSessionInfoResult.Documents[0].Data); byte[] signedCmsData = SignatureProvider.SignatureProvider.Sign(hashBytes, userCertificate); eSign.Model.DocumentUpdateInfo docInfo = new eSign.Model.DocumentUpdateInfo() { DocumentId = SignHashSessionInfoResult.Documents[0].DocumentId, Data = Convert.ToBase64String(signedCmsData), ReturnFormat = "CMS" }; var CompleteSignHashResult = signatureApi.CompleteSignHash(new eSign.Model.CompleteSignRequest() { DocumentUpdateInfos = new List <eSign.Model.DocumentUpdateInfo> { docInfo } }); ViewBag.CompleteResult = CompleteSignHashResult; return(Redirect(CompleteSignHashResult.RedirectionUrl)); }
public async Task OnGetAsync(string authorizationCode) { // First step is to get a token with the retrieve friom the query param try { SignatureOAuthUserToken = await DocuSignService.GetBearerTokenFromCodeAsync(_httpClientFactory, _dsConfig, authorizationCode); } catch (Exception e) { // If you ending up in this case, make sure you clientId/clientSecret are good // Also make sure you are hitting the right environement ViewData["Error"] = e; } // Initialize DocuSign ApiClient var apiClient = new eSign.Client.ApiClient(SignatureOAuthUserToken.user_api + "/restapi"); apiClient.Configuration.AddDefaultHeader("Authorization", "Bearer " + SignatureOAuthUserToken.access_token); DocuSign.eSign.Api.SignatureApi signatureApi = new eSign.Api.SignatureApi(apiClient); // Get UserInfo var userInfoResponse = signatureApi.UserInfo(); ViewData["UserInfo"] = JsonConvert.SerializeObject(userInfoResponse); UserCertificate userCertificate = new UserCertificate(UserInfoResponse.User.DisplayName, UserInfoResponse.User.Email, UserInfoResponse.Language.ToUpper(), "DocuSign"); //var SignHashSessionInfoResult = signatureApi.SignHashSessionInfo(new eSign.Model.SignSessionInfoRequest(Convert.ToBase64String(userCertificate.CertContainer.Certificate.GetEncoded()))); //if (SignHashSessionInfoResult.Documents[0] == null || SignHashSessionInfoResult.Documents[0].RemainingSignatures == "0") //{ // return Ok("Nothing to sign"); //} //byte[] hashBytes = System.Convert.FromBase64String(SignHashSessionInfoResult.Documents[0].Data); //byte[] signedCmsData = SignatureProvider.SignatureProvider.Sign(hashBytes, userCertificate); //eSign.Model.DocumentUpdateInfo docInfo = new eSign.Model.DocumentUpdateInfo() //{ // DocumentId = SignHashSessionInfoResult.Documents[0].DocumentId, // Data = Convert.ToBase64String(signedCmsData), // ReturnFormat = "CMS" //}; //var CompleteSignHashResult = signatureApi.CompleteSignHash(new eSign.Model.CompleteSignRequest() { DocumentUpdateInfos = new List<eSign.Model.DocumentUpdateInfo> { docInfo } }); //ViewBag.CompleteResult = CompleteSignHashResult; //return Redirect(CompleteSignHashResult.RedirectionUrl); }
/// <summary> /// Gets the DocuSign permission profiles and groups /// </summary> /// <param name="accessToken">Access Token for API call (OAuth)</param> /// <param name="basePath">BasePath for API calls (URI)</param> /// <param name="accountId">The DocuSign Account ID (GUID or short version) for which the APIs call would be made</param> /// <returns>The tuple with DocuSign permission profiles and groups information</returns> public static (PermissionProfileInformation, GroupInformation) GetPermissionProfilesAndGroups( string accessToken, string basePath, string accountId) { var apiClient = new eSign.Client.ApiClient(basePath); apiClient.Configuration.DefaultHeader.Add("Authorization", "Bearer " + accessToken); var accountsApi = new AccountsApi(apiClient); var permissionProfiles = accountsApi.ListPermissions(accountId); var dsGroupsApi = new GroupsApi(apiClient); var groups = dsGroupsApi.ListGroups(accountId); return(permissionProfiles, groups); }