【问题标题】:Stripe API: Accessing Coupon DataStripe API:访问优惠券数据
【发布时间】:2018-02-14 02:34:00
【问题描述】:

我正在尝试使用 Stripe API 从客户记录中获取优惠券 ID。我想我引用它的方式是错误的。我试过这个:

 $cust = \Stripe\Customer::all(array("limit" => 3));

    if(!empty($cust)){

        foreach ($cust->data as $customer){

           foreach ($customer->subscriptions as $sub)
           {
                echo $sub->discount->coupon->id;

            } 

        }     
    }else{
        //No Customers
    }

【问题讨论】:

  • 从你的回声行中删除单引号。
  • 您的日志文件中是否有任何特定错误? Stripe 日志怎么样?
  • 要调试这种类型的东西,就在您回显优惠券之前,您可以使用php.net/manual/en/function.var-dump.php 来检查变量(即var_dump($sub);)。然后,如果这是您所期望的,您可以执行var_dump($sub->discount);,然后执行var_dump($sub->discount->coupon); 等,看看哪里不是您所期望的。

标签: php json stripe-payments


【解决方案1】:

按照上面的建议,您将输出一个带有单引号的变量,这将按字面意思输出该字符串,而不是在字符串中插入$sub->discount->coupon->id 变量的内容。删除单引号,或者,如果您喜欢字符串插值,请将您拥有的内容替换为 echo "{$sub->discount->coupon->id}";

您还需要循环 $customer->subscriptions->data,因为订阅数组与客户数组具有相同的形状:

$cust = \Stripe\Customer::all(array("limit" => 3, "expand" => "data.subscriptions"));

if(!empty($cust)){

    foreach ($cust->data as $customer){

       foreach ($customer->subscriptions->data as $sub)
       {
            if ($sub->discount && $sub->discount->coupon) {
               echo $sub->discount->coupon->id . "\n";
            }
       } 

    }

} else {
    // No Customers
}

我还添加了一个if 语句以避免$sub->discount$sub->discount->coupon 为空时出错。

在此处查看示例输出: https://stripe.com/docs/api#retrieve_subscription

【讨论】:

  • 感谢您的回复,但是当我从 Stripe 检索客户数据时,回复中包含我想要访问的订阅数据。我认为解析 JSON 是这里的问题。
  • 刚刚更新了我的回复,您说得对,不需要扩展对象的部分。如果您还有其他问题,请发布任何错误消息,并描述您看到的内容与预期看到的内容等。
猜你喜欢
  • 2015-06-14
  • 2016-09-02
  • 1970-01-01
  • 1970-01-01
  • 2020-10-10
  • 2015-02-24
  • 1970-01-01
  • 2011-10-09
  • 1970-01-01
相关资源
最近更新 更多