2016-10-22 10 views
1

次のPHPコードを使用すると、私のユーザーの銀行口座に、追加の情報を簡単に追加することができます。私はstripe.jsを見たストライプを使用してユーザー銀行口座を作成するにはどうすればよいですか?

<form role="form" id="bank-payment-form" method="POST" action="<?php echo esc_url(SITE_URL.'test-bank-create') ?>"> 
    <div class="row"> 
     <div class="col-md-12"><h3>Identity Verification<hr/></h3></div> 
     <div class="bank-errors"></div> 
     <div class="form-group col-xs-12 col-sm-4 col-md-4"> 
      <label class="control-label" for="date-time">Date Of Birth</label> 
      <select class="form-control day"> 
       <option value="">--Select Day--</option> 
       <?php 
       for ($d = 1; $d <=31; $d++) { 
        echo "<option value='$d'>$d</option>"; 
       } 
       ?> 
      </select> 
     </div> 
     <div class="form-group col-xs-12 col-sm-4 col-md-4"> 
      <label class="control-label" for="date-time">&nbsp;</label> 
      <select class="form-control month"> 
       <option value="">--Select Month--</option> 
       <?php 
       for ($m = 1; $m <=12; $m++) { 
        echo "<option value='$m'>$m</option>"; 
       } 
       ?> 
      </select> 
     </div> 
     <div class="form-group col-xs-12 col-sm-4 col-md-4"> 
      <label class="control-label" for="date-time">&nbsp;</label> 
      <select class="form-control year">> 
       <option value="">--Select Year--</option> 
       <?php 
       for ($i =2010; $i > 1900 ; $i--) { 
        echo "<option value='$i'>$i</option>"; 
       } 
       ?> 
      </select> 
     </div> 
     <div class="form-group col-xs-12 col-sm-12 col-md-12"> 
      <label class="control-label" for="date-time">Address</label> 
      <input type="text" placeholder="Address 1" class="form-control address1" value=""> 
     </div> 
     <div class="form-group col-xs-12 col-sm-12 col-md-12"> 
      <input type="text" placeholder="Address 2 (optional)" class="form-control address2" value=""> 
     </div> 
     <div class="form-group col-xs-12 col-sm-6 col-md-6"> 
      <label class="control-label" for="date-time">Country</label> 
      <input type="text" value="US" disabled class="form-control country"> 
      <input type="hidden" value="USD" data-stripe="country" disabled class="form-control" data-stripe="country"> 
     </div> 
     <div class="form-group col-xs-12 col-sm-6 col-md-6"> 
      <label class="control-label" for="date-time">State</label> 
      <select class="form-control state" id="area" required> 
      <?php 
      $get_location = mysqli_query($conn, "SELECT * FROM product_area"); 
      if(mysqli_num_rows($get_location) == 0) { 
       $choose = 'No state found'; 
      } else { 
       $choose = 'Choose State'; 
      } 
      ?> 
      <option value=""><?php echo $choose; ?></option> 
      <?php           
      while($get_location_result = mysqli_fetch_array($get_location)) { 
       $location_id = (int) $get_location_result['parea_id']; 
       $location_name = htmlspecialchars($get_location_result['parea_name']); 
       echo "<option value='$location_id'>$location_name</option>"; 
      } 
      ?>      
      </select> 
     </div> 
     <div class="form-group col-xs-12 col-sm-6 col-md-6"> 
      <label class="control-label" for="date-time">City</label> 
      <select id="sub_area" class="form-control city"> 
        <option value="">--Select City--</option> 
      </select> 
     </div> 
     <div class="form-group col-xs-12 col-sm-6 col-md-6"> 
      <label class="control-label" for="date-time">Zip Code</label> 
      <input type="text" value="<?php echo $zip_db; ?>" placeholder="Zip Code" class="form-control zip"> 
     </div> 

     <div class="form-group col-xs-12 col-sm-12 col-md-12"> 
      <label class="control-label" for="date-time">SSN Number</label> 
      <input type="text" placeholder="SSN Number" class="form-control ssn" value=""> 
      <small>Your SSN is used to verify your identity.</small> 
     </div> 
     <div class="col-md-12"><h4><b>Funds Recipient</b></h4></div> 
     <div class="form-group col-xs-12 col-sm-12 col-md-12"> 
      <select class="form-control account_holder_type"> 
       <option value="">--Select Account Holder Type--</option> 
       <option value="individual">Individual</option> 
       <option value="company">Company</option> 
      </select> 
     </div> 
     <div class="col-md-12"><h4><b>Bank Account</b></h4></div> 
     <div class="form-group col-xs-12 col-sm-6 col-md-6"> 
      <label class="control-label" for="date-time">Routing Number</label> 
      <input type="text" class="form-control routing_number" value="" placeholder="123456789"> 
      <small>Your routing number will be 9 digits</small> 
     </div>      
     <div class="form-group col-xs-12 col-sm-6 col-md-6"> 
      <label class="control-label" for="date-time">Account Number</label> 
      <input type="text" class="form-control account_number" value="" placeholder=""> 
      <small>Your routing number will be 9 digits</small> 
     </div>      
     <div class="col-md-6 col-sm-6 col-xs-12"> 
      <input type="submit" value="Verify Identity" class="submit btn btn-booking"> 
     </div>      
     <?php } ?>  
    </div>      
</div>  
</div> 
</form> 

<?php 
try { 
require_once('vendor/autoload.php'); 
Stripe\Stripe::setApiKey("sk_test_code"); 

$account = \Stripe\Account::create(
    array(
     "country" => "US", 
     "managed" => true, 
     "email" => "[email protected]", 
     "legal_entity" => array(
      'address' => array(
       'city' => 'Carlifonia', // 
       'country' => 'US', 
       "line1" => 'Address line 1', 
       "line2" => 'Address line 2', 
       "postal_code" => '90046', 
       "state" => 'Denver' // 
      ), 
      'business_name' => '', 
      'business_tax_id' => '', 
      'dob' => array(
       'day' => '01', 
       'month' => '01', 
       'year' => '1990', 
      ), 
      'first_name' => 'Test Lynn First Name', 
      'last_name' => 'Test Lynn Last Name', 
      //'personal_id_number' => '000000000', 
      'ssn_last_4' => '4444', 
      'type' => 'individual' 
     ), 
     'tos_acceptance' => array(
      'date' => time(), 
      'ip' => $_SERVER['REMOTE_ADDR'] 
     ), 
     'transfer_schedule' => array(
      "interval" => 'weekly', 
      "weekly_anchor" => 'sunday' 
     ), 
     'external_account' => array(
      "object" => "bank_account", 
      "country" => "US", 
      "account_holder_type" => 'individual', r 
      "routing_number" => "111000025", 
      "account_number" => "00" 
     ) 
    ) 
); 

    //send the file, this line will be reached if no error was thrown above 
    echo "<h1>Account ID = ".$account['id']."</h1>"; 
    echo "<h1>Secret Key = ".$account['keys']['secret']."</h1>"; 
    echo "<h1>Publish Key = ".$account['keys']['publishable']."</h1>"; 

} 
//catch the errors in any way you like 

catch(Stripe_CardError $e) { 
    print_r($e); 
} 

catch (Stripe_InvalidRequestError $e) { 
// Invalid parameters were supplied to Stripe's API 
    print_r($e); 

} catch (Stripe_AuthenticationError $e) { 
// Authentication with Stripe's API failed 
// (maybe you changed API keys recently) 
    print_r($e); 

} catch (Stripe_ApiConnectionError $e) { 
// Network communication with Stripe failed 
    print_r($e); 
} catch (Stripe_Error $e) { 
    print_r($e); 
// Display a very generic error to the user, and maybe send 
// yourself an email 
} catch (Exception $e) { 
    echo '<pre>'; 
    $e_json = $e->getJsonBody(); 
    echo $error = $e_json['error']['message']; 
    echo '</pre>'; 
// Something else happened, completely unrelated to Stripe 
} 
?> 

htmlフォームは次のようになります。彼らは、銀行口座を追加するには、次のJSコードを使用している:

Stripe.bankAccount.createToken({ 
    country: $('.country').val(), 
    currency: $('.currency').val(), 
    routing_number: $('.routing-number').val(), 
    account_number: $('.account-number').val(), 
    account_holder_name: $('.name').val(), 
    account_holder_type: $('.account_holder_type').val() 
}, stripeResponseHandler); 

しかし、あなたは、私が出産の追加フィールド例えば、日付を持っている私のHTMLフォームでは、ことがわかります。

私の質問は、このstripe.jsを使用しているすべてのユーザーの銀行口座をどのように追加することができますか?

答えて

2

管理アカウントのlegal entityプロパティに必要なフィールドは、Stripe.js経由で直接渡すことはできません。

あなたはになります。ここでは銀行口座トークンを作成し、フォームに追加します。フォームには他の情報が含まれています。そして、そのフォームをバックエンドに送信して処理します。

これはどのように動作するのですか:フォーム提出時に聴くハンドラを設定するか、送信ボタンをクリックしてこのハンドラを使用してStripe.bankAccount.createToken呼び出しをトリガします。

stripeResponseHandler createTokenコールバックでは、stripeTokenという名前の隠し入力をターゲットフォームに追加し、フォームを送信します。

フォームは、銀行口座トークンと<form></form>タグと名前付きの間で作成した他のフォームフィールドをバックエンドに渡します。これをphpで取得できます(銀行口座トークンの場合は$_POST['stripeToken'])。追加しましたか、name="dob-year"のフィールドがある場合は$_POST['dob-year']です)。 https://jsfiddle.net/pay62y2f/

+0

Thanks.aロット@duck:

現在地アクションの基本的な考え方を見ることができます。 –

関連する問題