PayPalボタンを使わずに、普通のカード決済のように導入する方法

PayPalは特に審査があるわけではないので、簡単にアカウントを作成できますので、零細企業にはとても便利なカード決済システムです。が、ちょっと、システムが複雑っぽく見える&説明ページが分かりにくいので、悩んでる方がたくさんいらっしゃるようです。

PayPalの決済方法は多彩ですが、PayPalのボタンを使わずに、とりあえず普通っぽく簡単につなぐ。手動が入っても良いと言う方法を説明します。

PayPalの決済方法

PayPalの決済方法はいくつかります。決済サービス - PayPalに紹介されてる方法は以下です。

  • PayPal ウェブ ペイメント スタンダード
    • PayPalの支払いボタン
    • 提携のショッピングカート
    • サードパーティショッピングカートへのPayPal の追加 【←これ】
    • インテグレーションカスタマイズ
  • PayPal メール決済
  • 追加の決済手段としての PayPal
    • エクスプレスチェックアウト(高速チェックアウト)
    • スタンダードチェックアウト(標準チェックアウト) 【←これ】

上の二つ、【←これ】は同じ内容です。今回説明するのもこれです。

1. HTMLタグ(必須)

基本はFORMのPOSTです。必須のタグは、以下の7つ。これで日本円でPayPalへつなげます。

invoiceは必須では無いですが、送らないと、後から特定が難しいので必須のようなものです。管理画面の請求書IDで検索できます

このHTMLを書けばOKです。これをどのステップで置くかがちょっと問題ですが、簡単にするなら、一番最後でいいんじゃないでしょうか? どうせ、決済確認は手動になりますので。

2. PayPal アカウント オプション をオンにする

PayPalの管理画面にログインして、「個人設定」の「販売の設定」の「ウェブ ペイメントの設定」を開いて、下の方にある「PayPal アカウント オプション サービス」を「オン」にします。

これをオンにしないと、PayPalの会員では無い(ほとんどの)お客さんが決済できなくなります。PayPal会員は日本では少ないと思うので、これは必須に近い設定です。

これをすると、自動復帰が非会員には無効になります。なので支払いデータ転送(PDT)が実質的に使えなくなります。つまり、オーダー確定処理が自動で出来ないということです。

3. 決済完了の確認は手動です

PayPal アカウント オプションをオンにするのは、ほぼ必須ですので、PDTが使えません。一般的なカード決済会社の場合は、決済完了後はこちらのウェブサイトへ戻ってきますが、PayPalの場合は戻ってきません。PayPalに行ってしまったら、行ったきりでオシマイになります。

お客さんがちゃんとカードを決済してくれて、ちゃんと完了してるかどうかを確認するには、メールを見るか、管理画面から確認してください。メールが来ないこともまれにあるので、管理画面がオススメです。

これで終わりです。決済確認が手動になりますが、これだけで審査なしでカード決済が使えるならある程度我慢しましょう。技術あれば、自動化もできますので、頑張ってください。

【おまけ】 それでもオーダー確定を自動化したい

「簡単」ではないので、おまけです。オーダー確定まで自動化したい場合は、以下の3つの方法があります

  • 支払いデータ転送(PDT)
  • 即時支払い通知(IPN)
  • エクスプレスチェックアウト(高速チェックアウト)

支払いデータ転送(PDT)は、一般的なカード決済会社と同じ方法です。決済完了後、オーダーデータ等をPOSTで受け取れます。ただし、 PayPal アカウント オプションのオフが必要です。つまり、 PayPal会員のみしか決済できません。実際のところ、無理ですね。

即時支払い通知(IPN)は、PayPal アカウント オプションがオンでも使えますが、流れが一旦切れます。バックグラウンドでデータが流れてきますので、お客さんはやっぱりPayPalで行って終わりです。そして、データベースが無いと実質処理できません。POSTやセッションだけでショッピングカートが作られてる場合は、この方法は使えません。

エクスプレスチェックアウト(高速チェックアウト)は、ショッピングカートの途中に組み込むのが基本です。WEBサービスAPIを使って処理します。とてもキレイに処理できますが、それなりの開発レベルを要求します。

【おまけ】 追加のHTML項目

必須ではないですが、お客さんの利便性のために。HTML Variables for Website Payments Standardを参考にデータを送ってあげると便利がと思います。郵便番号だけうまく行きませんが・・・

【おまけ】 マニュアル

今回の説明は、ほとんどPDFに載ってます。PDFマニュアルは、マーチャント向けリソース - PayPalにあります。リンク切れになるかもしれないので、ここからダウンロードしてください。下の2つ、同じ内容です。この辺がちょっと分かりにくい原因かも。

「ウェブ ペイメント スタンダード」の「インテグレーション ガイド 」、か、「追加の決済手段としての PayPal」の「スタンダード チェックアウト インテグレーション ガイド」の「4.複数商品の支払い: ショッピング カート」の「サードパーティショッピングカートへのPayPal の追加」あたりがメインになります。

| | コメント (0) | トラックバック (0)

FTPの転送モード

FTPでホームページを転送する前にやっておかないといけない設定があります。転送モードの設定です。

HTMLファイルだけの転送なら、どっちでもOK。配布されてるCGI プログラムのアップロードなどなら、作者の指示に従えばOK。ですが、自分でプログラムを書く場合、特にローカル(Windows)で作ったデータファイルをアップしてサーバー(UNIX)上のプログラムで使う場合、とても重要になってきます。

バイナリモードとテキスト(アスキー)モード

一般的に転送モードは以下の2種類です。

バイナリモード

何もしません。
そのままファイルを転送します。ローカルとサーバーのファイルサイズはまったく同じになります。

テキスト(アスキー)モード

改行コードを変換して転送します。
WindowsからUNIXのサーバーへ転送した場合、ファイルサイズは小さくなります。

FTPソフトによっては文字コードの変換もしてくれるものもあります。また、Unicode未対応のサーバーにUnicodeのファイルを転送する場合、テキストモード転送が失敗する可能性もあります。

改行コード

テキストモードで転送した場合、改行コードを自動的に変換してくれます。

Windows:Cr+Lf(\r\n)
Unix/Mac:Lf(\n)
昔のMac:Cr(\r)

ウェブサーバーはだいたいUNIXですから、テキストモードでデータファイルを転送した場合、改行コードはLf(\n)になります。改行を<BR>に変換したりする時は、\nを置換しなければいけません。\r\nを対象にするとマッチしないことになります。

バイナリモードで転送するファイル

改行コードが関係ないファイルや、変換したら困るファイルです。

画像ファイル(JPG、GIF、PNGとか)、圧縮ファイル(ZIP、LHZとか)、音楽ファイル(MID、MP3とか)、PDF、Flashなど

HTMLファイルはどちらでもOKです。HTMLファイルは改行コードは関係ありませんので、テキスト/バイナリどちらでもOKです。

テキストモードで転送するファイル

サーバー上で利用されるファイルです。

CGIプログラム(CGI、PL、PHPなど)、設定ファイル(.htaccessなど)などは絶対に。

ログファイルやテキストファイルなどは用途に応じて。プログラムで読み込んで使う時に、改行コードさえ分かっていればどちらでもOKです。一般的には、テキストモードみたいです。

| | コメント (0) | トラックバック (0)

[VBA] 正規表現オブジェクトの使い方

Windows Script Host(VBScrpt)が使える環境なら、VBやVBAからも正規表現を使う事ができます。

ExcelVBAから正規表現が使えると、いろんな事ができるようになってとっても便利です。

正規表現オブジェクトの参照設定

正規表現オブジェクトを使う前に、参照設定でライブラリを追加しときます。

正規表現オブジェクト参照設定VisualBasicEditorのツール(T) - 参照設定(R)を開いて、「Microsoft VBScript Regular Expressions 5.5」を探し出して、チェックしてください。5.5のところは違うかもしれませんが、タブン、大丈夫です。

正規表現オブジェクト群

正規表現オブジェクトの関連オブジェクト/コレクションは以下の4つです。

・RegExp (メインのオブジェクト)
・MatchCollection (マッチしたデータを保持する)
・Match (マッチしたデータ本体)
・SubMatches (マッチしたデータの中から「抜き出し」を指定したデータ

ちょっと複雑そうですが、基本的に他のオブジェクトを使う時と同じです。

正規表現の基本

サブマッチ(SubMatches)は抜き出しを指定しなければ、必要ありませんので、使うのは3つ

正規表現オブジェクトを生成して、マッチパターンを作成します。HTMLのタグにマッチするパターンです。

Set MyRegExp = New VBScript_RegExp_55.RegExp
MyRegExp.Pattern = "<.*>"

で、実行します。実行結果を MyMatches コレクションに格納して、For Each で順番に回してやればOKです。

Set MyMatches = MyRegExp.Execute("テスト<HTML>TESTテスト")
For Each MyMatch In MyMatches
 Debug.Print MyMatch.Value
Next

Excecuteしただけでは、マッチした部分を取得できないので、面倒ですが上のようにしないといけません。

Debug.Print MyRegExp.Execute("テスト<HTML>TESTテスト")

ってのはダメです。

サブマッチ(SubMatches)の使い方

サブマッチは、マッチした部分の中から、さらに指定した部分を抜き出す為に使います。

上の例で言うと、括弧つきの <HTML> 全体じゃなくて、HTML っていう文字だけを抜き出したい、とかいう場合に使います。

いわゆる、タグ付正規表現です。

パターンを作る時に、括弧 ( ) で囲んだところが抜き出されます。

MyRegExp.Pattern = "<([a-z0-9]+).*?>"

サンプルソースコード

ローカルにあるHTMLファイルを読み込んで、HTMLタグ全体とそのタグ名(要素名)だけを抜き出すサンプルです。

実行結果(イミディエイトウィンドウ)

| | コメント (0) | トラックバック (0)

[Access] ADOXテンプレート

Accessでテーブルの一覧を取得したり、新しいクエリを作ったりするにはADOX(ActiveX Data Objects Extensions for Data Definition Language and Security)が必要です。

ADOXなら、新しいデータベースを作成する事も可能になります。

ADOXの参照設定

ADOXを使う前に、参照設定でライブラリを追加しときます。

ADOX参照設定VisualBasicEditorのツール(T) - 参照設定(R)を開いて、「Microsoft ADO Ext 2.5 DLL And Security」を探し出して、チェックしてください。タブン、真ん中あたりにあります。2.5とかの数字は、Officeのバージョンで違ってますので気にしない。

サンプルソースコード

Accessのテーブル一覧(システムが使ってるのは除いて)を表示するサンプルです。

実行結果(イミディエイトウィンドウ)

| | コメント (0) | トラックバック (0)

[Access] ADOテンプレート(SQL実行)

AccessのVBAで、ADOを使ってSQLを実行する方法です。

テーブルの全データを削除する時とか、SQLでDELETE文作ってする方が、全然早く消せます。

サンプルソースコード

「T_作業テーブル」というテーブルの全てのレコードを削除するサンプルです。

| | コメント (0) | トラックバック (0)

[Access] ADOテンプレート

Accessでテーブルやクエリを直接扱う時は、ADO(ActiveX Data Object)を使う事になってます。昔はDAOだったんですが、Access 2000くらい?からADOが標準になったようです。

カーソルタイプ

テーブルやクエリを開く(Openメソッドの実行)時に、カーソルタイプとロック方法の指定があります。

カーソルタイプですが、

adOpenForwardOnly (前方専用)
adOpenStatic (静的)
adOpenKeyset (キーセット)
adOpenDynamic (動的)

の4つ。下に行くほど遅くなるはずです。スタンドアロン(パソコン1台だけで使う時)なら、下の2つ(キーセットと動的)はあんま意味ないんで、普通は adOpenStatic で。最初から順番に1回だけテーブルとかを読んでいくだけなら、adOpenForwardOnly。でも、adOpenForwardOnly の場合、.RecordCount でレコードの数が取れません。

ロックタイプは、adLockOptimistic にしとけばいいと思います。更新しないなら、adLockReadOnly。

サンプルソースコード

ADO関数の使い方テンプレート。

| | コメント (0) | トラックバック (0)

[VBA] 動的配列 テンプレート

動的配列は、使用する配列の個数(=次元の添字)が分からない時に使うと便利です。使う時に、使う分だけ宣言しなおします。

Dim、ReDim

動的配列の宣言は、普通の変数宣言で空の括弧()をつけるだけです。

使う時になったら、ReDimで使用する配列の個数を指定します。Preserve を付けるとすでに格納されている値は保持したまま個数を増減させれます。

Dim sData() As String

ReDim Preserve sData(10)

サンプルソースコード

動的配列の使い方テンプレート。
今月の今日までの日付を整形して出力します。

実行結果(イミディエイトウィンドウ)

| | コメント (0) | トラックバック (0)

VP6(VP6.2) Video Codec のダウンロード

MPEG-2の半分のビットレートでも、綺麗に見えると評判の VP6 Video Codec。開発元の、On2 Technologiesよりダウンロードリンクが復活してます。

VP6 Video Codec ダウンロード

On2 Technologiesのサイトを開いて、「DOWNLOADS」へマウスをポイント。「Free VP6 Decorder for windows」をクリック。

On2 Technologies(VP6 Decoder)

ソフトウェア使用ライセンスを読んで、同意するなら、一番下の「YES, I AGREE」をクリック。保存場所を指定します。

VP6.2 Video Codec のダウンロード

VP6 Video Codec インストール

ダウンロードしたファイルを実行するだけです。後はウィザードで進みます。

もっと詳しい説明は、VP6 コーデック(VP60 VP61 VP62) インストール ガイドを参考にして下さい。

| | コメント (0) | トラックバック (0)

[エクセル] 「値の貼り付け」をショートカットキーで実行する

エクセルでショートカットキーの割り当てを変更する方法を使えば、「値の貼り付け」にショートカットキーを設定できそうです。

できそう・・・ですが、標準のままでは設定できません。「値の貼り付け」コマンドが、メニューバーのどこにもないからです。

メニューバーに「値の貼り付け」を追加

  1. ツールバーのどこでもいいので右クリック、「ユーザー設定(C)」をクリックして設定画面を開きます。
  2. コマンド(C)タブをアクティブにして、分類(G)から「編集」を探します。
  3. 右側のコマンド(D)から「値の貼り付け」を探します。
  4. そのままの状態で、メニューバーの「編集(E)」をクリックして開きます。固定されて閉じません。
  5. さっき探した「値の貼り付け」をドラッグアンドドロップして、「形式を選択して貼り付け(S)」の下にでも移動します。

「値の貼り付け」のD&D

  1. 編集(E)メニューに追加した「値の貼り付け(P)」を右クリックして、名前を変更。「値の貼り付け(&V)」にします。

「値の貼り付け」の名前変更

サンプルソースコード

あとは同じです。[Ctrl] + [B] で、「値の貼り付け」をできるようにします。

画面のちらつきを抑える

以下は、気にしなければ別にかまいません。

SendKeys でやってる以上、画面がちらつく(特に高負荷状態の時)のは抑えようがありません。

ただ、「値の貼り付け」コマンドの場合、ある条件が重なるとほぼ100%画面にゴミが一瞬、残ります。

ある条件ってのは、「値の貼り付け」が使えない時。クリップボードにHTMLが入ってたり、単純なテキストしか入ってない場合、「値の貼り付け」は使えません。使えないのに実行しようとするから、ゴミが出ます。

CommandBarControl

「値の貼り付け」が使えない時には、コマンドを実行しないようにすれば、回避できます。

「値の貼り付け」が使えるかどうか調べるには、CommandBarControl で 「値の貼り付け」コマンドの .Enabled プロパティを見れば分かります。使えない時は、SendKey する前に抜ければOKです。

サンプルソースコード

[Ctrl] + [B] で、「値の貼り付け」をできるようにします。ちらつき回避版。

| | コメント (2) | トラックバック (2)

[エクセル] ショートカットキーの割り当てを変更する

エクセルのキーボードショートカットの変更(ショートカットキーのユーザー設定)、需要はあると思うんですが、Microsoftは搭載する気はないんでしょうか?

ちょっと大変ですが、ショットカットキーをユーザーが自由に設定する方法が2つあります。

「値の貼り付け」をショートカットキーで実行する方法も参考にしてください。

[Alt] + ? 限定

[Alt] + [P] など、[Alt] キー のみしか使えませんが、割と簡単に設定できる方法です。

【裏技】あたいの磔!

1.ツール-ユーザー設定-コマンドタブから分類:編集 コマンド:値の貼りつけをツールバーにドラッグアンドドロップ

2.1のコマンドタブの[選択したボタンの編集]から[テキストのみを表示]をクリック

ツールバーにあるボタンであれば、アイコン表示をやめて、テキスト表示にする事で ( ) 内の文字がショートカットキーになります。

新規作成なら、[Alt] + [N]。上書き保存なら、[Alt] + [S]

Application.OnKey

柔軟な設定がしたい場合は、VBA を使って、Application.OnKey メソッドを実行します。

Application.OnKey(Key, Procedure)

Key:キーの組み合わせ
Procedure:実行する関数

ただし、Application.OnKey メソッドは、指定されたキーを押された時に、指定されたプロシージャー(関数)を実行するコマンドです。あらかじめ、希望のショートカットキーと同じ動作をする関数を作っておく必要があります。

Application.OnKey メソッドは、個人用マクロブック personal.xls の中に Auto_Open 関数を作成し、その中においてください。

もっと詳しい説明は、personal.xls 強化講座 その2 を参考に。

サンプルソースコード

[INSERT]キーで、行の挿入ができるようにします。VBAコードに貼りつけた後、一度エクセルを再起動してください。

Application.SendKeys

上のやり方でとりあえずOKです。ただし、この方法だと、[Ctrl] + [Z] (「編集(E)」 - 「元に戻す(U)」)が使えません。

VBAマクロで実行した作業は、エクセルの「元に戻す」コマンドが利用できません。上の方法はVBAで実行してますので、たった1行の命令でも、元に戻す事ができなくなります。

「元に戻す」を利用する為には、エクセルに対して人間が操作してるように見せかけないといけませんので、キーの組み合わせで制御するようにします。

Application.SendKeys(Keys, Wait)

Key:エクセルへ送るキー
Wait:同期/非同期。省略可。

「行の挿入」は、コマンドメニューの「挿入() - 行(R)」にあります。VBAコードだと、下のようになります。

Application.SendKeys "%ir"

コマンドメニューにあるコマンドはほぼ全部キーボードで操作できるので、この方法はかなり有効だと思います。

ただ、画面がちらつく事があります。仕方ないので、諦めてください。

サンプルソースコード

[INSERT]キーで、行の挿入ができ、「元に戻す」も使えるようにします。

| | コメント (0) | トラックバック (0)

より以前の記事一覧