1

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";

?>
4

2 に答える 2

4

は実際にpriceは table の単なる数値フィールドです。productに基づく簡単な更新ステートメントで更新できますproduct_id

cost同じテーブルには、管理パネルで収入を報告するためだけに使用される列もあります。そのようなレポートに興味がある場合は、それも更新できます。

を復元するには、product_id製品名を使用できます(名前がローカライズされproduct_descriptionていることに注意してください)。DBにgram of silverという名前の製品が含まれているとしたら、更新は次のようになります

update product p,product_description d set price=$btcsilvergram
 where p.product_id=d.product_id and name='gram of silver'

値は非課税です。

于 2012-04-10T05:56:11.383 に答える
0

私は似たようなものを見ています。私のサプライヤーの価格はすべて米ドルであるため (つまり、いずれもまだビットコインを受け入れることはありません)、これらの価格を Opencart にハードコーディングし、Opencart の組み込みの為替レートコンバーターを使用して、特定のコストをカバーするのに十分なビットコインを請求したいと考えています。日。管理者とテーマの設定を微調整することで、価格を BTC でのみ表示し、訪問者がデフォルトの通貨 (メニュー項目、モジュールなど) を変更できないようにすることができます。次に、Opencart で USD->BTC​​ レートを定期的に更新するだけで、すべての製品価格が適切に更新されます (毎日、1 日 4 回、1 時間ごとなど)。

Opencart データベースには、適切な為替レートを格納する「currency」という名前のテーブルがあります。

ビットコインは通常 BTC-USD (1btc あたり $XXusd) で見積もられますが、私の価格は USD で保存されているため、USD-BTC レートが必要です。サンプルのビットコイン価格 (1 / $4 => .25btc/$1) を反転し、それを 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 ジョブをセットアップして、1 日 1 回値を更新することを計画しています。ビットコイン価格に大きな暴落があった場合に通知するために、別の場所にいくつかのアラートを設定しています. 極端な価格変動が発生した場合は、Opencart にログインして手動でレートを調整できます。

お役に立てれば :-)

于 2012-04-16T02:37:54.763 に答える