バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

プラグイン > 開発について > 自作の決済プラグインで2度同じ支払い方法を選択するとエラーとなる。

開発について

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
benio_goto
投稿日時: 2021/1/29 13:52
対応状況: 解決済
新米
登録日: 2021/1/29
居住地:
投稿: 2
自作の決済プラグインで2度同じ支払い方法を選択するとエラーとなる。
[EC-CUBE] EC-CUBE4.0.5、新規インストール
[レンタルサーバ] Xserver
[OS] Linux
[PHP] PHP7.3
[データベース] MySQL
[WEBサーバ] Apache
[ブラウザ] FireFox85.0
[導入プラグインの有無] KOMOJU Payment for EC-CUBE4
[カスタマイズの有無] あればカスタマイズ内容を記載(できるだけ具体的に)
[現象] 支払方法で2度同じ支払い方法を選択するとエラーとなる。「Expected argument of type "Plugin\KomojuPayment4\Entity\SpType", "null" given.」

具体的には支払い方法にスマホ決済、スマホ決済の種類LINEPAYを選んだ後に、コンビニ決済、コンビニの種類ファミリーマートを選んだ後に、再度スマホ決済を選択。

sample-payment-pluginをベースに自作したプラグインで、
FormExtensionでの考慮不足と考えています。解決方法をアドバイス頂ければと思います。
*-*-SpExtension-*-*
public function buildForm(FormBuilderInterface $builder, array $options)
{
// ShoppingController::checkoutから呼ばれる場合は, フォーム項目の定義をスキップする.
if ($options['skip_add_form']) {
return;
}

$builder->addEventListener(FormEvents::POST_SET_DATA, function (FormEvent $event) {
/** @var Order $data */
$data = $event->getData();
$form = $event->getForm();

$form->add('KomojuPaymentSpType', EntityType::class, [
'class' => SpType::class,
'query_builder' => function (EntityRepository $er) {
return $er->createQueryBuilder('p')
->where('p.flag = 1')
->orderBy('p.id', 'ASC');
},
'choice_label' => 'name',
'multiple' => false,
'expanded' => true,
'mapped' => true,
'choice_value' => 'store_name',
]);
});
$builder->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event) {
// サンプル決済では使用しないが、支払い方法に応じて処理を行う場合は
// $event->getData()ではなく、$event->getForm()->getData()でOrderエンティティを取得できる

/** @var Order $Order */
$Order = $event->getForm()->getData();
$Order->getPayment()->getId();

$Payment = $this->paymentRepository->findOneBy(['method_class' => Sp::class]);
});
}

/**
* {@inheritdoc}
*/
public function getExtendedType()
{
return OrderType::class;
}
}
*-*-*-*-*-*-*-*-*-*


*-*-*-*2021/02/19追記*-*-*-*
自己解決しました。
~.twigの不備が主要因みたいでした。
{#
Shopping/index.twigに以下のスニペットを追記
{{ include('@KomojuPayment4/sp.twig', ignore_missing=true) }}
#}
{% if Order.Payment.getMethodClass == 'Plugin\\KomojuPayment4\\Service\\Method\\Sp' %}



{% else %}
{{ form_widget(form.Komoju_payment_token, { type: 'hidden' }) }} → {{ form_widget(form.KomojuPaymentSpType, { type: 'hidden' }) }}
{% endif %}
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBEペイメント

公式ストアEC-CUBE4系デザインテンプレート続々リリース中

統計情報

総メンバー数は72,335名です
総投稿数は101,703件です

投稿数ランキング

1
seasoft
7333
2
468
3037
3
AMUAMU
2712
4
nanasess
2157
5
umebius
2011
6
yuh
1612
7
red
1452
8
h_tanaka
1088
9
tsuji
936
10
fukap
907
11
shutta
835
12
tao_s
793
13 ramrun 789
14 karin 689
15 sumida 641
16
homan
633
17 DELIGHT 572
18
patapata
502
19
flealog
485
20 tonton 437


ネットショップの壺

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

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