代码之家  ›  专栏  ›  技术社区  ›  mrateb

yii2-根据地址更改货币

  •  0
  • mrateb  · 技术社区  · 6 年前

    我有一个应用程序,来自不同国家的用户正在创建订单。我需要根据用户的地址更改订单的货币。我可以从帐户的详细资料中查到这个国家。我的问题是,我应该如何根据国家兑换货币?

    我在Yii2哪里可以做这个?

    我知道可以在main.php中设置货币。但我需要能够在运行时更改货币。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Muhammad Omer Aslam    6 年前
    • 首先,您必须从IP获取用户国家,以便使用 yii2-geoip .

    • 那么你必须得到国家货币,才能得到国家货币的列表 currency-list .

    • 设置存储货币的会话并更改整个网站货币。

    例子:

    <?php
    $geoip = new \lysenkobv\GeoIP\GeoIP();
    $ip = $geoip->ip(Yii::$app->request->getUserIP());
    $currencies = json_decode(file_get_contents('data.json'), true);
    foreach ($currencies as $currency) {
        if (strtoupper($currency['country']) == strtoupper($ip->isoCode)) {
            // set session and other jobs
        }
    }
    

    例如 config/main.php (用于 yii2-app-advanced )以及 config/web.php (用于 yii2-app-basic ) :

    <?php
    return [
        //
        'on beforeAction' => function ($action) {
            if (!Yii::$app->session->has('global-currency')) {
                // your code for get found user $currency, maybe from db or ip
                Yii::$app->session->set('global-currency', $currency);
            }
        }
    ];