paypal での支払い実装いろいろ

paypal での支払い実装方法いろいろ

1.定期購読

定期購読するだけならボタンを作成のみでok。sandbox でも可。

ボタン作成の過程はこちらが分かりやすい。

2.API でエクスプレスチェックアウト

PayPal Integration Wizardから順番に行えばいい。修正すべき点もあるが、こちらを参考にした。
ためしにやるなら参考ページと同じファイル名にすること。ファイル名変えて少しはまった。
IPN についても上記ページを参考に実装できる。

paypalのテスト環境(sandbox)の作り方

paypalでテスト環境を作るには、sandboxと呼ばれる開発用テストツールを利用する

sandboxとは
--------------------------------------
サンドボックスとは、保護された領域内でプログラムを動作させることで、その外へ悪影響が及ぶのを防止するセキュリティモデル。「子供を砂場(サンドボックス)の外で遊ばせない」という言葉が語源だと言われている。
--------------------------------------
引用元 e-Words

1.ビジネスアカウントで Developer ページにログインして、Dashborard(2016年4月現在、画面下部)の Sandbox accounts からテスト用アカウントを作る。
テスト用アカウントの造り方はこちら(公式)

このとき作るアカウントはテスト用のビジネスアカウント(売り手)とテスト用のパーソナルアカウント(買い手)それぞれひとつずつ。計ふたつ。

ここで登録するメールアドレスは存在しないものでいいし、金額(持ち金)も適当に多く設定しておけばいい。あくまでシミュレーションなので実際にお金が動くわけでない。

2.sandboxのトップページからビジネスアカウントでログインして、本番と同じようにページに paypal を仕込んで、パーソナルアカウントで買い物をする。

ログインするアドレスはこちら https://www.sandbox.paypal.com/jp/
sandbox(テスト環境)のトップページからログインする。テストアカウントで通常のログインできないので注意!

【javascript】スマホで縦スクロール禁止

javascript の記述
---------------------------------------
//touchmove の縦スクロールを禁止
document.body.addEventListener( 'touchmove', function(e){
e.preventDefault();
});
---------------------------------------

jQuery の場合
---------------------------------------
// スクロール禁止
$(window).on('touchmove.noScroll', function(e) {
e.preventDefault();
});

// スクロール禁止 解除
$(window).off('.noScroll');
---------------------------------------
※.noScroll は解除するためにつけた名前

参考ページ

http://qiita.com/kokushin/items/ef96194bd0fa7c145d7b

PHPの配列をjavascriptに渡す

PHPの配列をjavascriptに渡す場合は、いったんjson形式に変換するといい。

スクリプト例 ここから
--------------------------------------------------------
<?php

$hairetu = array('りんご', 'もも', 'なし');

//配列をJavaScriptに渡すために一度jsonに変換
$jsonTest=json_encode($hairetu);

?>

<html>
<head>
<title>タイトル</title>
</head>

<body>
<script type="text/javascript">

//JSON.parseを使って配列を受け取る
var test=JSON.parse('<?php echo $jsonTest; ?>');

for (var i = 0; i < test.length; i++) {

alert(test[i]);

}

</script>

</body>
</html>

--------------------------------------------------------
ここまで

参考サイト

http://future-software-labo.anyagent.net/php%E3%81%8B%E3%82%89javascript%E3%81%AB%E9%85%8D%E5%88%97%E3%82%92%E6%B8%A1%E3%81%99/

javascriptファイルが外部ファイルの場合

PHPファイル
--------------------------------------------------------
//カスタムデータ属性にjson形式の配列をセット
<script id="script" src="js/script.js" data-json-test ='<?php echo json_encode($hairetu)?>'></script>
--------------------------------------------------------

javascriptファイル

script.js(外部ファイル)
--------------------------------------------------------
//jQueryを利用してカスタムデータ属性にアクセス
var $script = $('#script');
var test = JSON.parse($script.attr('data-json-test'));
--------------------------------------------------------

参考サイト

http://qiita.com/cither/items/b98cc4e237dcc8f7e51f

http://dresscording.com/blog/html5/custom_data_attribute.html

【PHP】ディレクトリ内のファイル名だけの一覧を取得

<??php
// ディレクトリのパスを記述
$dir = "dragon_ball1";

// ディレクトリの存在を確認し、ハンドルを取得
if(is_dir($dir) && $handle = opendir($dir)) {

// ループ処理
while(($file = readdir($handle)) !== false) {
//$path = $dir . $file;
// ファイルのみ取得
if(filetype($dir . "/" . $file) == "file") {
/********************

各ファイルへの処理

$file ファイル名
$path ファイルのパス

********************/

// ファイル名を出力する
echo $file . "
";

}
}

} else {

echo "ディレクトリがない";

}
?>

参考サイト(このサイトのをほぼそのままコピーした)

http://webkaru.net/php/function-filetype/

【javascript】touchendでうまく座標が取れない件

iOS の safari において touchend で取得した座標を alert で表示するとうまく座標を表示できない事象が発生。

原因不明でバグのような気がするが、次のように対処できる。

------------------------------
alert('座標:' + touchX);
------------------------------

↓↓↓

------------------------------
setTimeout(function(){ alert('座標:' + touchX); }, 0);
------------------------------

参考ページ:

http://gomojp.blog77.fc2.com/blog-entry-144.html

【さくら】php-mecabが突然使用できなくなった件

php-mecab を使用してるページがエラーしか表示されなくなった。

表示されたエラー
---------------------------------------------------
Fatal error: Class 'Mecab' not found in /home/username/www/xxxx.html on line 20
---------------------------------------------------

推測だが、さくらインターネットの PHP のバージョンが勝手に変更されたのが原因だと思う。phpinfo で mecab が表示されない。つまり、php-mecab が認識されていない。

解決用法、mecab および php-mecab を入れ直した。

入れ直し時に注意すること。

・mecab と php-mecab の古いファイルは念のため削除しておく。上書きされるかと思ったがうまくいかなかった。(これがうまくいかない原因だったかは不明)

・php-mecab のインストール時に php のバージョンを指定する箇所があるので新しいバージョンに合わせる。

・さくらにデフォルトインストールの mecab に問題があった場合解決が難しいので、自前の mecab を local 領域にいれて使用したほうが解決しやすい。(今回、デフォルト → 自前 に変更した)

KAGOYAのデータベースプランにターミナルでアクセス

KAGOYA のデータベースプラン(SSD 共有)の DB サーバーにアクセスする方法、覚書。

1.kagoya のサーバーコントロールにログインして、データベースをつくる。そのデータベースのアクセス許可にアクセス元の IPアドレス を登録する。自分の場合はさくら共有サーバーのIPアドレス。

2.ターミナルからさくらサーバーにアクセス。さくらサーバーからさくらの DB にアクセスするように kagoya の DB にアクセスする。

コマンド(さくらサーバーにログイン後)
----------------------------------------------------
% mysql -h mysql*****.kagoya.net -u ユーザーID -p --default-character-set=utf8
----------------------------------------------------

以後、さくらの DB を使っているのと同じように kagoya の DB を使用できる。

さくらでphpのバージョンを更新してもバージョンがあがらない

さくらインターネットの共有サーバーで、サーバーコントロールからphpのバージョンを更新したあと、phpinfo でバージョンを確認してもあがってなかった。

php.cgi を公開フォルダに置いていたので、新しいバージョンをコピーし直したらphpのバージョンはあがった。

【UWSC】gmailでメールを送信する

UWSC でメールを送信するには CDO を利用する。

------------------------------------------------

Dim objEmail = CreateOleObj("CDO.Message")

//内容をセット
objEmail.From = "送信者@gmail.com"
objEmail.To = "あて先アドレス"
objEmail.Subject = "題名"
objEmail.Textbody = "内容"

Schemas = "http://schemas.microsoft.com/cdo/configuration/"
objEmail.Configuration.Fields.Item(Schemas + "sendusing") = 2
objEmail.Configuration.Fields.Item(Schemas + "smtpserver") = "smtp.googlemail.com"

objEmail.Configuration.Fields.Item(Schemas + "smtpserverport") = 465 //ポート番号
objEmail.Configuration.Fields.Item(Schemas + "smtpauthenticate") = True
objEmail.Configuration.Fields.Item(Schemas + "sendusername") = "ID(送信者@gmail.com)"
objEmail.Configuration.Fields.Item(Schemas + "sendpassword") = "メールパスワード(ログイン時と同じもの)"
objEmail.Configuration.Fields.Item(Schemas + "smtpusessl") = True

objEmail.Configuration.Fields.Update

objEmail.Send

------------------------------------------------

メールが届かない場合は、gmail の受信箱をチェック。

gmail1

「ログイン試行をブロックしました」というメールが届いていたら、ブロックを解除する必要がある。google のアカウント情報から「安全性の低いアプリの許可」を有効にすればいい。