この記事の所要時間: 1118

3月くらいにこういう記事書いてました。

Yahoo!ウォレット FastPay サイトがオープンしていました!

この記事の中でサンプルコードを書いて、プラグイン近日開発って書いたのですが、現在出来てません。

ごめんなさーーーい!!!

で、一歩進めてこのようなサンプルを作りました。
※前回のサンプルで基本的なもののダウンロード等準備をしてください。


https://ful.jp/fastpay_1/index.html


※SSL通信です。

このFastPayって開発コードの中、すなわちPHPが受け取るHTTPリクエスト自体にカード番号が入ってきません。
ですので、お客様にとってはより安全です。開発者・・・というか事業者へクレジットカード番号が保持される瞬間も無いわけですから。
※Yahoo!は知ってますよ。

で、前のサンプル(FastPayテスト)見るとわかるのですが、通常決済ボタン自体は「Y!支払う」になってしまいます。
この辺り、このボタンをjqueryで・・・なんとかしてみました。

このような感じで使えると思います。

サンプルコードは下記の通り!!
下記コードを「index.html」として文字コードUTF-8で保存してください。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>クラウドファンディング テスト</title>
</head>
<body>
<form action="post.php" method="POST">

<img src="user_default.gif" style="float: left; margin: 20px;" />寄付をお願いします!<br />
<br />
手間暇かけて開発しております。<br />
コーヒー代をお振り込みいただければ開発が進みます!<br />
どうぞよろしくお願いいたします。<br />
<br />
お支払い手続き後、送信ボタンを押して下さい。<br />
任意の金額をご入力ください:<input type="text" name="amount" value="1500" /><br />

Yahoo!Fastpayで決済を行う場合は下記より支払い処理をお願いします。<br />
<script
    src="https://s.yimg.jp/images/wallet/fastpay/js/fastpay-v1.js" class="fastpay-button"
    data-key="(データキー)">
</script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    $('input:image').attr('src', 'button_kessai.jpg');
});
</script>
</form>

<div style="clear:both; font-weight: bolder;">※これはあくまでもテストです。<br />
クレジットカード番号には 4242424242424242 のテストカードをお使い下さい。
</div>
</body>
</html>

※(データキー)のところには ご自身のFastpay→アカウント画面 https://fastpay.yahoo.co.jp/test/account にて取得した「アプリケーションID」を入れてください。

下記コードは「post.php」として文字コードUTF-8で保存してください。

<?php
require_once(dirname(__FILE__) . "/FastPay.php");

$error_msg = '';
$error_flg = FALSE;
try {
    $token = htmlspecialchars($_POST["fastpayToken"]);
    $price = htmlspecialchars($_POST["amount"]);
    if (is_nan($price)) {
        $error_msg = "不正な文字列を入力されています。";
        $error_flg = TRUE;
    }

    if ( !$error_flg ) {
        FastPay::setSecret("(シークレットキー)");
        $response = FastPay_Charge::create(array(
            "amount" => $price,
            "card" => $token,
            "description" => "テスト",
        ));
        // 決済成功
        $amount = $response->amount;
        $last4 = $response->card->last4;
        $currency = $response->currency;
    }
} catch (Exception $e) {
	// ステータス
	$e_status = $e->http_status;
	// ボディ
	$e_body = $e->http_body;
	// エラー
	$e_error = $e_body->error;
	// タイプ
	$e_type = $e_error->type;
	// コード
	$e_code = $e_error->code;
	// パラメータ
	$e_param = $e_error->param;
	
    // エラー
    echo "HTTP STATUS:".$e_status."<br />";
    
    
    if ( $e_status != "200" ) {
    	$error_flg = TRUE;
    }
    switch ($e_status) {
    
    /**
    200 OK - リクエストは成功しました。
	400 Bad Request - 必要なパラメータがありません。
	401 Unauthorized - API keyの認証に失敗しました。
	402 Request Failed - パラメータは有効でしたが、現在のステータスではこのリクエストは実行できません。
	404 Not Found - リクエストされた内容が存在しません。
	500, 502, 503, 504 Server errors - Yahoo!ウォレット FastPay側のシステムエラーです。
	*/
		case "400" :
			$error_msg = "必要なパラメータがありません。";
			break;
		case "401" :
			$error_msg = "APIキーの認証に失敗しました。";
			break;
    	case "402" : 
    		$error_msg = "支払い処理が完了していません。";
    		break;
    	case "404" :
    		$error_msg = "リクエストされた内容が存在しません。";
    		break;
    	case "500":
    	case "502":
    	case "503":
    	case "504":
    		$error_msg = "Yahoo!ウォレット FastPay側のシステムでエラーになっています。";
    		break;
    		
//    	case "200" :
//    		break;
    }
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>FastPayテスト結果</title>
</head>
<body>
<?php
if ( !$error_flg ) { ?>

#####ここをサンキュー画面にして下さい#####<br />
<br />
決済が完了しました。<br />
決済金額:<?php echo $amount; ?>円<br />
通貨:<?php echo $currency; ?><br />
カード番号(下4桁のみ表示)<br />
************<?php echo $last4; ?>

<!-- ここでサンキュー画面または入力内容確認画面の表示を行う! -->


<?php
} else {
?>
<form action="index.html">
<?php echo $error_msg."<br />".$e_code.":".$e_type;; ?><br />
<input type="submit" value="戻る" />
</form>
<?php
}
?>
</body>
</html>

※(シークレットキー)のところにはFastpayのアカウント画面 https://fastpay.yahoo.co.jp/test/account の「シークレット」のコードを入れてください。

今回はエラー処理もちょっと入れています。
ソース内の指定したところへデザイン等施すことでサンキュー画面になると思います。
確認画面→完了画面への流れはちょっと工夫が必要です。

index.html と post.php としていますが、これをランディングページだとすればランディングページ→即購入という流れになっていると思います。

工夫次第ではこのままご利用可能かと・・・。

※FastPay.php等ライブラリは前回のサンプルの通り適宜ダウンロードしておいてください。
では、もう少し開発してみます。
Fastpayのサンプルでクラウドファンディングにしていますが、ホンモノだったら寄付集まるかな・・・んなこたーないな(笑)

 追記

このサンプルスクリプトを GitHubにアップしました。
↓ 記事を参考にしてみてください!
GitHubにFastPayのテストソース上げてみました

この記事が気に入ったら
いいね ! しよう

Twitter で