docusignapi - Java 和 Docusign 集成
问题描述
我在 docusign 沙箱中创建了积分器密钥和私钥/公钥。
当我试图调用 api 时,它给了我错误。
我的代码是这样的:
public class DocuSignExample1 {
private static final String IntegratorKey = "10048d4c-0549-434e-b224-4805b36b69e1";
private static final String UserId = "ef27e777-c6fc-4385-91ce-63dafab5385b";
private static final String privateKeyFullPath = System.getProperty("user.dir") + "/src/test/keys/docusign_private_key2.txt";
private static final String Recipient = "xxx@gmail.com";
private static final String SignTest1File = "/src/test/docs/SignTest1.pdf";
private static final String BaseUrl = "https://demo.docusign.net/restapi";
public static void main(String[] args) {
byte[] fileBytes = null;
try {
String currentDir = System.getProperty("user.dir");
Path path = Paths.get(currentDir + SignTest1File);
fileBytes = Files.readAllBytes(path);
} catch (IOException ioExcp) {
ioExcp.printStackTrace();
}
EnvelopeDefinition envDef = new EnvelopeDefinition();
envDef.setEmailSubject("Please Sign My Sample Document");
envDef.setEmailBlurb("Hello, Please Sign My Sample Document.");
Document doc = new Document();
String base64Doc = Base64.encodeToString(fileBytes, false);
doc.setDocumentBase64(base64Doc);
doc.setName("TestFile.pdf");
doc.setDocumentId("1");
List<Document> docs = new ArrayList<Document>();
docs.add(doc);
envDef.setDocuments(docs);
Signer signer = new Signer();
signer.setEmail(Recipient);
signer.setName("Sanjay");
signer.setRecipientId("1");
envDef.setRecipients(new Recipients());
envDef.getRecipients().setSigners(new ArrayList<Signer>());
envDef.getRecipients().getSigners().add(signer);
envDef.setStatus("sent");
ApiClient apiClient = new ApiClient(BaseUrl);
try {
byte[] privateKeyBytes = null;
try {
privateKeyBytes = Files.readAllBytes(Paths.get(privateKeyFullPath));
} catch (IOException e) {
e.printStackTrace();
}
if (privateKeyBytes == null)
return;
java.util.List<String> scopes = new ArrayList<String>();
scopes.add(OAuth.Scope_SIGNATURE);
OAuth.OAuthToken oAuthToken = apiClient.requestJWTUserToken(IntegratorKey, UserId, scopes, privateKeyBytes,
3600);
apiClient.setAccessToken(oAuthToken.getAccessToken(), oAuthToken.getExpiresIn());
UserInfo userInfo = apiClient.getUserInfo(oAuthToken.getAccessToken());
apiClient.setBasePath(userInfo.getAccounts().get(0).getBaseUri() + "/restapi");
Configuration.setDefaultApiClient(apiClient);
String accountId = userInfo.getAccounts().get(0).getAccountId();
EnvelopesApi envelopesApi = new EnvelopesApi();
EnvelopeSummary envelopeSummary = envelopesApi.createEnvelope(accountId, envDef);
System.out.println("EnvelopeSummary: " + envelopeSummary);
} catch (ApiException ex) {
ex.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
在上面的代码中,我只是更改了我的帐户密钥,但没有工作。
我已经用示例创建了项目。这里 DocusignExample.java 正在工作,但 DocusignExample1.java 不工作。
https://gitlab.com/sanju24689/docusign
对于DocusignExample,我从docusign java sdk(https://github.com/docusign/docusign-java-client/blob/master/src/test/java/SdkUnitTests.java)中获取了参考(密钥)创建了我的代码,只需更改集成密钥、api 用户名和私钥。
它给了我类似“com.docusign.esign.client.ApiException: Error while requesting an access token: POST https://account-d.docusign.com/oauth/token returned a response status of 400 Bad Request”之类的错误
解决方案
所以你有一个工作示例,但是当你更改集成密钥时,示例停止工作?
听起来您的设置有问题:检查您是否使用正确的 RSA 私钥和正确的集成密钥 (IK)。
还要检查 IK 是否没有选中“移动应用程序”。
推荐阅读
- c++ - 为什么 srand 需要一个存储类?
- r - 文本参数未正确传递给绘图条形图中的悬停模板
- .net - HotChocolate:如何使用 [ExtendObjectType] 将指令绑定到解析器中的字段
- flutter - 当我尝试更改其状态(更改语言环境)时,Flutter App 重新启动
- validation - 与 Apple 的域验证失败。请验证该文件在验证路径中是否可用,然后重试。在 Braintree 仪表板中
- java - 打印卫生专业人员的个人预约
- mysql - 当迭代 TADOQuery 结果集时,它总是从服务器获取,还是从缓存中迭代?
- ios - 带有 Xcode 12.5 的 M1 Mac 从不运行 Flutter 项目
- pandas - 根据列名 pandas 组合行
- typescript - 如何在 Vuex 商店中使用 v-model 和 v-for 字符串数组?