我正在建立零售业务,通过互联网销售黄金,使用opencart。不同之处在于我只接受比特币(BTC),这是一种新的加密货币。
问题是贵金属价格与BTC / GBP交易所波动很大。因此,我需要以相当频繁的价格自动更新我的开放式汽车价格,以避免因汇率变动和亏本出售而陷入困境。
我写了一个附加的脚本,它可以提取金币,银币和铂金的价格,然后用比特币计算价格。
因此,对于网站上的每个金属项目,我都希望目录中所有产品的价格自动更改(每15分钟一次是理想的)。
我的问题是:如何根据脚本更新opencart数据库中的价格?
价格必须根据以下四点改变: 该物品所含贵金属的种类。 该项目的百分比标记 该物品所含贵重金属的重量。 该项目的硬币类型。
我希望这些内容可以在opencart中编辑。对于每个项目,将有四个(额外)属性
金属类型 =>金 =>银 =>铂 =>不是金属(对于其他物品,它会忽略所有重量,价格变化) 标记百分比 百分比(整数?) 重量 整数 硬币标记 整数 “ 所以,假设我卖的是克鲁格兰类型的四分之一盎司金币:
四分之一盎司的金币重7.77克,因此在产品页面上,重量将与该数字一起列出。基本价格将设定为7.77克*黄金价格(克数)(此数字是使用附加的PHP脚本获取的)。
我从批发黄金价格的默认加价将是10%,“基本”价格将增加10%,这也将列在产品页面上。
Krugerrands,由于历史原因,往往包括超过黄金批发价格的价值。所以硬币标记大约是5比特币,价格会增加以反映这一点。 “ 这些价格小提琴都不应该由买家看到,他们应该看到价格变化以反映所有这些价格
所有产品的价格每小时都会发生变化,以反映黄金价格和BTC GBP汇率的变化。
下面是一个PHP脚本,用于提取黄金价格,白银价格和铂金价格,然后计算比特币中一克金属的价格。这是我编程的第一件事,所以可能有点冗长,或者不遵循既定惯例。答案可能非常复杂,所以我不希望有一个完整的答案。收到一些指示会很高兴!
<?php
/* This is a script that ultimately displays the price of gold in grams, denominated in Bitcoins (BTC), a non fiat cryptographic currency. This is also the first thing I have ever programmed, so be nice */
// line break variable
$br = "<br> <br>";
// CURL begin
//curl session 1: grab metal prices
$ch1 = curl_init();
curl_setopt( $ch1, CURLOPT_URL, 'http://drayah.no.de/metals/latest' );
curl_setopt( $ch1, CURLOPT_RETURNTRANSFER, 1 );
$metalsdata = curl_exec( $ch1 );
// curl session 2: Grab exchange rate for BTC/GBP
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, 'https://mtgox.com/api/1/BTCGBP/public/ticker' );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt( $ch, CURLOPT_FRESH_CONNECT, 1);
curl_setopt( $ch, CURLOPT_TIMEOUT_MS, 1000);
curl_setopt( $ch, CURLOPT_USERAGENT, 'useragent');
$btcgbpdata = curl_exec( $ch );
curl_close( $ch );
// curl session 3: Grab British pounds to USD exchange rates
$ch1 = curl_init();
curl_setopt( $ch1, CURLOPT_URL, 'https://raw.github.com/currencybot/open-exchange-rates/master/latest.json' );
curl_setopt( $ch1, CURLOPT_Rcheck if my code isETURNTRANSFER, 1 );
$currencydata = curl_exec( $ch1 );
//gold digest: turn JSON data into readable php, and extract the gold price
$metals = json_decode( $metalsdata, true, 512 );
$goldprice = $metals['gold']['quote'];
$silverprice = $metals['silver']['quote'];
$platprice = $metals['platinum']['quote'];
//BTC digest of JSON
$btcgbp = json_decode( $btcgbpdata, true, 512 );
$btcgbpvwap = ($btcgbp['return']['vwap']['value']);
echo "$btcgbpvwap pounds per BTC";
echo $br;
//currency digest of JSON
$currency = json_decode( $currencydata, true, 512 );
$usdgbp = ($currency['rates']['GBP']);
echo "$usdgbp pence per USD dollar";
echo $br;
echo $br;
// convert metals into price per ounce in pounds
$goldpounds = $goldprice * $usdgbp;
$silverpounds = $silverprice * $usdgbp;
$platpounds = $platprice * $usdgbp;
echo "GBP $goldpounds per ounce of gold";
echo $br;
echo "GBP $silverpounds per ounce of silver";
echo $br;
echo "GBP $platpounds per ounce of platinum";
echo $br;
echo $br;
//metals prices in grams
$goldpoundsgram = $goldpounds / 31.1034768;
$silverpoundsgram = $silverpounds / 31.1034768;
$platpoundsgram = $platpounds / 31.1034768;
echo "$goldpoundsgram pounds per gram of gold";
echo $br;
echo "$silverpoundsgram pounds per gram of silver";
echo $br;
echo "$platpoundsgram pounds per gram of platinum";
echo $br;
echo $br;
// metal prices denominated in BTC
$btcgoldgram = ($goldpoundsgram / $btcgbpvwap);
$btcsilvergram = ($silverpoundsgram / $btcgbpvwap);
$btcplatgram = ($platpoundsgram / $btcgbpvwap);
echo "<b>";
echo $btcgoldgram;
echo " bitcoins per gram of gold";
echo $br;
echo $btcsilvergram;
echo " bitcoins per gram of silver";
echo $br;
echo $btcplatgram;
echo " bitcoins per gram of platinum";
?>
答案 0 :(得分:4)
实际上price
只是表product
中的一个数字字段,您可以使用基于product_id
的简单更新语句对其进行更新。
同一个表中还有一列cost
,仅用于报告管理面板中的收入。如果您对此类报告感兴趣,也可以更新它。
要从product_id
恢复product_description
,您可以使用产品名称(请注意名称已本地化)。假设您的数据库包含名为 gram of silver 的产品,那么您的更新可能是
update product p,product_description d set price=$btcsilvergram
where p.product_id=d.product_id and name='gram of silver'
价值免税。
答案 1 :(得分:0)
我正在寻找类似的东西。由于我的供应商价格均为美元(即它们都不会接受比特币),我宁愿将这些价格硬编码到Opencart中,然后使用Opencart的内置汇率转换器来收取足够的比特币以支付任何给定的费用天。通过调整我的管理员和主题设置,我只能在BTC中显示价格,并取消访问者更改默认货币(菜单项,模块等)的能力。然后,我只需要定期更新Opencart中的USD-&gt; BTC费率,所有产品价格都会适当更新 - 每天,每天4次,每小时等等。
Opencart数据库有一个名为“currency”的表,用于存储适当的汇率。
比特币通常以BTC-USD(每10亿美元XXusd)报价,但我需要USD-BTC汇率,因为我的价格以美元存储。我倒了一个比特币样本价格(每1美元1 / $ 4 => .25btc)并将其存储在Opencart中。
CURRENCY:
(4, 'Bitcoin', 'btc', 'B⃦', 'BTC', '2', 0.25000000, 1, '2012-04-10 12:13:45'),
(2, 'US Dollar', 'USD', '$', '', '2', 1.00000000, 1, '2012-04-10 12:12:33');
现在,我只是一个脚本,可以在需要时更新“.25000000”值。我打算回避整个Opencart系统,并在服务器上设置一个cron作业,每天更新一次。我在其他地方设置了一些警报,以便在比特币价格出现大幅下跌时通知我。如果发生一些极端的价格变化,我可以登录Opencart并手动调整费率。
希望这会有所帮助: - )