opencart を使用して、インターネット上で金を販売する小売業を立ち上げています。違いは、新しい暗号通貨であるビットコイン (BTC) のみを受け入れることです。
問題は、貴金属価格と BTC/GBP 取引所が非常に不安定であることです。したがって、為替レートの変動や損失での販売に巻き込まれないように、オープンカートの価格をかなり頻繁に自動的に更新する必要があります。
私は、金、銀、プラチナの価格を取得し、ビットコインで価格を表示する添付のスクリプトを作成しました。
そのため、Web サイトの各金属アイテムについて、カタログ内のすべての製品の価格が自動的に変更されるようにしたいと考えています (15 分ごとが理想的です)。
私の質問は: スクリプトに従って、opencart データベースの価格を更新するにはどうすればよいですか?
価格は、アイテムに含まれる貴金属の種類という 4 つの要素に基づいて変更する必要があります。その商品の値上げ率 商品に含まれる貴金属の重量 アイテムのコインの種類。
これらを opencart 内で編集可能な属性にしたいと思います。すべてのアイテムに、4 つの (追加の) 属性があります。
金属の種類 => ゴールド => シルバー => プラチナ => 金属ではない (他のアイテムの場合、すべての重量、価格の変更は無視されます) パーセンテージ マークアップ パーセンテージ (整数?) 重量 整数 コイン マークアップ 整数m クルーガーランド タイプの 1/4 オンスの金貨を販売しています。
4 分の 1 オンスの金貨の重さは 7.77 グラムであるため、製品ページでは重量がその数値で表示されます。基本価格は 7.77 グラム * グラム単位の金の価格に設定されます (この数値は添付の php スクリプトを使用して取得されます)。
卸売金価格からの私のデフォルトのマークアップは 10% で、「基本」価格は 10% 増加し、これも製品ページに表示されます。
クルーガーランドは、歴史的な理由から、金の卸売価格以上の価値を含む傾向があります。したがって、コインのマークアップは約 5 ビットコインになり、これを反映して価格が引き上げられます。「これらの価格調整は購入者には表示されません。これらすべてを反映した価格変更のみが表示されます。
金価格の変化と BTC GBP 為替レートを反映して、すべての製品の価格が 1 時間ごとに変化します。
以下は、金の価格、銀の価格、およびプラチナの価格を取得し、ビットコインで金属のグラムの価格を指定する 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";
?>