@Override
    public ActionForward execute(final ActionMapping mapping, final ActionForm form, final HttpServletRequest request,
            final HttpServletResponse response) {
        log.info("メッセージ送信処理開始");
        PaymentForm commForm = (PaymentForm)form;

        // 商品情報は未入力でも送信可能
        // if (commForm == null || commForm.getCommodityName() == null) {
        if (commForm == null || StringUtil.isNullStr(commForm.getAmount())) {
            log.info("Formがnullのためやり直し");
            ActionMessages errors = new ActionMessages();
            errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("error.formget"));
            saveErrors(request, errors);
            return mapping.findForward("retry");
        }

        HttpSession session = request.getSession(true);
        // 取引IDは処理日時をベースにダミーで作成。
        String orderId = MDKUtils.createDummyOrderId();
        String sessionId = session.getId();
        try {
            addInfomation(commForm);
            CommodityDetail[] commodityDetails = createCommodityDetails(commForm);

            EncryptionKey encryptionKey = null;
            // リクエストの送信とマーチャント暗号鍵の格納
            encryptionKey = send(sessionId, orderId, commForm, commodityDetails);

            if (encryptionKey == null) {
                log.info("鍵の取得に失敗");
                ActionMessages errors = new ActionMessages();
                errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("error.webservice"));
                saveErrors(request, errors);
                return mapping.findForward("retry");
            } else {
                if (!StringUtil.isNullStr(encryptionKey.getErrorMessage())) {
                    log.info("エラーあり:" + encryptionKey.getErrorMessage());
                    ActionMessages errors = new ActionMessages();
                    ActionMessage aMessage = new ActionMessage("error.airweb", encryptionKey.getErrorMessage());
                    errors.add(ActionMessages.GLOBAL_MESSAGE, aMessage);
                    saveErrors(request, errors);
                    return mapping.findForward("retry");
                } else if (encryptionKey.getBrowserEncryptionKey() == null) {
                    // エラーメッセージが無く、ブラウザ暗号鍵も無い
                    log.info("鍵の取得に失敗");
                    ActionMessages errors = new ActionMessages();
                    errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("error.webservice"));
                    saveErrors(request, errors);
                    return mapping.findForward("retry");
                }
            }

            MerchantConf info = MerchantConf.getInfo();
            request.setAttribute("ORDER_ID", orderId);
            request.setAttribute("MERCHANT_ID", info.getMerchantId());
            request.setAttribute("SETTLEMENT_KEY1A", encryptionKey.getBrowserEncryptionKey());
        } catch (Throwable th) {
            log.error("例外をキャッチしました", th);
            return mapping.findForward("retry");
        }

        return mapping.findForward("confirm");
    }