如何设置Cashier的默认货币?抓我的头 - 有多个源文件和发行说明提到它,但我很难找到设置它的位置。我想将其从USD
更改为GBP
。
此外,还有一些函数,例如dollars()
,删除或重命名会很好,最好的方法是什么?
答案 0 :(得分:12)
为应用程序定义货币的建议方法是在Cashier类上使用useCurrency方法。
Cashier::useCurrency('gbp', '£');
我建议将此方法放在CashierServiceProvider的注册方法中。
通过覆盖已接受答案中建议的Billable方法,您放弃了可配置性并使代码不那么灵活。 (当您决定使用多种货币时会发生什么?)
答案 1 :(得分:0)
编辑2016年10月:这已不再正确。请查看下面的@Vercoutere答案。泰勒于2016年4月推出了新方法 - 检查提交https://github.com/laravel/cashier/commit/d7e9766e20a2fc772e88d24c39c40b331c6c68e6
我自己找不到这个问题的答案,所以我发布以供将来参考。
为了使用Laravel Cashier,我们必须将Billable
特征和BillableContract
添加到User
模型。这样我们的User
模型现在可以使用Billable
特征中的方法。当您查看它时,您会找到getCurrency()
,getCurrencyLocale()
和addCurrencySymbol($amount)
等方法。只需从原始特征中复制这3种方法,粘贴到您的User
模型中,然后进行编辑即可应用您的货币和区域设置。
对我来说(英国)是:
/**
* Get the Stripe supported currency used by the entity.
*
* @return string
*/
public function getCurrency()
{
return 'gbp';
}
/**
* Get the locale for the currency used by the entity.
*
* @return string
*/
public function getCurrencyLocale()
{
return 'en_GB';
}
/**
* Add the currency symbol to a given amount.
*
* @param string $amount
* @return string
*/
public function addCurrencySymbol($amount)
{
return '£'.$amount;
}
您可以在Alex Kaye's blog
上详细了解相关信息答案 2 :(得分:0)
正如Laravel在Currency Configuration session in the document中建议的那样,您应该将以下内容放在CashierServiceProvider.php中。
Cashier::useCurrency('gbp', '£');
值得一提的是,它应该放在启动方法中,而不是注册方法。