gmo
画面遷移
1. ショッピングカート
/cart
[購入手続きへ]ボタン
→2へ
2. ご注文内容の確認
/shopping
・代引
[注文する]ボタン
→3へ
・クレカ
[クレジットカード決済へ]ボタン
→4へ
3. 注文完了
/shopping/complete
4. クレジットカード決済
/shopping/gmo_payment
[選択したカードでご注文を確定する]
→3へ
[入力したカード情報でご注文を確定する]
→3へ
上記、4のボタンを押下し、決済実行のレスポンスがOKなら以下の受注情報を更新。
受注情報
受注日
受注ステータス(新規受付)
- -
ShoppingController.php
confirm
processPurchase
setOrderUpdateData
- -
PaymentController.php
mode=next
index
→creditProcess(registCreditProcess(登録クレジットカード)も同じ)
if ('POST' === $this->app['request']->getMethod()) {
if ("next" == $mode) {
return $this->creditCommit($Order, $data);
→creditCommit
$objPageHelper->modeAction($mode, $formData, $Order, $PaymentExtension, $this->app);
if ($objPageHelper->isComplete) {
$orderId = $objPageHelper->orderId;
$order = $this->app['eccube.repository.order']->findOneBy(array('id' => $orderId));
$this->changeOrderData($Order);
→changeOrderData
$Order->setOrderDate(new \DateTime());
$orderService = $this->app['eccube.service.order'];
$orderService->setStockUpdate($em, $Order);
if ($this->isGranted($this->app)) {
// 会員の場合、購入金額を更新
$orderService->setCustomerUpdate($em, $Order, $this->app->user());
}
$em->flush();
$em->getConnection()->commit();
PageHelper_Credit.php
→modeAction
switch ($mode) {
case 'next':
// 決済実行(ここでGMOと通信。レスポンスが取れないときは?)
PG_MULPAY_Client_Credit->doPaymentRequest
// 新規受付
$order_status = $app['config']['order_new'];
$order->setOrderStatus($app['eccube.repository.order_status']->find($order_status));
$app['orm.em']->persist($order);
$app['orm.em']->flush();
// ここで通信エラーの場合(登録クレジットカードのみ)
$cardSeq = $this->registCard($OrderExtension, $listParam, false);
$this->isComplete = true;