2016-10-22 2 views
1

Mit dem folgenden PHP-Code kann ich einfach ein Bankkonto meiner Benutzer mit zusätzlichen Informationen zu meinem Stripe-Konto hinzufügen.Wie kann ich ein Benutzerkonto mit stripe erstellen?

<?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 
} 
?> 

Die HTML-Formular ist wie folgt aussehen:

<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> 

ich stripe.js sah. Sie sind mit folgenden js Code Bankkonto hinzuzufügen:

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); 

Aber sehen Sie, dass in meinem HTML-Formular habe ich zusätzlich Felder z Geburtsdatum.

Meine Frage ist, wie kann ich ein Bankkonto eines Benutzers mit dieser stripe.js mit allen meinen HTML-Formularfelder hinzufügen?

Antwort

2

Felder, die für die Eigenschaften legal entity eines verwalteten Kontos benötigt werden, können Sie nicht direkt über Stripe.js übergeben.

Was Sie können tun hier ist ein Bankkonto Token erstellen, hängen Sie es an Ihr Formular, das andere Informationen enthält, und dann dieses Formular an Ihr Back-End für die Verarbeitung senden.

So würde es funktionieren: Richten Sie einen Handler ein, der beim Senden von Formularen oder beim Klicken auf die Schaltfläche zum Senden abhört. Verwenden Sie dies, um Ihren Anruf Stripe.bankAccount.createToken auszulösen.

Fügen Sie im Callback stripeResponseHandler Ihres createToken-Aufrufs eine ausgeblendete Eingabe mit dem Namen stripeToken an das Zielformular an und senden Sie das Formular ab.

Das Formular wird an Ihr Backend mit dem Bankkonto-Token sowie alle anderen Formularfelder, die Sie zwischen Ihren <form></form> Tags erstellt haben, mit php (z. B. $_POST['stripeToken'] für das Bankkonto-Token) übergeben Sie haben angehängt, oder $_POST['dob-year'], wenn Sie ein Feld mit einem Attribut name="dob-year" hatten).

Sie können die Grundidee in Aktion sehen hier: https://jsfiddle.net/pay62y2f/

+0

Thanks.a lot @duck. –

Verwandte Themen