質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Bitcoin

Bitcoinは、インターネット上で流通している電子マネーです。P2Pネットワークを通じた安価な決済コストが実現できる一方、取引時の危険性や闇市場・資金洗浄など不正取引の温床といった法的問題も抱えています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

3回答

4067閲覧

coincheckのAPIを使用して自分のECサイトで、ビットコインで決済ができるよう導入したいです。

yuichan

総合スコア13

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Bitcoin

Bitcoinは、インターネット上で流通している電子マネーです。P2Pネットワークを通じた安価な決済コストが実現できる一方、取引時の危険性や闇市場・資金洗浄など不正取引の温床といった法的問題も抱えています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

1クリップ

投稿2017/08/22 16:20

編集2017/08/28 00:34

###前提・実現したいこと

coincheckのAPIを使用して自分のECサイトで、ビットコインで決済ができるよう導入したいです。
そのために 支払い用ボタンの生成 を行いたいです。
PHPを使用しています。

coincheck API ドキュメント
https://coincheck.com/ja/documents/payment/api/auth
https://coincheck.com/ja/documents/payment/api/payment-button

ご教授お願い致します。

###発生している問題・エラーメッセージ

返り値を表示すると
string(50) "{"success":false,"error":"invalid authentication"}"
こうなり、認証がうまくできていないのかと思います。

正常だとボタンを表示するhtml等が返ってくるらしいです。

###該当のソースコード

PHP

1 2$strUrl = "https://coincheck.com/api/ec/buttons"; 3$intNonce = time(); 4$strCallbackUrl = "https://www.google.co.jp/"; 5$arrQuery = array("button" => array( 6 "name" => "注文 #123", 7 "currency" => "JPY", 8 "amount" => 5000, 9 "callback_url" => $strCallbackUrl, 10 "max_times" => 1 11)); 12$strAccessSecret = "実際には秘密鍵が入ります"; 13$strMessage = $intNonce . $strUrl . http_build_query($arrQuery); 14 15# hmacで署名 16$strSignature = hash_hmac("sha256", $strMessage, $strAccessSecret); 17 18$headers = array( 19 "ACCESS-KEY:実際にはAPIキーが入ります", 20 "ACCESS-SIGNATURE:" . $strSignature, 21 "ACCESS-NONCE:" . $intNonce 22 ); 23 24$url = "https://coincheck.com/api/ec/buttons"; 25$ch = curl_init(); 26curl_setopt($ch, CURLOPT_URL, $url); 27curl_setopt($ch,CURLOPT_POST, true); 28curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 29 30 31// ヘッダー追加 32curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 33 34// postdata追加 35$post_data = array('button[name]' => "注文 #123" ,'button[currency]'=> "JPY" ,"button[display_currency]"=>"JPY",'button[amount]' => 5000,'button[callback_url]'=> "http://www.example.com/coincheck/callback" ,"button[success_url]"=>"http://google.co.jp/" ,"button[max_times]"=>1 ,"button[include_name]"=>true ,"button[include_email]"=>true,"button[include_address]"=>false,"button[custom]"=>"123","button[notify_mispayment]"=>true); 36curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post_data)); 37 38 39$html = curl_exec($ch); 40var_dump($html); 41 42curl_close($ch);

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tsuemura

2017/08/27 21:55

解決したようでなによりです。ページタイトルを「ありがとうございます」に変更されてしまったようですが、後で同じように困った人が検索でたどり着きやすいように、元に戻しておくことをおすすめします。
guest

回答3

0

ベストアンサー

Coincheckを使ったことがなく、未検証の内容で申し訳ないのですが、恐らくACCESS-SIGNATUREを生成する際に利用するリクエストパラメータと、実際に使用するリクエストパラメータが異なる為だと思います。

https://coincheck.com/ja/documents/payment/api/auth

ACCESS-SIGNATURE は、 ACCESS-NONCE URL リクエストのボディ を全て文字列にし、連結したものを、HMAC-SHA256 hash形式でAPIキーのシークレットキーを使って署名した結果です。

というわけで、下記のように$arrQueryを使い回せば、とりあえず認証は成功するのではないかと思うのですが、どうでしょうか?

php

1// ACCESS-SIGNATUREの生成部分 2$arrQuery = array("button" => array( 3 "name" => "注文 #123", 4 "currency" => "JPY", 5 "amount" => 5000, 6 "callback_url" => $strCallbackUrl, 7 "max_times" => 1 8)); 9$strAccessSecret = "実際には秘密鍵が入ります"; 10$strMessage = $intNonce . $strUrl . http_build_query($arrQuery); 11 12...(中略)... 13 14// postdata追加 15curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($arrQuery)); 16

投稿2017/08/24 11:14

tsuemura

総合スコア663

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ACCESS-SIGNATURE は、 ACCESS-NONCE URL リクエストのボディ を全て文字列にし、連結したものを、HMAC-SHA256 hash形式でAPIキーのシークレットキーを使って署名した結果です。

投稿2017/08/27 16:42

yuichan

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ID等が必要な個別サービスの導入に関してなので、エラー等の確認がやりにくいので回答がつきにくいと思います。

ご利用のサービスで、 お問い合わせページ

導入サポートが必要な場合は別途その旨をご記載の上 以下の「お問い合わせフォーム」からご連絡ください。

とありますので、直接問い合わせをするのが 早く解決できるのではないかと思います。

投稿2017/08/23 00:12

CHERRY

総合スコア25171

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuichan

2017/08/23 01:43

ご回答ありがとうございます。 既に問い合わせをして3週間程度待ったのですが、返答がなく、もう一度問い合わせを送ったのですが何の返答も帰ってこないんですよね・・・ coincheckはプログラム以外の質問なら1日程度すれば帰ってくるのですが、こういった質問は駄目なのかもしれないですね
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問