2017-04-05 75 views
0

我的代码设置使用下面如何测试localhhost中的条带订阅?

  $strtok = \Stripe\Token::create([ 
        'card' => [ 
        'number' => $ccNum, 
        'exp_month' => $expMonth, 
        'exp_year' => $expYear, 
        'cvc' => $cvc 
        ], 
        ] 
      ); 
      $stripetoken = $strtok->id; 
      $customer = \Stripe\Customer::create([ 
        'source' => $stripetoken, 
        'email' => $email 
      ]); 
      $subscription = \Stripe\Subscription::create([ 
       'customer' => $customer->id, 
       'plan' => $planId, 
      ]); 

给出如果我理解正确条纹的第一次尝试预订电话后,立即给卡收费的代码条订阅(经常性费用)。是否有必要设置一个条形的Web钩子URL来获得诸如chargeId之类的费用细节?我的意思是我在测试模式下工作,我不能设置指向服务器的条带web钩子url。当条纹首次为卡充电时,以及为了测试的目的,当条纹随后定期为卡充电时,我想获得条带chargeId和其他收费详细信息。我想在本地网络中连接到本地网络的系统中执行此操作。

回答

0

这里你不需要webhooks。 API请求是同步的,这意味着,在您致电\Stripe\Subscription::create()后,Stripe将尝试向客户收费。

如果收费成功,您将获得Subscriptionobject,如果收费不成功,您将收到error

假设收费成功,您可以立即通过API检索最新费用和发票。最简单的方法是检索一个,并使用expand功能一次获取所有内容。您的代码将变为:

$invoices = \Stripe\Invoice::all(array(
    "limit" => 1, 
    "customer" => $customer->id, 
    "expand" => array("data.charge") 
)); 

$invoice = $invoices->data[0]; 
$invoiceId = $invoice->id; 
$chargeId = $invoice->charge->id; 

至于网络挂接在本地就可以随时使用工具,如ngrok自动重定向事件到本地主机。

+0

上述代码会在创建订阅后立即获取第一个收费详细信息。感谢代码。但我仍然有问题。我的服务器本质上是短暂的。如何在未设置网页挂钩的情况下在随后几个月内收取后续费用的收费详情(按月订阅)?为此我必须使用像ngrok这样的工具,是吗?为了每月使用上面的代码,我必须设置某种执行脚本的cron吗?我不确定这是否可能在我打算稍后使用的亚马逊ec2短暂服务器的情况下。 – jai

+0

@jai ngrok用于在本地测试webhook,没有别的。你不会在这里使用ngrok,你的代码将会在服务器上运行,并且会一直运行。只要发生新的费用,“invoice.payment_succeeded”事件就会发送到您的webhook端点,您的代码将处理事件并自动更新您的数据库。这全部记录在Stripe的webhooks和subs文档中:https://stripe.com/docs/webhooks和https://stripe.com/docs/subscriptions/lifecycle – koopajah

+0

你能告诉我如何与docker一起使用ngrok吗? – jai