エクスプレスチェックアウトを使用して支払いを処理するアプリケーションがあります。
SetExpressCheckoutを呼び出した後(そしてユーザーにペイパルのページで詳細を入力してもらう)、実際にDoExpressCheckoutPaymentでトランザクションを完了する前に、トランザクションをキャンセルする方法が必要です。
ペイパルのドキュメントでそれを行う正しい方法を見つけることができません。タイムアウトさせるだけですか、それともAPI呼び出しを行う必要がありますか?
エクスプレスチェックアウトを使用して支払いを処理するアプリケーションがあります。
SetExpressCheckoutを呼び出した後(そしてユーザーにペイパルのページで詳細を入力してもらう)、実際にDoExpressCheckoutPaymentでトランザクションを完了する前に、トランザクションをキャンセルする方法が必要です。
ペイパルのドキュメントでそれを行う正しい方法を見つけることができません。タイムアウトさせるだけですか、それともAPI呼び出しを行う必要がありますか?
タイムアウトさせます。DoExpressCheckoutPaymentをまだ呼び出していない場合、アクションはまだ実行されていません。
トークンは3時間後に自動的に期限切れになります。
技術的には、トークンREQUESTを空にし、再ハッシュSESSIONの設定を解除して、リスクなしで期限切れにすることができます(APIサンプルに付属しているのと同じ名前の変数を使用していると仮定します。使用している言語は何ですか?さらに例を示します。
PHPでは、次のようにします。
// empty token
$_REQUEST['token'] = NULL;
//unset reshash session
$_SESSION['reshash'] = NULL;
unset($_SESSION['reshash']);
ここで、理想的には、ユーザーをキャンセルページにリダイレクトする必要があります。
header( 'Location: http://www.example.com/transactionCancelled.html' )
それ以外の場合、ユーザーが「ReviewOrder」フェーズにあるかどうかに応じて、ユーザーは自動的にペイパルにリダイレクトされ、新しいトランザクションを開始します。