【问题标题】:magento auto order creation using credit card payment not saving order使用信用卡付款而不保存订单的magento自动订单创建
【发布时间】:2012-11-01 12:45:02
【问题描述】:

我创建了一个 Magento 自动创建订单脚本,当我将付款方式设置为采购订单时它工作正常,当我尝试使用信用卡时它不会创建订单。

我使用 cc info 如下,但现在可以使用了

 $orderPayment = Mage::getModel('sales/order_payment')
      ->setStoreId($storeId)
      ->setCustomerPaymentId(0)
      ->setMethod('ccsave')
      ->setCcNumber('6011111111111117')
      ->setCcOwner('ooooo')
      ->setCcType('Discover')
      ->setCcExpMonth('9')
      ->setCcExpYear('2014')
      ->setCcLast4(substr('6011111111111117',-4));

当我使用下面的采购订单时,它可以工作

 $orderPayment = Mage::getModel('sales/order_payment')
          ->setStoreId($storeId)
          ->setCustomerPaymentId(0)
          ->setMethod('purchaseorder')
          ->setPo_number(' - ');

我尝试了很多,谁能帮帮我,这是我的完整代码

<?php
    //run the reminders

    require_once '../app/Mage.php';
    $app = Mage::app();


    }
    //$products = array('35' => array('qty' => 1));
    $products;
    $order = Mage::getModel('sales/order')->load(50);
    $items = $order->getAllItems();
    $itemcount=count($items);
    foreach ($items as $itemId => $item)
    {
        //echo $item->getName().'<br/>';
       // echo $item->getPrice();
       // echo $item->getSku();
       $idx=$item->getProductId();
        $products[$idx]=array('qty'=>$item->getQtyToInvoice());
       // $products[]= $item->getQtyToInvoice().'<br/>';
    }
    //Mage::getSingleton('customer/session')->logout();

    print_r($products);

    //}      




      $customer = Mage::getModel('customer/customer')->load(16);
      /*$customerId is the id of the customer who is placing the order, it can be passed as an argument to the function place()*/

      $transaction = Mage::getModel('core/resource_transaction');
      $storeId = $customer->getStoreId();
      $reservedOrderId = Mage::getSingleton('eav/config')->getEntityType('order')->fetchNewIncrementId($storeId);

      $order = Mage::getModel('sales/order')
      ->setIncrementId($reservedOrderId)
      ->setStoreId($storeId)
      ->setQuoteId(0)
      ->setGlobal_currency_code('GBP')
      ->setBase_currency_code('GBP')
      ->setStore_currency_code('GBP')
      ->setOrder_currency_code('GBP');

      // set Customer data
      $order->setCustomer_email($customer->getEmail())
      ->setCustomerFirstname($customer->getFirstname())
      ->setCustomerLastname($customer->getLastname())
      ->setCustomerGroupId($customer->getGroupId())
      ->setCustomer_is_guest(0)
      ->setCustomer($customer);

      // set Billing Address
      $billing = $customer->getDefaultBillingAddress();
      $billingAddress = Mage::getModel('sales/order_address')
      ->setStoreId($storeId)
      ->setAddressType(Mage_Sales_Model_Quote_Address::TYPE_BILLING)
      ->setCustomerId($customer->getId())
      ->setCustomerAddressId($customer->getDefaultBilling())
      ->setCustomer_address_id($billing->getEntityId())
      ->setPrefix($billing->getPrefix())
      ->setFirstname($billing->getFirstname())
      ->setMiddlename($billing->getMiddlename())
      ->setLastname($billing->getLastname())
      ->setSuffix($billing->getSuffix())
      ->setCompany($billing->getCompany())
      ->setStreet($billing->getStreet())
      ->setCity($billing->getCity())
      ->setCountry_id($billing->getCountryId())
      ->setRegion($billing->getRegion())
      ->setRegion_id($billing->getRegionId())
      ->setPostcode($billing->getPostcode())
      ->setTelephone($billing->getTelephone())
      ->setFax($billing->getFax());
      $order->setBillingAddress($billingAddress);

      $shipping = $customer->getDefaultShippingAddress();
      $shippingAddress = Mage::getModel('sales/order_address')
      ->setStoreId($storeId)
      ->setAddressType(Mage_Sales_Model_Quote_Address::TYPE_SHIPPING)
      ->setCustomerId($customer->getId())
      ->setCustomerAddressId($customer->getDefaultShipping())
      ->setCustomer_address_id($shipping->getEntityId())
      ->setPrefix($shipping->getPrefix())
      ->setFirstname($shipping->getFirstname())
      ->setMiddlename($shipping->getMiddlename())
      ->setLastname($shipping->getLastname())
      ->setSuffix($shipping->getSuffix())
      ->setCompany($shipping->getCompany())
      ->setStreet($shipping->getStreet())
      ->setCity($shipping->getCity())
      ->setCountry_id($shipping->getCountryId())
      ->setRegion($shipping->getRegion())
      ->setRegion_id($shipping->getRegionId())
      ->setPostcode($shipping->getPostcode())
      ->setTelephone($shipping->getTelephone())
      ->setFax($shipping->getFax());

      $order->setShippingAddress($shippingAddress)
      ->setShipping_method('flatrate_flatrate')
      ->setShippingDescription('flatrate');

      $orderPayment = Mage::getModel('sales/order_payment')
      ->setStoreId($storeId)
      ->setCustomerPaymentId(0)
      ->setMethod('ccsave')
      ->setCcNumber('6011111111111117')
      ->setCcOwner('ooooo')
      ->setCcType('Discover')
      ->setCcExpMonth('9')
      ->setCcExpYear('2014')
      ->setCcLast4(substr('6011111111111117',-4));


      /*
      ->setPo_number(' - ');


      ->setCustomerPaymentId(3)
      ->setMethod('ccsave')
      ->setCcNumber('6011111111111117')
      ->setCcOwner('ooooo')
      ->setCcType('Discover')
      ->setCcExpMonth('9');
      ->setCcExpYear('2014');
      ->setCcLast4(substr('6011111111111117',-4));
      */
      $order->setPayment($orderPayment);
    //,'36'=>array('qty' => 1)
      // let say, we have 2 products
      $subTotal = 0;
     // $products = array('35' => array('qty' => 1));
      foreach ($products as $productId=>$product) {
      echo $product['qty'];
      $_product = Mage::getModel('catalog/product')->load($productId);
      $rowTotal = $_product->getPrice() * $product['qty'];
      $orderItem = Mage::getModel('sales/order_item')
      ->setStoreId($storeId)
      ->setQuoteItemId(0)
      ->setQuoteParentItemId(NULL)
      ->setProductId($productId)
      ->setProductType($_product->getTypeId())
      ->setQtyBackordered(NULL)
      ->setTotalQtyOrdered($product['rqty'])
      ->setQtyOrdered($product['qty'])
      ->setName($_product->getName())
      ->setSku($_product->getSku())
      ->setPrice($_product->getPrice())
      ->setBasePrice($_product->getPrice())
      ->setOriginalPrice($_product->getPrice())
      ->setRowTotal($rowTotal)
      ->setBaseRowTotal($rowTotal);

       $subTotal += $rowTotal;
      $order->addItem($orderItem);
      }
    echo $subTotal;
      $order->setSubtotal($subTotal)
      ->setBaseSubtotal($subTotal)
      ->setGrandTotal($subTotal)
      ->setBaseGrandTotal($subTotal);

      $transaction->addObject($order);
      $transaction->addCommitCallback(array($order, 'place'));
      $transaction->addCommitCallback(array($order, 'save'));
      $transaction->save(); 

      $order->sendNewOrderEmail();
    ?>

【问题讨论】:

    标签: php zend-framework magento magento-1.6


    【解决方案1】:

    这是我使用信用卡(已保存)以编程方式创建订单时的订单付款代码:

    $orderPayment = Mage::getModel('sales/order_payment')
    ->setStoreId($store_id)
    ->setCustomerPaymentId(0)
    ->setMethod($method)
    ->setCcNumber($cc_number)
    ->setCcNumberEnc(Mage::getSingleton('payment/info')->encrypt($cc_number)
    ->setCcOwner($cc_owner)
    ->setCcType($cc_type)
    ->setCcExpMonth($cc_exp_month)
    ->setCcExpYear($cc_exp_year)
    ->setCcLast4(substr($cc_number,-4));
    

    【讨论】:

      【解决方案2】:

      您以错误的方式使用 ->setCcType('Discover')。您必须在此处指定 cc 类型的代码。 例如,在 Visa 的情况下,您应该使用

      ->setCcType('VI')

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-19
        • 2022-01-03
        • 2012-02-29
        • 1970-01-01
        • 2023-02-07
        • 2012-03-07
        相关资源
        最近更新 更多