PayPal 請求書 ステータス確認

文字型データ項目で指定した Paypal Invoice ID のステータス を文字型データ項目に格納し、支払い済の場合には支払日時と金額をデータ項目に格納します

    A. PayPal-REST-API の Client ID と SECRET を2行に分けてセットしてください複数行記述必須
    B. Paypal Invoce ID が格納されている文字列型データを選択してくださいデータ項目選択文字列型(単一行)必須
    C. Paypal Invoce Status が格納される文字列型データを選択してください (更新)データ項目選択文字列型(単一行)必須
    D. 支払タイムスタンプが格納される文字列型データを選択してください (更新)データ項目選択文字列型(単一行)
    E. 支払金額が格納される数値型データを選択してください (更新)データ項目選択数値型
    -設定変数名設定ラベル
    Aconf_ClientId_SecretPayPal-REST-API の Client ID と SECRET を2行に分けてセットしてください
    Bconf_DataIdBPaypal Invoce ID が格納されている文字列型データを選択してください
    Cconf_DataIdCPaypal Invoce Status が格納される文字列型データを選択してください (更新)
    Dconf_DataIdD支払タイムスタンプが格納される文字列型データを選択してください (更新)
    Econf_DataIdE支払金額が格納される数値型データを選択してください (更新)
    // PayPal Invoicing Status (ver. 20170603)
    // (c) 2017, Questetra, Inc. (the MIT License)
    
    //// == 工程コンフィグの参照 / Config Retrieving ==
    var clientId_secret = configs.get( "conf_ClientId_Secret" ) + "";
    var array_clientId_secret = clientId_secret.split("\n");
    var clientId = array_clientId_secret[0];
    var secret   = array_clientId_secret[1];
    
    var dataIdB = configs.get( "conf_DataIdB" );
    var dataIdC = configs.get( "conf_DataIdC" ) + "";
    var dataIdD = configs.get( "conf_DataIdD" ) + "";
    var dataIdE = configs.get( "conf_DataIdE" ) + "";
    
    
    //// == ワークフローデータの参照 / Data Retrieving ==
    var paypalId         = data.get( dataIdB ) + "";
    
    
    //// == 演算 / Calculating ==
    // Get OAuth Token with Client Credentials
    var uri = "https://api.paypal.com/v1/oauth2/token";
    var response = httpClient.begin()
      .basic( clientId, secret )
      .formParam( "grant_type", "client_credentials" )
      .post( uri );
    var oauthTokenObj = JSON.parse( response.getResponseAsString() );
    var oauthToken = oauthTokenObj.access_token;
    
    // Show Invoice Details
    var uriDetail = "https://api.paypal.com/v1/invoicing/invoices/" + paypalId;
    var responseDetail = httpClient.begin()
      .bearer( oauthToken )
      .get( uriDetail );
    var paypalInvoiceObj = JSON.parse( responseDetail.getResponseAsString() );
    var paypalInvoiceStatus = paypalInvoiceObj.status;
    
    
    //// == ワークフローデータへの代入 / Data Updating ==
    retVal.put( dataIdC, paypalInvoiceStatus ); // DRAFT, SENT, PAID, etc
    if( dataIdD !== "" ){
      if ( paypalInvoiceStatus == "PAID" ){
        retVal.put( dataIdD, paypalInvoiceObj.payments[0].date );
      }
    }
    if( dataIdE !== "" ){
      if ( paypalInvoiceStatus == "PAID" ){
        var amountValue = parseFloat( paypalInvoiceObj.payments[0].amount.value );
        retVal.put( dataIdE, java.math.BigDecimal( amountValue ) );
      }
    }
    ///retVal.put( "q_accessLog", responseDetail.getResponseAsString() ); // for debug
    

    • B’: Bで選択したデータ項目に格納されている Paypal Invoice ID
    • プロパティ B’ の請求書のステータスを確認します
    • Paypal Invoice Status が C で選択したデータ項目に格納されます
    • ステータスが PAID の場合、支払日時/金額が DE で選択したデータ項目に格納されます
    • 事前に Paypal Dashboard にて App を生成し、Client ID/Secret を取得しておく必要があります