2014-11-08 2 views
0

Я пытаюсь получить скидку, чтобы обратиться к корзине покупок, которую я написал. Я использую систему Adaptive API, но, похоже, я не понимаю. Я попробовал его в SetPaymentOptions вызова:PayPal API - скидка?

 'receiverOptions' => [ 
          { 
           'receiver' => { 
               'email' => '[email protected]' 
              }, 
           'invoiceData' => { 
                'totalShipping' => '8.00', 
                'totalTax' => 0, 
                'item' => [ 
                   { 
                   'itemPrice' => '15.00', 
                   'name' => 'Alice in Wonderland Mechanism Necklace', 
                   'price' => '15', 
                   'itemCount' => 1 
                   }, 
                   { 
                   'itemPrice' => '30.00', 
                   'name' => '110 Year Old Unicorn Dial Necklace', 
                   'price' => '30', 
                   'itemCount' => 1 
                   } 
                  ], 
                'discount' => '0.15' 
               } 
          } 
          ], 
     'requestEnvelope' => { 
          'errorLanguage' => 'en_US', 
          'detailLevel' => 'ReturnAll' 
          }, 
     'payKey' => 'AP-2F6415163M814733M', 
     'SenderOptions' => { 
          'requireShippingAddressSelection' => bless(do{\(my $o = 1)}, 'JSON::XS::Boolean') 
         } 
    }; 

..и даже попробовал его в первоначальном Pay вызова - но ни один, кажется, признают скидку (и применить его).

 'currencyCode' => 'GBP', 
     'requestEnvelope' => { 
          'errorLanguage' => 'en_US', 
          'detailLevel' => 'ReturnAll' 
          }, 
     'cancelUrl' => 'https://sitedev.net/', 
     'discount' => '0.15', 
     'actionType' => 'CREATE', 
     'ipnNotificationUrl' => 'https://sitedev.net/cgi-bin/ipn.cgi', 
     'returnUrl' => 'https://sitedev.net/myorders', 
     'reverseAllParallelPaymentsOnError' => bless(do{\(my $o = 0)}, 'JSON::XS::Boolean'), 
     'receiverList' => { 
          'receiver' => [ 
              { 
              'email' => '[email protected]', 
              'amount' => '53.00', 
              'invoiceId' => '47', 
              'paymentType' => 'GOODS' 
              } 
             ] 
         } 
    }; 

UPDATE: Ммм нормально - все еще возникают проблемы с этим!

      'item' => [ 
            { 
             'itemPrice' => '25.00', 
             'name' => 'Cryptex - 16Gb USB Drive', 
             'price' => '25', 
             'itemCount' => 1 
            }, 
            { 
             'name' => 'Special Discount', 
             'price' => '-2.50', 
             'itemCount' => 1 
            }, 
            { 
             'itemPrice' => '5.00', 
             'name' => 'Shipping', 
             'price' => '5.00', 
             'itemCount' => 1 
            } 
            ] 

То значения я передаю в, но в конце корзину, она показывает, как:

Steampunk Junkies £27.50 
Cryptex - 16Gb USB Drive 
£25.00 
Shipping 
£5.00 

£0.00 

Странная вещь - это то, что скидка IS применяется ... только не показано ???

ответ

1

Мне любопытно, где вы видите, что есть параметр «скидки», даже доступный в этих вызовах .. ?? Он не указан в ссылке API для Pay или SetPaymentOptions.

Что вам нужно сделать, это добавить скидку в виде позиции в SetPaymentOptions с отрицательной суммой. Таким образом, это будет дополнительная позиция с -0.15 в качестве значения. Вы можете назвать «скидку» или все, что хотите, но опять же, в этих API нет фактического параметра скидки.

+0

О, это хорошая идея - не знаю, почему я не думал об этом :) Я видел параметр «скидка» в другом API (который вы передаете по URL-адресу, для «стандартных» платежей). .. но просто предположил, что он также будет работать в JSON. Их API-документы немного хромают для Adaptive stuff :(Дайте это сейчас, а затем проголосуйте, если он работает =) –

+1

Mmm ok, это не сработало - вы получаете сообщение об ошибке при попытке использовать отрицательный : 'ERROR: неверный параметр запроса: itemPrice не может быть отрицательным на странице /var/home/user/site.net/cgi-bin/admin/Want/Cart.pm. 437.' –

+1

А, моя ошибка - ему не понравилось «itemPrice» определяется ... если я просто использовал параметр «price», тогда он отлично работает. Благодаря! –