お客様が使用するお支払い方法に応じて、注文後にいくつかの異なる処理を実行しようとしています。
私のEventSubscriberには、次のコードがあります。
_ public static function getSubscribedEvents() {
$events = [
'commerce_order.place.post_transition' => 'onPlaceTransition'
];
return $events;
}
public function onPlaceTransition(WorkflowTransitionEvent $event) {
$order = $event->getEntity();
_
次に、注文から使用された支払い方法の名前またはIDを取得したいのですが、kint($order)
を使用したときに、支払い方法にアクセスする方法が見つかりませんでした。
_$order
_オブジェクトを指定して支払い方法にアクセスするにはどうすればよいですか?
Commerce Paymentモジュールは、有効にするとpayment_method
基本フィールドを追加します。commerce_payment_entity_base_field_info
を参照してください https://github.com/drupalcommerce/commerce/blob/8.x-2.x/ modules/payment/commerce_payment.module#L28
を介して支払い方法(およびゲートウェイ)にアクセスできます。
$order->get('payment_method')->first()->entity
$order->get('payment_gateway')->first()->entity
受注メールのお支払い方法ラベルを取得した例.
if (!$order->get('payment_method')->isEmpty()) {
$variables['payment_method'] = [
'#markup' => $order->get('payment_method')->first()->entity->label(),
];
}