Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

本体カスタマイズに PaymentMethodInterface の拡張の記載を追加 #165

Open
okazy opened this issue Jan 7, 2021 · 2 comments
Labels
Customize カスタマイズ向け情報 improvement 改善
Milestone

Comments

@okazy
Copy link
Contributor

okazy commented Jan 7, 2021

PaymentMethodInterface の拡張

各決済ごとに PaymentMethodInterface を実装することで決済に独自の処理を追加できます。また、 PaymentMethodInterface の実装クラスは PurchaseFlow を使用して購入処理中の受注データを確定させる必要があります。

verify()

注文手続き画面でsubmitされた時に実行する処理を実装します。
主に、クレジットカード決済の有効性チェックをするために使用します。
このメソッドは、 PaymentResult を返します。
PaymentResult には、実行結果、エラーメッセージなどを設定します。
Response を設定して、他の画面にリダイレクトしたり、独自の出力を実装することも可能です。

apply()

注文確認画面でsubmitされた時に、他の Controller へ処理を移譲する実装をします。
主にリンク型決済や、キャリア決済など、決済会社の画面へ遷移する必要がある場合に使用します。
また、独自に作成した Controller に遷移する場合にも使用できます。
このメソッドは PaymentDispatcher を返します。
PaymentDispatcher は、他の Controller へ Redirect もしくは Forward させるための情報を設定します。
決済会社の画面など、サイト外へ遷移させる場合は、 Response を設定します。

このメソッドでは購入処理中の受注データを仮確定させるために PurchaseFlow#prepare() を実行します。仮確定してサイト外へ遷移した後に、遷移先でユーザが決済をキャンセルした場合は、仮確定を取り消す必要があります。仮確定の取り消しには、まずサイト外から決済をキャンセルして戻ってくるためのControllerを用意しておきます。このControllerの処理の中で PurchaseFlow#rollback() を実行します。仮確定取消後は注文手続き画面に遷移させるようにします。

サイト外へ遷移後、ユーザが決済処理を完了したときは、決済手続き完了用のControllerに遷移させます。このタイミングで購入処理中の受注を確定できる場合は PurchaseFlow#commit() を実行します。この遷移タイミングではなく、決済サーバからの完了通知を受けて購入処理を確定する場合は、完了通知用のControllerを実装し PurchaseFlow#commit() を実行するようにします。

checkout()

注文確認画面でsubmitされた時に決済完了処理を記載します。
このメソッドは、 PaymentResult を返します。
PaymentResult には、実行結果、エラーメッセージなどを設定します。
3Dセキュア決済の場合は、 Response を設定して、独自の出力を実装することも可能です。

決済処理をこのメソッドで完了できる場合は、PurchaseFlow#commit() を実行して購入処理中の受注データを確定します。3Dセキュア決済などで他サイトへの遷移が必要な場合は、他サイトでの処理を完了して呼び戻されるControllerの中で PurchaseFlow#commit() を実行します。他サイトでの処理がキャンセルされたときは PurchaseFlow#rollback() を呼び出す必要があります。

@okazy okazy added the Customize カスタマイズ向け情報 label Jan 7, 2021
@okazy okazy added this to the 4.0 milestone Jan 7, 2021
@okazy
Copy link
Contributor Author

okazy commented Jan 7, 2021

こちらの内容も追加したい
EC-CUBE/sample-payment-plugin#11

@okazy okazy added the improvement 改善 label Feb 24, 2021
@ji-eunsoo
Copy link
Contributor

@okazy
ありがとうございます。

@皆様
PRいただけると嬉しいです。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Customize カスタマイズ向け情報 improvement 改善
Projects
None yet
Development

No branches or pull requests

2 participants