顧客が次のURLに返された場合(例)。注文完了の返品方法は正しいですか?
支払いが成功した後、このFrontControllerサブクラスを呼び出します。
class ChippinCallbackModuleFrontController extends ModuleFrontController
{
public function postProcess()
{
$chippin = new Chippin();
$payment_response = new PaymentResponse();
$payment_response->getPostData();
// if a valid response from gateway
if(ChippinValidator::isValidHmac($payment_response)) {
// "action" is passed as a param in the URL. don't worry, the Hmac can tell if it's valid or not.
if ($payment_response->getAction() === "completed") {
// payment_response->getMerchantOrderId() will just return the id_order from the orders table
$order_id = Order::getOrderByCartId((int) ($payment_response->getMerchantOrderId()));
$order = new Order($order_id);
// this will update the order status for the benefit of the merchant.
$order->setCurrentState(Configuration::get('CP_OS_PAYMENT_COMPLETED'));
// assign variables to smarty (copied this from another gateway, don't really understand smarty)
$this->context->smarty->assign(
array(
'order' => $order->reference,
)
);
// display this template
$this->setTemplate('confirmation.tpl');
私はPrestashopにはかなり新しいです。これが技術的に行われているかどうかは分かりません。 confirmation.tlp
ビューはorder->reference
と表示され、注文ステータスは「完了」に更新されますが、これはすべて必要なのですか?
その他の考慮事項はありますか?この時点でhookDisplayPaymentReturnを呼び出す機会がありますが、どうしてですか?
私はかなり標準的なリターンページを持っているようです。これで十分ですか?
アップデート - 私はちょうどのようなフック何かを呼んでください。
public function displayPaymentReturn()
{
$params = $this->displayHook();
if ($params && is_array($params)) {
return Hook::exec('displayPaymentReturn', $params, (int) $this->module->id);
}
return false;
}
代わりに、直接 'confirmation.tpl'ページを呼び出すので、私はそれを行う必要がありますので、どのようなフック?または空のフックメソッドを持っていますか? - 私の更新を参照してください – mikelovelyuk
確認テンプレートを表示するためのショートカットを使用しています。実際には、プロセスを行う注文確認コントローラにリダイレクトする必要があります。そしてあなたのモジュールで 'displayPaymentReturn'や' displayOrderConfirmation'をフックすることができます。私の編集を参照してください –
'bankwire'モジュールを見てください(これはデフォルトのPrestashopモジュールです)。理解するのは本当にシンプルなモジュールです。 –