0

早上好!

我正在为 Magento 商店(适用于 Android)开发移动应用程序。我正在使用 SOAP v1,并且使用一些自定义方法制作了一个自定义模块。该应用程序专注于最终客户,因此,基本上,我正在开发一个应用程序,让客户可以从商店购买产品。我知道如何使用 Magento API 将产品添加到购物车以及如何下订单,但是……</p>

创建订单时会发生什么?

call($sessionId,"cart.order",array($shoppingCartId, null, $licenseForOrderCreation));

假设客户必须支付他订购的产品,所以我不知道如何获取Paypal URL并在浏览器中打开它。Paypal 通知 Magento 商店客户支付了产品?

我在这方面有点迷失了。
我认为 API 文档没有解释这部分。

谢谢!

4

1 回答 1

0

如果您使用 paypal_standard 作为付款方式。然后按照以下步骤操作。

  1. 使用支付方式作为 paypal_standard 下订单。

  2. 之后通过贝宝标准 sdk 启动付款。

  3. 成功付款后,您可以创建自己的 api,通过它您可以使用以下代码编辑先前创建的订单。

    $appEmulation = Mage::getSingleton("core/app_emulation");
    $initialEnvironmentInfo = $appEmulation->startEnvironmentEmulation($storeId);
    $order = Mage::getModel("sales/order")->loadByIncrementId($incrementId);
    $payment = $order->getPayment();
    $payment->setTransactionId($confirm->response->id)
                ->setPreparedMessage("status : ".$confirm->response->state)
                ->setShouldCloseParentTransaction(true)
                ->setIsTransactionClosed(0)
                ->registerCaptureNotification($order->getGrandTotal());
    $order->save();
    if($status == 0){
        $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING)
            ->setStatus(Mage_Sales_Model_Order::STATE_PROCESSING)
            ->save();
    }
    else{
        $order->setState(Mage_Sales_Model_Order::STATE_CANCELED)
            ->setStatus(Mage_Sales_Model_Order::STATE_CANCELED)
            ->save();
    }
    if($order->canInvoice()){
        $invoice = Mage::getModel("sales/service_order", $order)->prepareInvoice();
        $invoice->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::CAPTURE_ONLINE);
        $invoice->register();
        $transactionSave = Mage::getModel("core/resource_transaction")
            ->addObject($invoice)
            ->addObject($invoice->getOrder());
        $transactionSave->save();
    }
    $comment = "status :".$confirm->response->state."<br>";
    $comment .= "transaction id :".$confirm->response->id."<br>";
    $comment .= "date :".$confirm->response->create_time."<br>";
    $comment .= "from :".$confirm->client->product_name."<br>";
    $order->setIsCustomerNotified(false);
    $order->addStatusHistoryComment($comment);
    $order->save();
    $appEmulation->stopEnvironmentEmulation($initialEnvironmentInfo);
    
于 2016-02-23T14:21:13.890 回答