如何设置Laravel Cashier的默认货币

时间:2015-01-14 14:24:15

标签: laravel

如何设置Cashier的默认货币?抓我的头 - 有多个源文件和发行说明提到它,但我很难找到设置它的位置。我想将其从USD更改为GBP

此外,还有一些函数,例如dollars(),删除或重命名会很好,最好的方法是什么?

3 个答案:

答案 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', '£');

值得一提的是,它应该放在启动方法中,而不是注册方法。