バージョン選択

フォーラム

メニュー

オンライン状況

74 人のユーザが現在オンラインです。 (58 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 74
もっと...

サイト内検索

プラグイン > バグ報告・利用に関する質問 > AmazonPayでお届け日が正しく設定されない

バグ報告・利用に関する質問

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
h_tanaka
投稿日時: 2019/7/30 9:50
対応状況: 解決済
仙人
登録日: 2016/7/22
居住地: 愛媛県
投稿: 881
AmazonPayでお届け日が正しく設定されない
EC-CUBE 3.0.16
AmazonPay 1.3.5
お届け日調整プラグイン 1.0.9

AmazonPayで決済するときに、お届け日調整プラグインで設定した都道府県別の発送日数が有効になりません。

これを解決するために、AmazonPayでのお届け先フォーム作成の PRE_SET_DATA に、お届け日調整プラグインのフォーム作成を追記しました。

しかし、AmazonPayの注文内容確認ページにお届け日がうまく反映されません。
本日が7/30で、各都道府県の発送日数が5日なので、お届け日の選択肢が8/4以降になってほしいのですが、7/30以降のままになってしまいます。
ページをリロードすると8/4以降になります。

デバッグを行うことで、お届け日調整プラグインで都道府県ごとの配送日数を取得するときのパラメーターで渡すお届け先の都道府県Prefが空になっていました。

AmazonPayでお届け先フォームを作成する時のShippingsを出力してみたところ、中身が空でした。
app/Plugin/AmazonPayments/Service/AmazonShoppingService.php
dump($Order->getShippings());
        $builder->add('shippings', 'collection', array(
            'type' => 'amazon_shipping_item',
            'data' => $Order->getShippings()
        ));


レンダリングされるときにはお届け先はしっかり表示されているようですが、Controllerで $Order->getShippings() エンティティが取得できないのはなぜでしょうか?
取得する方法をお教え願います。

app/Plugin/AmazonPayments/Form/Type/AmazonShippingItemType.php
        // お届け日調整プラグイン
        $builder
            ->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) use($app) {
                /** @var \Eccube\Entity\Shipping $data */
                $data = $event->getData();
                /** @var \Symfony\Component\Form\Form $form */
                $form = $event->getForm();

                $delivery = $data->getDelivery();

                // お届け日を取得
                $emptyValue = '指定なし';
                $deliveryDates = $app['eccube.deliverydate.service.shopping']->getFormDeliveryDates($data, $delivery);
                if(empty($deliveryDates)){
                    $emptyValue = '指定不可';
                }

                $plgDelivery = $app['eccube.deliverydate.repository.delivery']->findOneBy(array('delivery_id' => $delivery->getId()));
                if($plgDelivery){
                    if($plgDelivery->getDeliveryDateFlg() == 1){
                        $emptyValue = '指定不可';
                        $deliveryDates = array();

                        $form
                            ->add('deliveryTime', 'entity', array(
                                'class' => 'Eccube\Entity\DeliveryTime',
                                'property' => 'deliveryTime',
                                'choices' => array(),
                                'required' => false,
                                'empty_value' => '指定不可',
                                'empty_data' => null,
                            ));
                    }
                }

                $form
                    ->add('shippingDeliveryDate', 'choice', array(
                        'choices' => $deliveryDates,
                        'required' => false,
                        'empty_value' => $emptyValue,
                        'mapped' => false,
                    ));
                });


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

h_tanaka
投稿日時: 2019/7/30 11:53
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: 愛媛県
投稿: 881
Re: AmazonPayでお届け日が正しく設定されない
AmazonPayではお届け先をAmazonから取得しているが、レンダリング前は情報を取得しておらず、都道府県情報が取得できないため各都道府県の発送日数が取得できないようです。
今回は発送日数が全都道府県共通だったため、固定の発送日数でハードコーディングすることで解決できました。

app/Plugin/DeliveryDate/Service/ShoppingService.php
において、Pref の値を固定化。

なお、根本解決するには、レンダリング後にAmazonから都道府県情報を取得するタイミングで、お届け日を変更する必要があると思われます。


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


ec-cube.co

統計情報

総メンバー数は48,244名です
総投稿数は92,885件です

投稿数ランキング

1
seasoft
7332
2
AMUAMU
2712
3
nanasess
1908
4
468
1818
5
yuh
1600
6
red
1333
7
umebius
1296
8
fukap
907
9
h_tanaka
881
10
tsuji
852
11
shutta
835
12 ramrun 789
13
tao_s
758
14 karin 656
15 sumida 641
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
483
20 tonton 436


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.