2017-10-12 120 views

回答

0

使用依賴注入(DI)

這裏已經使用的方法是,你需要在你的格擋類寫的代碼。

/** 
* Order Payment 
* 
* @var \Magento\Sales\Model\ResourceModel\Order\Payment\Collection 
*/ 
protected $_orderPayment; 

/** 
* Payment Helper Data 
* 
* @var \Magento\Payment\Helper\Data 
*/ 
protected $_paymentHelper; 

/** 
* Payment Model Config 
* 
* @var \Magento\Payment\Model\Config 
*/ 
protected $_paymentConfig; 

/** 
* @param \Magento\Backend\Block\Template\Context $context 
* @param \Magento\Sales\Model\ResourceModel\Order\Payment\Collection $orderPayment 
* @param \Magento\Payment\Helper\Data $paymentHelper 
* @param \Magento\Payment\Model\Config $paymentConfig 
* @param array $data 
*/ 
public function __construct(
    \Magento\Backend\Block\Template\Context $context, 
    \Magento\Sales\Model\ResourceModel\Order\Payment\Collection $orderPayment, 
    \Magento\Payment\Helper\Data $paymentHelper, 
    \Magento\Payment\Model\Config $paymentConfig, 
    array $data = [] 
) { 
    $this->_orderPayment = $orderPayment; 
    $this->_paymentHelper = $paymentHelper; 
    $this->_paymentConfig = $paymentConfig; 
    parent::__construct($context, $data); 
} 

/** 
* Get all payment methods 
* 
* @return array 
*/ 
public function getAllPaymentMethods() 
{ 
    return $this->_paymentHelper->getPaymentMethods(); 
} 

/** 
* Get key-value pair of all payment methods 
* key = method code & value = method name 
* 
* @return array 
*/ 
public function getAllPaymentMethodsList() 
{ 
    return $this->_paymentHelper->getPaymentMethodList(); 
} 

/** 
* Get active/enabled payment methods 
* 
* @return array 
*/ 
public function getActivePaymentMethods() 
{ 
    return $this->_paymentConfig->getActiveMethods(); 
} 

/** 
* Get payment methods that have been used for orders 
* 
* @return array 
*/ 
public function getUsedPaymentMethods() 
{ 
    $collection = $this->_orderPayment; 
    $collection->getSelect()->group('method'); 
    $paymentMethods[] = array('value' => '', 'label' => 'Any'); 
    foreach ($collection as $col) { 
     $paymentMethods[] = array('value' => $col->getMethod(), 'label' => $col->getAdditionalInformation()['method_title']);    
    }   
    return $paymentMethods; 
} 

使用對象管理器getUsedPaymentMethods的)

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();   

$paymentHelper = $objectManager->get('Magento\Payment\Helper\Data'); 
$allPaymentMethods = $paymentHelper->getPaymentMethods(); 
$allPaymentMethodsArray = $paymentHelper->getPaymentMethodList(); 

var_dump($allPaymentMethodsArray); 
var_dump($allPaymentMethods); 

$paymentConfig = $objectManager->get('Magento\Payment\Model\Config'); 
$activePaymentMethods = $paymentConfig->getActiveMethods(); 

var_dump(array_keys($activePaymentMethods)); 

$orderPaymentCollection = $objectManager->get('\Magento\Sales\Model\ResourceModel\Order\Payment\Collection'); 
$orderPaymentCollection->getSelect()->group('method'); 
$paymentMethods[] = array('value' => '', 'label' => 'Any'); 
foreach ($orderPaymentCollection as $col) { 
    $paymentMethods[] = array('value' => $col->getMethod(), 'label' => $col->getAdditionalInformation()['method_title']);    
}   

var_dump($paymentMethods); 

樣本輸出(:getAllPaymentMethodsList的

Array 
(
    [0] => Array 
     (
      [value] => 
      [label] => Any 
     ) 

    [1] => Array 
     (
      [value] => cashondelivery 
      [label] => Cash On Delivery 
     ) 

    [2] => Array 
     (
      [value] => checkmo 
      [label] => Check/Money order 
     ) 

) 

樣本輸出():

Array 
(
    [vault] => 
    [substitution] => 
    [banktransfer] => Bank Transfer Payment 
    [cashondelivery] => Cash On Delivery 
    [checkmo] => Check/Money order 
    [payflowpro] => Credit Card 
    [payflow_link] => Credit Card 
    [payflow_advanced] => Credit Card 
    [braintree] => Credit Card (Braintree) 
    [authorizenet_directpost] => Credit Card Direct Post (Authorize.net) 
    [free] => No Payment Information Required 
    [braintree_paypal] => PayPal (Braintree) 
    [paypal_billing_agreement] => PayPal Billing Agreement 
    [payflow_express_bml] => PayPal Credit 
    [paypal_express_bml] => PayPal Credit 
    [paypal_express] => PayPal Express Checkout 
    [payflow_express] => PayPal Express Checkout Payflow Edition 
    [hosted_pro] => Payment by cards or by PayPal account 
    [purchaseorder] => Purchase Order 
    [braintree_cc_vault] => Stored Cards (Braintree) 
    [payflowpro_cc_vault] => Stored Cards (Payflow Pro) 
) 

getAllPaymentMethods()的輸出樣本:

Array 
(
    [free] => Array 
     (
      [active] => 1 
      [model] => Magento\Payment\Model\Method\Free 
      [order_status] => pending 
      [title] => No Payment Information Required 
      [allowspecific] => 0 
      [sort_order] => 1 
      [group] => offline 
     ) 

    [substitution] => Array 
     (
      [active] => 0 
      [model] => Magento\Payment\Model\Method\Substitution 
      [allowspecific] => 0 
     ) 

    [vault] => Array 
     (
      [debug] => 1 
      [model] => Magento\Vault\Model\VaultPaymentInterface 
     ) 

    [checkmo] => Array 
     (
      [active] => 1 
      [model] => Magento\OfflinePayments\Model\Checkmo 
      [order_status] => pending 
      [title] => Check/Money order 
      [allowspecific] => 0 
      [group] => offline 
     ) 

    [purchaseorder] => Array 
     (
      [active] => 0 
      [model] => Magento\OfflinePayments\Model\Purchaseorder 
      [order_status] => pending 
      [title] => Purchase Order 
      [allowspecific] => 0 
      [group] => offline 
     ) 

    [banktransfer] => Array 
     (
      [active] => 0 
      [model] => Magento\OfflinePayments\Model\Banktransfer 
      [order_status] => pending 
      [title] => Bank Transfer Payment 
      [allowspecific] => 0 
      [group] => offline 
     ) 

    [cashondelivery] => Array 
     (
      [active] => 0 
      [model] => Magento\OfflinePayments\Model\Cashondelivery 
      [order_status] => pending 
      [title] => Cash On Delivery 
      [allowspecific] => 0 
      [group] => offline 
     ) 

    [paypal_express] => Array 
     (
      [model] => Magento\Paypal\Model\Express 
      [title] => PayPal Express Checkout 
      [payment_action] => Authorization 
      [solution_type] => Mark 
      [line_items_enabled] => 1 
      [visible_on_cart] => 1 
      [visible_on_product] => 1 
      [allow_ba_signup] => never 
      [group] => paypal 
      [authorization_honor_period] => 3 
      [order_valid_period] => 29 
      [child_authorization_number] => 1 
      [verify_peer] => 1 
      [skip_order_review_step] => 1 
     ) 

    [paypal_express_bml] => Array 
     (
      [model] => Magento\Paypal\Model\Bml 
      [title] => PayPal Credit 
      [group] => paypal 
     ) 

    [payflow_express] => Array 
     (
      [title] => PayPal Express Checkout Payflow Edition 
      [payment_action] => Authorization 
      [line_items_enabled] => 1 
      [visible_on_cart] => 1 
      [visible_on_product] => 1 
      [group] => paypal 
      [verify_peer] => 1 
      [model] => Magento\Paypal\Model\PayflowExpress 
     ) 

    [payflow_express_bml] => Array 
     (
      [model] => Magento\Paypal\Model\Payflow\Bml 
      [title] => PayPal Credit 
      [group] => paypal 
     ) 

    [payflowpro] => Array 
     (
      [model] => Magento\Paypal\Model\Payflow\Transparent 
      [title] => Credit Card 
      [payment_action] => Authorization 
      [cctypes] => AE,VI 
      [useccv] => 1 
      [tender] => C 
      [verbosity] => MEDIUM 
      [user] => 
      [pwd] => 
      [group] => paypal 
      [verify_peer] => 1 
      [date_delim] => 
      [ccfields] => csc,expdate,acct 
      [place_order_url] => paypal/transparent/requestSecureToken 
      [cgi_url_test_mode] => https://pilot-payflowlink.paypal.com 
      [cgi_url] => https://payflowlink.paypal.com 
      [transaction_url_test_mode] => https://pilot-payflowpro.paypal.com 
      [transaction_url] => https://payflowpro.paypal.com 
      [avs_street] => 0 
      [avs_zip] => 0 
      [avs_international] => 0 
      [avs_security_code] => 1 
      [cc_year_length] => 2 
      [can_authorize_vault] => 1 
      [can_capture_vault] => 1 
     ) 

    [payflowpro_cc_vault] => Array 
     (
      [model] => PayflowProCreditCardVaultFacade 
      [title] => Stored Cards (Payflow Pro) 
     ) 

    [paypal_billing_agreement] => Array 
     (
      [active] => 1 
      [allow_billing_agreement_wizard] => 1 
      [model] => Magento\Paypal\Model\Method\Agreement 
      [title] => PayPal Billing Agreement 
      [group] => paypal 
      [verify_peer] => 1 
     ) 

    [payflow_link] => Array 
     (
      [model] => Magento\Paypal\Model\Payflowlink 
      [payment_action] => Authorization 
      [verbosity] => HIGH 
      [user] => 
      [pwd] => 
      [group] => paypal 
      [title] => Credit Card 
      [partner] => PayPal 
      [csc_required] => 1 
      [csc_editable] => 1 
      [url_method] => GET 
      [email_confirmation] => 0 
      [verify_peer] => 1 
      [transaction_url_test_mode] => https://pilot-payflowpro.paypal.com 
      [transaction_url] => https://payflowpro.paypal.com 
      [cgi_url_test_mode] => https://pilot-payflowlink.paypal.com 
      [cgi_url] => https://payflowlink.paypal.com 
     ) 

    [payflow_advanced] => Array 
     (
      [model] => Magento\Paypal\Model\Payflowadvanced 
      [payment_action] => Authorization 
      [verbosity] => HIGH 
      [user] => PayPal 
      [pwd] => 
      [group] => paypal 
      [title] => Credit Card 
      [partner] => PayPal 
      [vendor] => PayPal 
      [csc_required] => 1 
      [csc_editable] => 1 
      [url_method] => GET 
      [email_confirmation] => 0 
      [verify_peer] => 1 
      [transaction_url_test_mode] => https://pilot-payflowpro.paypal.com 
      [transaction_url] => https://payflowpro.paypal.com 
      [cgi_url_test_mode] => https://pilot-payflowlink.paypal.com 
      [cgi_url] => https://payflowlink.paypal.com 
     ) 

    [hosted_pro] => Array 
     (
      [model] => Magento\Paypal\Model\Hostedpro 
      [title] => Payment by cards or by PayPal account 
      [payment_action] => Authorization 
      [group] => paypal 
      [display_ec] => 0 
      [verify_peer] => 1 
     ) 

    [authorizenet_directpost] => Array 
     (
      [active] => 0 
      [cctypes] => AE,VI,MC,DI 
      [debug] => 0 
      [email_customer] => 0 
      [login] => 
      [merchant_email] => 
      [model] => Magento\Authorizenet\Model\Directpost 
      [order_status] => processing 
      [payment_action] => authorize 
      [test] => 1 
      [title] => Credit Card Direct Post (Authorize.net) 
      [trans_key] => 
      [trans_md5] => 
      [allowspecific] => 0 
      [currency] => USD 
      [create_order_before] => 1 
      [date_delim] =>/
      [ccfields] => x_card_code,x_exp_date,x_card_num 
      [place_order_url] => authorizenet/directpost_payment/place 
      [cgi_url_test_mode] => https://test.authorize.net/gateway/transact.dll 
      [cgi_url] => https://secure.authorize.net/gateway/transact.dll 
      [cgi_url_td_test_mode] => https://apitest.authorize.net/xml/v1/request.api 
      [cgi_url_td] => https://api2.authorize.net/xml/v1/request.api 
     ) 

    [braintree] => Array 
     (
      [model] => BraintreeFacade 
      [title] => Credit Card (Braintree) 
      [payment_action] => authorize 
      [active] => 0 
      [is_gateway] => 1 
      [can_use_checkout] => 1 
      [can_authorize] => 1 
      [can_capture] => 1 
      [can_capture_partial] => 1 
      [can_authorize_vault] => 1 
      [can_capture_vault] => 1 
      [can_use_internal] => 1 
      [can_refund_partial_per_invoice] => 1 
      [can_refund] => 1 
      [can_void] => 1 
      [can_cancel] => 1 
      [cctypes] => AE,VI,MC,DI,JCB,CUP,DN,MI 
      [useccv] => 1 
      [cctypes_braintree_mapper] => {"american-express":"AE","discover":"DI","jcb":"JCB","mastercard":"MC","master-card":"MC","visa":"VI","maestro":"MI","diners-club":"DN","unionpay":"CUP"} 
      [order_status] => processing 
      [environment] => sandbox 
      [allowspecific] => 0 
      [sdk_url] => https://js.braintreegateway.com/js/braintree-2.17.6.min.js 
      [public_key] => 
      [private_key] => 
      [masked_fields] => cvv,number 
      [privateInfoKeys] => avsPostalCodeResponseCode,avsStreetAddressResponseCode,cvvResponseCode,processorAuthorizationCode,processorResponseCode,processorResponseText,liabilityShifted,liabilityShiftPossible,riskDataId,riskDataDecision 
      [paymentInfoKeys] => cc_type,cc_number,avsPostalCodeResponseCode,avsStreetAddressResponseCode,cvvResponseCode,processorAuthorizationCode,processorResponseCode,processorResponseText,liabilityShifted,liabilityShiftPossible,riskDataId,riskDataDecision 
     ) 

    [braintree_paypal] => Array 
     (
      [model] => BraintreePayPalFacade 
      [title] => PayPal (Braintree) 
      [active] => 0 
      [payment_action] => authorize 
      [allowspecific] => 0 
      [require_billing_address] => 0 
      [allow_shipping_address_override] => 1 
      [display_on_shopping_cart] => 1 
      [order_status] => processing 
      [is_gateway] => 1 
      [can_use_checkout] => 1 
      [can_authorize] => 1 
      [can_capture] => 1 
      [can_capture_partial] => 1 
      [can_refund] => 1 
      [can_refund_partial_per_invoice] => 1 
      [can_void] => 1 
      [can_cancel] => 1 
      [privateInfoKeys] => processorResponseCode,processorResponseText,paymentId 
      [paymentInfoKeys] => processorResponseCode,processorResponseText,paymentId,payerEmail 
     ) 

    [braintree_cc_vault] => Array 
     (
      [model] => BraintreeCreditCardVaultFacade 
      [title] => Stored Cards (Braintree) 
     ) 

的getActivePaymentMethods的輸出陣列()很長。所以,我剛剛打印出陣列的按鍵。輸出數組的鍵包含活動方法的代碼。 array_keys的

樣本輸出(getActivePaymentMethods()):

Array 
(
    [0] => free 
    [1] => checkmo 
    [2] => purchaseorder 
    [3] => cashondelivery 
    [4] => paypal_billing_agreement 
)