【问题标题】:How to create order in magento programmatically with paypal payment method如何使用贝宝付款方式以编程方式在magento中创建订单
【发布时间】:2015-12-29 05:14:04
【问题描述】:

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

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

【问题讨论】:

  • 你能解决这个问题吗?我也有同样的问题。你能帮我解决这个问题吗

标签: php magento paypal-sandbox


【解决方案1】:

首先贝宝是需要认证的支付方式。

但你可以试试这段代码

文件在这里: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;
}

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-11
    • 2011-05-03
    • 2010-11-01
    • 2015-01-19
    • 1970-01-01
    • 2020-06-07
    • 2016-08-11
    • 2014-11-27
    相关资源
    最近更新 更多