我正在进行未来的订阅,当我运行代码时,它创建2订阅1是活动的而另一个是试用,不知道为什么它创建2订阅?对于该有效订阅,它会创建错误的付款,我已将trial_end
设置为“2018-06-20”仍然从今天开始订阅,任何人都可以帮助我如何解决此问题?这里我添加了我的代码
<?php
require_once('init.php');
if (isset($_POST['stripeToken'])) {
\Stripe\Stripe::setApiKey("*****************");
\Stripe\Stripe::setApiVersion("2018-05-21");
$token = $_POST['stripeToken'];
try {
$plan_id = time();
/************ check if plan exists ***************/
$plan_created = \Stripe\Plan::create(array(
"amount" => 1200,
"interval" => "day",
"product" => array(
"name" => "test",
),
"currency" => "usd",
"id" => $plan_id,
)
);
//Create Customer:
$customer = \Stripe\Customer::create(array(
'source' => $token,
'description'=> 'Test Customer',
'email' => 'testabc123@gmail.com',
'plan' => $plan_id
));
// Charge the order:
$dateTime = new DateTime('2018-06-20');
$date_timestamp = $dateTime->format('U');
$charge = \Stripe\Subscription::create(array(
'customer' => $customer->id,
"items" => array(
array(
"plan" => $plan_id,
),
),
"trial_end"=>$date_timestamp,
)
);
echo "<pre>";
print_r($charge);
die;
} catch (Stripe\Error\Card $e) {
// The card has been declined
}
}
?>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.js"></script>
<script type="text/javascript" src="https://js.stripe.com/v2/"></script>
<form action="" method="post">
<script src="http://checkout.stripe.com/v2/checkout.js" class="stripe-button"
data-key="pk_test_4Ak5l6azsnSsVrpVJbIepoBu"
data-amount="5000" data-description="One year's subscription"></script>
</form>
<script>
$(document).ready(function () {
$("button").trigger("click");
});
</script>
答案 0 :(得分:0)
您看到两个订阅的原因是您创建了两个订阅。第一个是在您致电Customer::Create
并通过计划时创建的:
'plan' => $plan_id
此订阅没有试用期,因为您没有在计划中指定一个,这是创建此特定订阅时使用的全部内容。
另一个单独的订阅是通过Subscription::create
电话创建的。这是正确的订阅,并且设置了正确的试用期。
要解决此问题,我只需从您创建客户的位置删除plan
,并保留现有代码以创建订阅,因为这样可以正常工作。