sirenka
sirenka

Reputation: 75

Setting payment method to cart with Magento API

I'm using Magento API to create orders. My code fails when I want to add payment method to the cart :

$paymentMethod = array(
    “method” => “paypal_standard”
);

$resultPaymentMethod = $proxy->call(
    $sessionId,
    “cart_payment.method”,
    array(
        $shoppingCartId,
        $paymentMethod
    )
); 

I'm getting following error: Payment method is not allowed.

In admin section in System->Configuration->PayPal I have set Website Payments Standard but I didn't enabled any option in System->Configuration->Payment Methods cause there is none available for PayPal. When I call:

$proxy->call($session, 'cart_payment.list') 

method I get an empty array as there isn't any available payment method set. Does someone knows how and where paypal payment setting is saved in Magento ?

If I set another Payment method like "checkmo" then the order is created fine. The thing is that I only need to allow Paypal standard payment.

So my question is: How can I set payment method to PayPal to the cart so my order will be successfully created?

Thanks.

Upvotes: 3

Views: 2521

Answers (2)

Geet
Geet

Reputation: 11

I have also facing this problem and find reason for it.

$method->canUseInternal() used in payment method api. When we use paypal or other redirect able methods in payment methos api in that case $method->canUseInternal() it getting false value.

So for this type situation we need to create own custom coding.

api function refreance:

protected function _canUsePaymentMethod($method, $quote){
        if (!($method->isGateway() || $method->canUseInternal())) {
            return false; }

        if (!$method->canUseForCountry($quote->getBillingAddress()->getCountry())) {
            return false;
        }

        if (!$method->canUseForCurrency(Mage::app()->getStore($quote->getStoreId())->getBaseCurrencyCode())) {
            return false;
        }

Upvotes: 1

quafzi
quafzi

Reputation: 68

To pay with Paypal you need your customer to be redirected to Paypal. Because of this fact, you may not be allowed to use this payment method using API. I recommend you to have look at isAvailable() of the payment method to customize this behaviour.

Upvotes: 0

Related Questions