我尝试使用Stripe checkout.js进行订阅,然后使用PHP订阅客户。我的问题是获取他们的电子邮件地址无法在文档中找到任何有用的内容。
文档:https://stripe.com/docs/guides/subscriptions#step-2-subscribe-customers
我有什么:
<script src="https://checkout.stripe.com/checkout.js"></script>
<button id="customButton">Purchase</button>
<script>
var handler = StripeCheckout.configure({
key: 'pk_test_keyhere',
image: '/square-image.png',
token: function(token) {
// Use the token to create the charge with a server-side script.
// You can access the token ID with `token.id`
}
});
document.getElementById('customButton').addEventListener('click', function(e) {
// Open Checkout with further options
handler.open({
name: 'test2',
description: 'Test Des',
amount: 0001,
currency:'GBP'
});
e.preventDefault();
});
</script>
<?php
// Set your API key
Stripe::setApiKey("sk_test_keyhere");
$token = $_POST['stripeToken'];
$customer = Stripe_Customer::create(array(
"card" => $token,
"plan" => "test2",
"email" => $email
)
);
?>
答案 0 :(得分:8)
根据David的回答,您可以通过PHP检索电子邮件地址,如下所示:
$stripeinfo =Stripe_Token::retrieve($_POST["token"]);
echo '<pre>',print_r($stripeinfo),'</pre>'; //show stripeObject info
$email = $stripeinfo->email;
为现在遇到此问题的人添加此答案的小更新。
$token = $_POST['stripeToken'];
$stripeinfo = \Stripe\Token::retrieve($token);
$email = $stripeinfo->email;
$customer = \Stripe\Customer::create(array(
'email' => $email,
'source' => $token,
'description' => 'New Customer'
));
我必须做一些小的改动才能使我的代码工作。
答案 1 :(得分:3)
如果您使用Checkout,您将被传递一个令牌,使用该令牌,您可以通过API调用获取电子邮件地址:https://stripe.com/docs/api#retrieve_token
不确定为什么电子邮件没有列在那里,但我确实有一个电子邮件属性可供我使用。您还可以在条纹日志下看到该电子邮件。