Stripe カード情報登録

顧客の決済情報を Stripe に登録し、課金に利用する Customer ID、クレジットカードの下4桁、登録処理のステータス、通信ログをそれぞれデータ項目に格納します

    A. Stripe SecretKey をセットしてください (sk_xxx: 32文字)単一行記述必須
    B. Description情報が格納されている文字列型or選択肢型データを選択してください(例: 法人名)データ項目選択文字列型(単一行)or選択型(ラジオ/セレクト/検索)
    C. Email情報が格納されている文字列型データを選択してくださいデータ項目選択文字列型(単一行)
    D. 有効期限(月)情報が格納されている文字列型or選択肢型データを選択してください(例: "02")データ項目選択文字列型(単一行)or選択型(ラジオ/セレクト/検索)必須
    E. 有効期限(年)情報が格納されている文字列型or選択肢型データを選択してください(例: 法人名)データ項目選択文字列型(単一行)or選択型(ラジオ/セレクト/検索)必須
    F. クレジットカード番号情報が格納されている文字列型データを選択してください (区切り無し)データ項目選択文字列型(単一行)必須
    G. CVC情報が格納されている文字列型データを選択してくださいデータ項目選択文字列型(単一行)必須
    H. カード名義情報が格納されている文字列型データを選択してくださいデータ項目選択文字列型(単一行)
    I. Stripe Customer ID が格納される文字列型データを選択してください (更新)データ項目選択文字列型(単一行)
    J. カード番号下4桁が格納される文字列型データを選択してください (更新)データ項目選択文字列型(単一行)
    W. 通信ステータスが格納される文字列型データを選択してください (更新)データ項目選択文字列型(単一行)必須
    X. 通信ログが格納される文字列型データを選択してください (更新)データ項目選択文字列型(複数行)
    -設定変数名設定ラベル
    Aconf_SecretKeyStripe SecretKey をセットしてください (sk_xxx: 32文字)
    Bconf_DataIdBDescription情報が格納されている文字列型or選択肢型データを選択してください(例: 法人名)
    Cconf_DataIdCEmail情報が格納されている文字列型データを選択してください
    Dconf_DataIdD有効期限(月)情報が格納されている文字列型or選択肢型データを選択してください(例: "02")
    Econf_DataIdE有効期限(年)情報が格納されている文字列型or選択肢型データを選択してください(例: 法人名)
    Fconf_DataIdFクレジットカード番号情報が格納されている文字列型データを選択してください (区切り無し)
    Gconf_DataIdGCVC情報が格納されている文字列型データを選択してください
    Hconf_DataIdHカード名義情報が格納されている文字列型データを選択してください
    Iconf_DataIdIStripe Customer ID が格納される文字列型データを選択してください (更新)
    Jconf_DataIdJカード番号下4桁が格納される文字列型データを選択してください (更新)
    Wconf_DataIdW通信ステータスが格納される文字列型データを選択してください (更新)
    Xconf_DataIdX通信ログが格納される文字列型データを選択してください (更新)
    // Card Info to Stripe (ver. 20161007)
    // (c) 2016, Questetra, Inc. (the MIT License)
    
    //// == 工程コンフィグの参照 / Config Retrieving ==
    var secretKey = configs.get( "conf_SecretKey" ) + "";
    var dataIdB = configs.get( "conf_DataIdB" );
    var dataIdC = configs.get( "conf_DataIdC" );
    var dataIdD = configs.get( "conf_DataIdD" );
    var dataIdE = configs.get( "conf_DataIdE" );
    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 dataIdW = configs.get( "conf_DataIdW" );
    var dataIdX = configs.get( "conf_DataIdX" );
    
    //// == ワークフローデータの参照 / Data Retrieving ==
    var stripeDesc = "";
    if( data.get( dataIdB ) instanceof java.util.ArrayList ){
      stripeDesc = data.get( dataIdB ).get(0).getValue() + "";
    }else if( data.get( dataIdB ) instanceof java.lang.String ){
      stripeDesc = data.get( dataIdB ) + "";
    }
    var expMonth = "";
    if( data.get( dataIdD ) instanceof java.util.ArrayList ){
      expMonth = data.get( dataIdD ).get(0).getValue() + "";
    }else if( data.get( dataIdD ) instanceof java.lang.String ){
      expMonth = data.get( dataIdD ) + "";
    }
    var expYear = "";
    if( data.get( dataIdE ) instanceof java.util.ArrayList ){
      expYear = data.get( dataIdE ).get(0).getValue() + "";
    }else if( data.get( dataIdE ) instanceof java.lang.String ){
      expYear = data.get( dataIdE ) + "";
    }
    var stripeEmail = data.get( dataIdC ) + "";
    var stripeCardNum = data.get( dataIdF ) + "";
    var stripeCardCvc = data.get( dataIdG ) + "";
    var stripeCardName = data.get( dataIdH ) + "";
    
    //// == 演算 / Calculating ==
    var accessLog = "";
    var responseJson = "";
    var uri = "https://api.stripe.com/v1/customers";
    var response = httpClient.begin()
      .basic( secretKey, "" )
      .formParam( "description", stripeDesc )
      .formParam( "email", stripeEmail )
      .formParam( "source[object]", "card" )
      .formParam( "source[exp_month]", expMonth )
      .formParam( "source[exp_year]", expYear )
      .formParam( "source[number]", stripeCardNum )
      .formParam( "source[cvc]", stripeCardCvc )
      .formParam( "source[name]", stripeCardName )
      .post( uri );
    var httpStatus = response.getStatusCode() + "";
    accessLog += "---POST request--- " + httpStatus + "\n";
    accessLog += response.getResponseAsString() + "\n";
    responseJson += response.getResponseAsString() + "";
    
    var cusId = "";
    var last4 = "";
    if( httpStatus == "200" ){
      var jsonObj = JSON.parse( responseJson );
      cusId = jsonObj.id;
      last4 = jsonObj.sources.data[0].last4;
    }
    
    //// == ワークフローデータへの代入 / Data Updating ==
    retVal.put( dataIdI, cusId );
    retVal.put( dataIdJ, last4 );
    retVal.put( dataIdW, httpStatus );
    if( dataIdX !== "" ){
      retVal.put( dataIdX, accessLog );
    }
    

    • B’: Bで選択したデータ項目に格納されているDescription情報
    • C’: Cで選択したデータ項目に格納されているEmail情報
    • D’: Dで選択したデータ項目に格納されている有効期限(月)情報
    • E’: Eで選択したデータ項目に格納されている有効期限(年)情報
    • F’: Fで選択したデータ項目に格納されているクレジットカード番号情報
    • G’: Gで選択したデータ項目に格納されているCVC情報
    • H’: Hで選択したデータ項目に格納されているカード名義情報
    • プロパティ B’C’D’E’F’G’H’ を持つ顧客が Stripe に登録されます
    • 課金に利用される Customer ID が I で選択したデータ項目に格納されます
    • 登録されたクレジットカードの下4桁が J で選択したデータ項目に格納されます
    • (F の選択と同じ項目に設定することでクレジットカード情報を破棄することも可能です)
    • 登録処理のステータスが W で選択したデータ項目に格納されます (無効カード番号などのハンドリングに利用します)
    • 通信ログが X で選択したデータ項目に格納されます
    • 事前に Stripe Dashboard にて Secret Key を取得しておく必要があります
    • 対応カードや対応通貨は国によって異なります
    • MM/YY 版は D’ と E’ が1データ(MM/YYの5文字)で格納されているケースでご利用ください