PayPal 請求書 生成

設定項目の情報から Paypal 請求書が自動生成し、Paypal Invoice ID を文字列型データ項目に格納します

    A. PayPal-REST-API の Client ID と SECRET を2行に分けてセットしてください複数行記述必須
    B. 販売人の商号をセットしてください単一行記述必須
    C. 販売人の国コード("JP")/郵便番号/都道府県/市区町村を4行に分けてセットしてください複数行記述必須
    D. 販売人の住所を2行に分けてセットしてください複数行記述必須
    E. 販売人の国際電話国番号("81")/電話番号/メールアドレス/URLを4行に分けてセットしてください複数行記述必須
    F. 請求先の商号が格納されている文字列型データを選択してくださいデータ項目選択文字列型(単一行)必須
    G. 請求先の名前1(姓・部署)が格納されている文字列型データを選択してくださいデータ項目選択文字列型(単一行)必須
    H. 請求先の名前2(名・氏名)が格納されている文字列型データを選択してくださいデータ項目選択文字列型(単一行)必須
    I. 請求先のメールアドレスが格納されている文字列型データを選択してくださいデータ項目選択文字列型(単一行)必須
    J. 商品名が格納されている文字列型データを選択してくださいデータ項目選択文字列型(単一行)必須
    K. 商品説明が格納されている文字列型データを選択してくださいデータ項目選択文字列型(単一行)必須
    L. 商品数量が格納されている数値型データを選択してくださいデータ項目選択数値型必須
    M. 商品単価が格納されている数値型データを選択してくださいデータ項目選択数値型必須
    N. 税率をセットしてください (例: "8" "10")単一行記述必須
    O. 請求書IDが格納されている文字列型データを選択してくださいデータ項目選択文字列型(単一行)必須
    P. 支払期日が格納されている日付型データを選択してくださいデータ項目選択日付型必須
    Q. 請求書の備考文が格納されている文字列型データを選択してくださいデータ項目選択文字列型必須
    R. 請求書の契約条件文が格納されている文字列型データを選択してくださいデータ項目選択文字列型必須
    S. ロゴ画像のURLをセットしてください (例: "https://example.com/a.png")単一行記述必須
    T. Paypal Invoce ID が格納される文字列型データを選択してください (更新)データ項目選択文字列型(単一行)必須
    -設定変数名設定ラベル
    Aconf_ClientId_SecretPayPal-REST-API の Client ID と SECRET を2行に分けてセットしてください
    Bconf_MerchantBusinessName販売人の商号をセットしてください
    Cconf_MerchantPostalCode販売人の国コード("JP")/郵便番号/都道府県/市区町村を4行に分けてセットしてください
    Dconf_MerchantAddress販売人の住所を2行に分けてセットしてください
    Econf_MerchantPhoneEmail販売人の国際電話国番号("81")/電話番号/メールアドレス/URLを4行に分けてセットしてください
    Fconf_DataIdF請求先の商号が格納されている文字列型データを選択してください
    Gconf_DataIdG請求先の名前1(姓・部署)が格納されている文字列型データを選択してください
    Hconf_DataIdH請求先の名前2(名・氏名)が格納されている文字列型データを選択してください
    Iconf_DataIdI請求先のメールアドレスが格納されている文字列型データを選択してください
    Jconf_DataIdJ商品名が格納されている文字列型データを選択してください
    Kconf_DataIdK商品説明が格納されている文字列型データを選択してください
    Lconf_DataIdL商品数量が格納されている数値型データを選択してください
    Mconf_DataIdM商品単価が格納されている数値型データを選択してください
    Nconf_ItemTax税率をセットしてください (例: "8" "10")
    Oconf_DataIdO請求書IDが格納されている文字列型データを選択してください
    Pconf_DataIdP支払期日が格納されている日付型データを選択してください
    Qconf_DataIdQ請求書の備考文が格納されている文字列型データを選択してください
    Rconf_DataIdR請求書の契約条件文が格納されている文字列型データを選択してください
    Sconf_logoUrlロゴ画像のURLをセットしてください (例: "https://example.com/a.png")
    Tconf_DataIdTPaypal Invoce ID が格納される文字列型データを選択してください (更新)
    // PayPal Invoicing Create (JPY/ja_JP) (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 merchantBusinessName = configs.get( "conf_MerchantBusinessName" ) + "";
    
    var merchantPostalCode   = configs.get( "conf_MerchantPostalCode" ) + "";
    var array_merchantPostalCode = merchantPostalCode.split("\n");
    var merchantAddressCC    = array_merchantPostalCode[0];
    var merchantAddressPC    = array_merchantPostalCode[1];
    var merchantAddressState = array_merchantPostalCode[2];
    var merchantAddressCity  = array_merchantPostalCode[3];
    
    var merchantAddress      = configs.get( "conf_MerchantAddress" ) + "";
    var array_merchantAddress = merchantAddress.split("\n");
    var merchantAddress1     = array_merchantAddress[0];
    var merchantAddress2     = array_merchantAddress[1];
    
    var merchantPhoneEmail   = configs.get( "conf_MerchantPhoneEmail" ) + "";
    var array_merchantPhoneEmail  = merchantPhoneEmail.split("\n");
    var merchantPhoneCC      = array_merchantPhoneEmail[0];
    var merchantPhoneNum     = array_merchantPhoneEmail[1];
    var merchantEmail        = array_merchantPhoneEmail[2];
    var merchantWebsite      = array_merchantPhoneEmail[3];
    
    var billingLanguage      = "ja_JP"; /// HARD-CODED
    var itemUnitPriceCurrency = "JPY"; /// HARD-CODED
    var itemTaxName          = "TAX"; /// HARD-CODED
    var itemTaxPercent       = configs.get( "conf_ItemTax" ) - 0;
    var logoUrl              = configs.get( "conf_logoUrl" ) + "";
    
    var dataIdF = configs.get( "conf_DataIdF" );
    var dataIdG = configs.get( "conf_DataIdG" );
    var dataIdH = configs.get( "conf_DataIdH" );
    var dataIdI = configs.get( "conf_DataIdI" );
    var dataIdJ = configs.get( "conf_DataIdJ" );
    var dataIdK = configs.get( "conf_DataIdK" );
    var dataIdL = configs.get( "conf_DataIdL" );
    var dataIdM = configs.get( "conf_DataIdM" );
    
    var dataIdO = configs.get( "conf_DataIdO" );
    var dataIdP = configs.get( "conf_DataIdP" );
    var dataIdQ = configs.get( "conf_DataIdQ" );
    var dataIdR = configs.get( "conf_DataIdR" );
    var dataIdT = configs.get( "conf_DataIdT" );
    
    
    //// == ワークフローデータの参照 / Data Retrieving ==
    var billingBusinessName  = data.get( dataIdF ) + ""; // Max 100
    var billingName1         = data.get( dataIdG ) + ""; // Max 30
    var billingName2         = data.get( dataIdH ) + ""; // Max 30
    var billingEmail         = data.get( dataIdI ) + ""; // Max 260
    var itemName             = data.get( dataIdJ ) + ""; // Max 200
    var itemDescription      = data.get( dataIdK ) + ""; // Max 1000
    var itemQuantity         = data.get( dataIdL ) - 0;
    var itemUnitPrice        = data.get( dataIdM ) + ""; // STRING!!
    
    var invoiceNumber        = data.get( dataIdO ) + ""; // Max 25
    var paymentTermDueDate   = data.get( dataIdP ) + " PST";
    var invoiceNote          = data.get( dataIdQ ) + ""; // Max 4000
    var invoiceTerms         = data.get( dataIdR ) + ""; // Max 4000
    
    var merchantMemo = "BPMS Process ID: " + processInstance.getProcessInstanceId();
    
    
    //// == 演算 / 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;
    
    // Create invoice
    var invoiceObj = {};
      invoiceObj.number = invoiceNumber;
      invoiceObj.payment_term = {};
      invoiceObj.payment_term.due_date = paymentTermDueDate;
      invoiceObj.note = invoiceNote;
      invoiceObj.terms = invoiceTerms;
      invoiceObj.logo_url = logoUrl;
      invoiceObj.merchant_memo = merchantMemo;
      invoiceObj.merchant_info = {};
        invoiceObj.merchant_info.email = merchantEmail;
        invoiceObj.merchant_info.business_name = merchantBusinessName;
        invoiceObj.merchant_info.address = {};
          invoiceObj.merchant_info.address.line1 = merchantAddress1;
          invoiceObj.merchant_info.address.line2 = merchantAddress2;
          invoiceObj.merchant_info.address.city = merchantAddressCity;
          invoiceObj.merchant_info.address.state = merchantAddressState;
          invoiceObj.merchant_info.address.postal_code = merchantAddressPC;
          invoiceObj.merchant_info.address.country_code = merchantAddressCC;
          invoiceObj.merchant_info.address.phone = {};
            invoiceObj.merchant_info.address.phone.country_code = merchantPhoneCC;
            invoiceObj.merchant_info.address.phone.national_number = merchantPhoneNum;
        invoiceObj.merchant_info.website = merchantWebsite;
      invoiceObj.billing_info = [];
        invoiceObj.billing_info[0] = {};
          invoiceObj.billing_info[0].email = billingEmail;
          invoiceObj.billing_info[0].first_name = billingName1;
          invoiceObj.billing_info[0].last_name = billingName2;
          invoiceObj.billing_info[0].business_name = billingBusinessName;
          invoiceObj.billing_info[0].language = billingLanguage;
      invoiceObj.items = [];
        invoiceObj.items[0] = {};
          invoiceObj.items[0].name = itemName;
          invoiceObj.items[0].description =itemDescription;
          invoiceObj.items[0].quantity = itemQuantity;
          invoiceObj.items[0].unit_price = {};
            invoiceObj.items[0].unit_price.currency = itemUnitPriceCurrency;
            invoiceObj.items[0].unit_price.value = itemUnitPrice;
          if( itemTaxPercent !== 0 ){
          invoiceObj.items[0].tax = {};
            invoiceObj.items[0].tax.name = itemTaxName;
            invoiceObj.items[0].tax.percent = itemTaxPercent;
          }
    var uriCreate = "https://api.paypal.com/v1/invoicing/invoices/";
    var responseCreate = httpClient.begin()
      .bearer( oauthToken )
      .body( JSON.stringify( invoiceObj ), "application/json" )
      .post( uriCreate );
    
    var paypalIdObj = JSON.parse( responseCreate.getResponseAsString() );
    var paypalId    = paypalIdObj.id;
    
    
    //// == ワークフローデータへの代入 / Data Updating ==
    retVal.put( dataIdT, paypalId );
    //retVal.put( "q_accessLog", responseCreate.getResponseAsString() ); // for debug
    

    • B’: Bで入力した販売人の商号
    • C’: Cで入力した販売人の国コード/郵便番号/都道府県/市区町村
    • D’: Dで入力した販売人の住所
    • E’: Eで入力した販売人の国番号/電話番号/メールアドレス/URL
    • F’: Fで選択したデータ項目に格納されている請求先の商号
    • G’: Gで選択したデータ項目に格納されている請求先の部署名
    • H’: Hで選択したデータ項目に格納されている請求先の担当者名
    • I’: Iで選択したデータ項目に格納されている請求先のメールアドレス
    • J’: Jで選択したデータ項目に格納されている納品物の商品名
    • K’: Kで選択したデータ項目に格納されている納品物の詳細説明
    • L’: Lで選択したデータ項目に格納されている納品物の数量
    • M’: Mで選択したデータ項目に格納されている納品物の単価
    • N’: Nで入力した税率
    • O’: Oで選択したデータ項目に格納されている請求書ID
    • P’: Pで選択したデータ項目に格納されている支払期日
    • Q’: Qで選択したデータ項目に格納されている請求書の備考文
    • R’: Rで選択したデータ項目に格納されている契約条件文
    • S’: Sで入力したロゴ画像のURL
    • プロパティ B’-S’ の情報から Paypal 請求書が自動生成されます
    • Paypal Invoice ID が T で選択したデータ項目に格納されます
    • 事前に Paypal Dashboard にて App を生成し、Client ID/Secret を取得しておく必要があります