paypalのエクスプレスチェックアウトを利用した定期支払いの導入

paypalのエクスプレスチェックアウトを利用した定期支払いの導入にはこちらのページが大変参考になった。

上記ページのサンプル

請求金額や請求頻度は、CreateRecurringPaymentsProfile APIで設定する。paypalfunctions.php 内にある次のパラメーターで指定できる。

----------------------------------
//定期支払いの請求開始日
"&PROFILESTARTDATE=".date("Y-m-d",strtotime("now"))."T0:0:0";

//30日ごとに請求
"&BILLINGPERIOD=Day";
"&BILLINGFREQUENCY=30";

//これだと5ヶ月ごとに請求
"&BILLINGPERIOD=Month";
"&BILLINGFREQUENCY=5";

//日本円で1,500円
"&AMT=1,500";
"&CURRENCYCODE=JPY";
----------------------------------

paypalのStart Date should be greater than current dateエラーの対処法

エクスプレスチェックアウトで定期支払いを実装したときに以下のエラーが出た

エラー内容
----------------------------------------------
GetExpressCheckoutDetails API call failed. Detailed Error Message: Subscription start date should be greater than current dateShort Error Message: Start Date should be greater than current dateError Code: 11505Error Severity Code: Error
----------------------------------------------

これは paypalfunctions.php 内の profilestartdate(定期支払いの請求開始日) に過去の日付が入っている場合に出る。現在か未来の時間に書き換えてやればok。

現在の時間を取得して入れる
----------------------------------------------
PROFILESTARTDATE=".date("Y-m-d",strtotime("now"))."T0:0:0";
----------------------------------------------

【paypal】エクスプレスチェックアウトの支払いページの社名を変更する

支払いページの社名をサービス名に変更したときの覚書。

支払いページの社名を変更する方法のひとつとしてlogo画像に置き換えるという手段がある。

[ツール]-[ビジネス設定]-(買い手の手続きを)[カスタマイズする]-会社のロゴの追加の[作成]から、logo画像を指定したページスタイルをメインにするだけ。

しかしこの方法だと、スマホから見た場合にlogo画像は表示されず、以前の社名のまま。スマホにはlogo画像は表示しない仕様ということかな。

他の方法を探してみると、SetExpressCheckout API のパラメーターに情報を追加することで可能らしい。

関連パラメーター
-----------------------------------------------
//logo画像を指定
$nvpstr = $nvpstr . "&LOGOIMG=" . urlencode('http://example.com/paypal_logo_img.gif');

//header画像を指定
$nvpstr = $nvpstr . "&HDRIMG=" . urlencode('http://example.com/header_img.gif');

//ページスタイルを指定
//上の二つはページスタイルを指定して変更される点と同じ。だからページスタイルが設定してあればこの一行でもいいし、設定画面でメインスタイルに指定していればなくてもいい。
//$nvpstr = $nvpstr . "&PAGESTYLE=mystyle";

//これがスマホ支払いページの社名を書き換えるパラメーター
$nvpstr = $nvpstr . "&BRANDNAME=サービス名";
-----------------------------------------------
青文字の部分は環境に合わせる

パラメーターを追記する場所は、paypalfunctions.php 内にある。

paypalfunctions.php の中を抜粋
-----------------------------------------------
function CallShortcutExpressCheckout( $paymentAmount, $currencyCodeType, $paymentType, $returnURL, $cancelURL)
{
//------------------------------------------------------------------------------------------------------------------------------------
// Construct the parameter string that describes the SetExpressCheckout API call in the shortcut implementation

$nvpstr="&PAYMENTREQUEST_0_AMT=". $paymentAmount;
$nvpstr = $nvpstr . "&PAYMENTREQUEST_0_PAYMENTACTION=" . $paymentType;
$nvpstr = $nvpstr . "&RETURNURL=" . $returnURL;
$nvpstr = $nvpstr . "&CANCELURL=" . $cancelURL;
$nvpstr = $nvpstr . "&PAYMENTREQUEST_0_CURRENCYCODE=" . $currencyCodeType;

//ここら辺に追記すれば SetExpressCheckout API にパラメーターが渡る。

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

SetExpressCheckout API で使用できるパラメーター(公式)

パラーメータについて全部でないけど日本語でまとめてあるページ

【paypal】本番環境でだけAPIのエラーが出る

sandbox環境では問題ないのに本番環境だとエラーが出る。

エラー内容
--------------------------------------------
SetExpressCheckout API call failed. Detailed Error Message: Security header is not validShort Error Message: Security errorError Code: 10002Error Severity Code: Error
--------------------------------------------

APIの認証がうまくいっていないらしい。

対処法
paypalfunctions.phpを開いてSandboxFlag を false に書き換える。

書き換え内容
--------------------------------------------
//$SandboxFlag = true; //sandbox用
$SandboxFlag = false; //本番用
--------------------------------------------

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(テスト環境)のトップページからログインする。テストアカウントで通常のログインできないので注意!

2 / 212