将姓名、地址、城市等添加到 PHP 中的 Stripe Customer 对象

Add name, address, city, etc to Stripe Customer object in PHP

我正在使用 Stripe 进行付款,并想向用户对象添加一些附加信息(名字和姓氏、地址和 phone)。

$token  = $_POST['stripeToken'];
$email  = strip_tags(trim($_POST['email']));
$donation_type = $_POST['type'];
$donation_type_other = $_POST['other'];

// User Info
$name_first = $_POST['name_first'];
$name_last = $_POST['name_last'];
$address = $_POST['address'];
$city = $_POST['city'];
$state = $_POST['state'];
$zip = $_POST['zip'];
$user_info = array("First Name" => $name_first, "Last Name" => $name_last, "Address" => $address, "State" => $state, "Zip Code" => $zip);

// Metadata for the charge
$metadata_charge = array();
if (!empty($donation_type_other) && $donation_type == 'Other') {
    $metadata_charge = array("Donation Type" => $donation_type, "Other" => $donation_type_other);   
} else {
    $metadata_charge = array("Donation Type" => $donation_type);    
}

$customer = \Stripe\Customer::create(array(
  'email' => $email,
  'card'  => $token,
  'metadata' => $user_info
));

$charge = \Stripe\Charge::create(array(
  'customer' => $customer->id,
  'receipt_email' => $email,
  'amount'   => $_POST['amount']*100,
  'currency' => 'usd',
  "metadata" => $metadata_charge
));

最好的方法是什么?要在 Customer 对象上使用 metadata?或者我将其设置为运费 address/info?

由于您正在创建一个客户对象,根据您对要存储的内容的描述,这似乎并不重要。 Stripe 不会履行任何实物商品,因此他们在客户对象上提供的存储主要是为了您的利益。因此,当您访问客户对象时(通过像 cus_8Dmu7vi6wah58z 这样的 ID),它应该 return 所有的运输信息和元数据。

运输哈希中有一个 dedicated name field,但它不会从姓氏中抽象出名字。如果这是您真正想要的东西,将其存储在元数据字段中可能会更容易。

您还可以注意到,将 "shipping" 信息存储在运输哈希中,并将 "billing" 信息存储在元数据哈希中可能会有所帮助。