paymentMethods()总是检索带有空对象的数组。
public function userAllPaymentMethods(Request $request)
{
$user = User::find(5);
$paymentMethod = $user->paymentMethods();
return response($paymentMethod);
}
结果: https://www.screencast.com/t/aqenaud77A
还可以使用Stripe PaymentMethod lib库。
public function userAllPaymentMethods(Request $request)
{
$user = User::find(5);
\Stripe\Stripe::setApiKey('{{KEY}}');
$paymentMethod = \Stripe\PaymentMethod::all([
'customer' => $user->stripe_id,
'type' => 'card',
]);
return response($paymentMethod);
}
结果:
https://www.screencast.com/t/X14ane7WyqS
GitHub:here
答案 0 :(得分:5)
$paymentMethods = $user->paymentMethods()->map(function($paymentMethod){
return $paymentMethod->asStripePaymentMethod();
});
答案 1 :(得分:3)
这是一个解决方案:
$paymentMethods = [];
foreach ($user->paymentMethods() as $paymentMethod) {
$paymentMethods[] = $paymentMethod->asStripePaymentMethod();
}
只需循环浏览付款方式,然后使用$paymentMethod->asStripePaymentMethod()
即可获取用户的付款方式。
答案 2 :(得分:1)
我有同样的问题。没有时间进行深入调查。我只是意识到paymentMethod
中的方法cashier/src/Billable.php
不会返回任何内容。
/**
* Get a collection of the entity's payment methods.
*
* @param array $parameters
* @return \Illuminate\Support\Collection|\Laravel\Cashier\PaymentMethod[]
*/
public function paymentMethods($parameters = [])
{
$this->assertCustomerExists();
$parameters = array_merge(['limit' => 24], $parameters);
// "type" is temporarily required by Stripe...
$paymentMethods = StripePaymentMethod::all(
['customer' => $this->stripe_id, 'type' => 'card'] + $parameters,
$this->stripeOptions()
);
return collect($paymentMethods->data)->map(function ($paymentMethod) {
return new PaymentMethod($this, $paymentMethod);
});
}
return new PaymentMethod($this, $paymentMethod);
这将不返回任何内容,而不是$ paymentMethod。对我来说,解决方案是用mu用户模型覆盖带区Lib的方式覆盖PaymentMethod。
答案 3 :(得分:0)
问题与条带无关,我认为您正在获取正确的数据,问题在于$ paymentMethod无法编码为JSON,这就是为什么您得到空响应的原因,请尝试添加dd($ paymentMethod);在return语句之前,然后检查结果。