我最近购买了 Laravel Spark 来处理订阅,并在团队支持下将其安装在我的 Jestream 项目上。
根据文档中的cookbook我应该将
paddleEmail
设置为团队所有者的电子邮件地址。
use Spark\Billable;
class Team extends JetstreamTeam
{
use Billable;
public function paddleEmail(): string|null
{
return $this->owner->email;
}
}
这正是我所期望的,但我也希望我的用户能够拥有多个团队。在这种情况下,当用户创建第二个团队时,他们会收到错误,因为客户表已经具有与同一客户 paddle_id 相关的记录(但针对另一个计费模型)。
Spark / Cashier 是否有一种方法允许用户拥有多个团队,并可能支付多个订阅费用?
发生此问题的原因是
Paddle
要求每个客户拥有唯一的电子邮件地址,并且多个团队使用同一所有者的电子邮件会导致冲突。
修改您的 paddleEmail
方法以返回每个团队唯一的电子邮件:
public function paddleEmail(): string|null
{
$emailParts = explode('@', $this->owner->email);
$emailParts[0] .= '+team' . $this->id;
return implode('@', $emailParts);
}
或者,您可以考虑使用电子邮件以外的唯一标识符,例如在
customer_reference
方法中设置唯一的 paddleOptions
。