根据官方文档,支付网关的主要预定义功能是capture()
和authorize()
,这些功能应在订单与选定的付款方式一起执行后执行。
支付网关我正在尝试设置请求https POST数据并返回json响应。它基本上只是cc支付网关。
这个帖子数据应该放在模块内的哪个位置?
如何在完成显示顺序后使用网关json响应(所以我知道它已正确执行)?
模块结构应该如何满足此任务的大多数基本需求?
这是我的代码尝试执行的操作:
<?php
class Mycompany_Pay_Model_Pay extends Mage_Payment_Model_Method_Abstract
{
protected $_code = 'mycompany_pay';
protected $_isGateway = true;
protected $_canCapture = true;
protected $_canRefund = true;
protected $_canUseInternal = true;
protected $_allowCurrencyCode = array('EUR', 'HRK');
protected $_minValue = 1;
// taking predefined objects for further usage
public function capture(Varien_Object $payment, $amount){
$order = $payment->getOrder();
//$order = Mage::getModel('sales/order')->load($orderId);
$billingInfo = $order->getBillingAddress();
$customer = Mage::getSingleton('customer/session')->getCustomer();
$postfields = array('order_id'=>9999, // temp number for debugging
'name'=> $customer->getName(),
'mail'=> $customer->getEmail(),
'address'=> $billingInfo->getStreet(1),
'zip'=> $billingInfo->getPostcode(),
'city'=> $billingInfo->getCity(),
'state'=> $billingInfo->getRegion(),
'country'=> $billingInfo->getCountry(),
'amount'=> $amount,
'currency'=>$order->getBaseCurrencyCode(),
'cc'=> $payment->getCcNumber(),
'cvv'=> $payment->getCcCid());
curl_setopt($ch, CURLOPT_URL, 'https://mygatewayUrl');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$result = curl_exec($ch);
print $result;
}
}
卷曲代码应该在捕获之外执行吗?每当我从我的magento测试站点测试订单时,我只会返回事务ID,说明订单已完成。没有实际的证据表明此捕获甚至可以运行。 (我尝试向它添加日志/断点,什么都不做)。
另外一个问题:
添加简单的CC表单以便用户填写选择此付款方式的最简单方法是什么(因此CC变量实际上并非像现在这样空?)
非常感谢任何形式的帮助。
答案 0 :(得分:0)
我认为在本教程中解释了实现所需内容的方法:
http://excellencemagentoblog.com/magento-create-custom-payment-method-api-based
我可以提取它的一部分来回答你的问题,但我认为Manish Prakash给出的整个概述会迷失,它会以一种非常清晰的方式涵盖整个过程,看一看。