如何使用paypal支付方式以编程方式创建magento订单

时间:2015-12-29 05:14:05

标签: php magento paypal-sandbox

如何使用paypal付款方式以编程方式在magento中创建订单。

我们已经实施了COD方法或支票/汇票支付方式的代码,现在我需要实施支付,我搜索了很多但没有找到任何答案,是否有正确的方法呢?

1 个答案:

答案 0 :(得分:0)

首先,paypal是需要身份验证的付款方式。

但你可以试试这段代码

文件在这里:app / code / core / Mage / Paypal / Model / Express.php

这里的功能代码:

public function order(Varien_Object $payment, $amount)
{
    $this->_placeOrder($payment, $amount);

    $payment->setAdditionalInformation($this->_isOrderPaymentActionKey, true);

    if ($payment->getIsFraudDetected()) {
        return $this;
    }

    $order = $payment->getOrder();
    $orderTransactionId = $payment->getTransactionId();

    $api = $this->_callDoAuthorize($amount, $payment, $payment->getTransactionId());

    $state  = Mage_Sales_Model_Order::STATE_PROCESSING;
    $status = true;

    $formatedPrice = $order->getBaseCurrency()->formatTxt($amount);
    if ($payment->getIsTransactionPending()) {
        $message = Mage::helper('paypal')->__('Ordering amount of %s is pending approval on gateway.', $formatedPrice);
        $state = Mage_Sales_Model_Order::STATE_PAYMENT_REVIEW;
    } else {
        $message = Mage::helper('paypal')->__('Ordered amount of %s.', $formatedPrice);
    }

    $payment->addTransaction(Mage_Sales_Model_Order_Payment_Transaction::TYPE_ORDER, null, false, $message);

    $this->_pro->importPaymentInfo($api, $payment);

    if ($payment->getIsTransactionPending()) {
        $message = Mage::helper('paypal')->__('Authorizing amount of %s is pending approval on gateway.', $formatedPrice);
        $state = Mage_Sales_Model_Order::STATE_PAYMENT_REVIEW;
        if ($payment->getIsFraudDetected()) {
            $status = Mage_Sales_Model_Order::STATUS_FRAUD;
        }
    } else {
        $message = Mage::helper('paypal')->__('Authorized amount of %s.', $formatedPrice);
    }

    $payment->resetTransactionAdditionalInfo();

    $payment->setTransactionId($api->getTransactionId());
    $payment->setParentTransactionId($orderTransactionId);

    $transaction = $payment->addTransaction(Mage_Sales_Model_Order_Payment_Transaction::TYPE_AUTH, null, false,
        $message
    );

    $order->setState($state, $status);

    $payment->setSkipOrderProcessing(true);
    return $this;
}

您可以根据基本要求自定义此代码

如果您有任何问题,请告诉我