1.magento '支付模型类'在何处指定?
在etc/config.xml的标签payment/{payment_method}/model指定支付类(这里假设mypay/paya)
2. 如果支付方法类似PayPal Standard(转向支付网关网站进行支付),那么支付模型类mypay/paya中应该覆盖方法getOrderPlaceRedirectUrl().
3. 如果支付方法不是转向某个页面,而是hook某段代码操作(支付操作)怎么做?
在etc/system.xml的 config/sections/payment/groups/{payment_method}/fields/payment_action/source_model标签下指定对应的'支付方法类',如mypay/payb_paymentAction。该类只有一个方法返回Action列表
public function toOptionArray(){
return array(
array(
'value' => Cartz_Mypay_Model_Payb::PAYMENT_ACTION_AUTH_CAPTURE,
'label' => Mage::helper('dps')->__('Authorise and Capture')
),
array(
'value' => Cartz_Mypay_Model_Payb::PAYMENT_ACTION_AUTH,
'label' => Mage::helper('dps')->__('Authorise')
)
);
}
代码中
Cartz_Mypay_Model_Payb::PAYMENT_ACTION_AUTH_CAPTURE='authorize_capture';
Cartz_Mypay_Model_Payb::PAYMENT_ACTION_AUTH ='authorize';
这样,一旦客户点击'Place Order'按钮,依次执行:
$order->place();
$order->getPayment()->place();
查看$order->getPayment()->place()方法内部,就能清楚看到它正在访问system.xml的payment_action值。当该值为authorize_capture时,支付模型类的capture方法被调用;当该值为authorize,支付模型类的authorize方法被调用。
4. 用户执行checkout进行到 Payment Information点击continue按钮时,发生了什么?
调用你的支付模型类(mypay/paya)的validate(), isAvaliable()等方法,并没有真正地做支付行为。
(责任编辑:好模板) |