有没有人试过在 IBM i又名 iSeries、AS400上使用 docuSign?

问题描述

我正在尝试能够使用 RPGLE 从我们的 IBM i 调用用于 DocuSign 和 ROOMS 的 API 以获取真实状态。我没有成功。如果有人能够做到这一点,你能分享一下吗?

解决方法

调用 DocuSign API 要求您的服务器使用 POST 动词进行 HTTPS 调用。 Google 给出了一些不错的结果,请参阅 https://www.google.com/search?q=rpgle+call+rest+api

另见this presentation by Scott Klement

最好的办法是在 RPGLE 论坛上提问。调用 DocuSign API 和获取 OAuth 访问令牌(可能通过 JWT 授权)是主要问题。一旦您能够做到这一点,就可以通过 JSON 或 XML 发送实际的 API 请求。

一个不同的想法可能是使用不同的服务器与 DocuSign 进行通信,如果这样会更容易的话。 -- 第二台服务器可以运行 Windows 或 Linux。

,

我在 RDi 调试中运行它并查看验证后的值。 这是实现此目的的 GETACCN2 RPGLE POC 代码示例: **自由 ctl-opt 选项 (*srcstmt : *nodebugio : *nounref) 行动组(*调用者); ctl-opt 调试 (*input);

   dcl-pr getenv pointer extproc('getenv');
           *n pointer value options(*string:*trim);
   end-pr;

   dcl-pr setEnv         extpgm('SETENV');
   end-pr;
   //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    // Workfields
    // - - - - - - -

    dcl-s WebServiceUrl    varchar(1024) inz;
    dcl-s WebServiceHeader varchar(1024) inz;
    dcl-s account          varchar(200)  inz;
    dcl-s token            varchar(1000)  inz;
    dcl-s qs_acname        varchar(30)   inz;
    dcl-s acName           varchar(30)   inz;

    //--------------------------------------------------------

   account = '3d3e586b-XXXX-4d02-yyyy-f64a68cf41db';

   setEnv();

       // Get API key stored setENV
   token = %str(getenv('ESIGN')) ;

    Exsr SetUp;
    Exsr ConsumeWs;

    *Inlr = *On;
    Return;

    //--------------------------------------------------------
    // SetUp  subroutine
    //--------------------------------------------------------

    Begsr SetUp;
      // this would be a soft-coded parameter passed to the program
      WebServiceUrl =
      'https://demo.docusign.net/restapi/v2.1/accounts/' + %trim(account) +
      '?include_account_settings=true';

      WebServiceHeader =
       '<httpHeader>'+
       '<header name="accept" value="application/json" />'+
       '<header name="authorization" value= "Bearer '+ %trim(token)+ '"'+
       '/>'+
       '<header name="Accept-Encoding" value = "gzip,deflate,br"/>'+
       '</httpHeader>';

    Endsr;
   //--------------------------------------------------------
   // ConsumeWs  subroutine
   //--------------------------------------------------------

   Begsr ConsumeWs;

   Exec sql
       Select ws_acname
         INTO  :qs_acname
     from
         Json_Table(Systools.HttpGetClob(:WebServiceUrl,:WebServiceHeader),'$'
     Columns(ws_acname   Varchar(30)  Path 'lax $.accountName')
         ) As x;

       acname = qs_acname;

   Endsr;  

SETENV CLLE 代码:

         PGM        /* Sets enviromnet variables with token values */
         
         ADDENVVAR  ENVVAR('ESIGN') +
                      VALUE('eyJ0eXAiO etc token key.... +
                      kiHX6jlcGbRKsyg8_5Klg9SS2S4upZ5AQ') REPLACE(*YES)
         MONMSG     MSGID(CPFA980)
         ENDPGM  

getenv 只是一个指向 Environment 变量的指针。

,

能够获得 OAuth 令牌并在星期五下午晚些时候使用 Systools.HttpGetClob 成功创建了一个获取帐户。感谢您抽出时间回复我。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...