Trochę jestem zdezorientowany, jakoś udaje mi się zmienić kwotę zakupu:

Najpierw konfiguruję mój zakup,

@setup_response = gateway.setup_purchase(
  10*100,
  :ip                => request.remote_ip,
  :return_url        => url_for(:controller => "payments", :action => 'confirm', :only_path => false),
  :cancel_return_url => url_for(:controller => "payments", :action => 'error', :only_path => false),
  :currency => 'EUR',
  :email => current_user.email,
  :no_shipping => true,
  :items => items
)

Później dokonuję zakupu:

  purchase = gateway.purchase(
      500*100,
      :ip       => request.remote_ip,
      :payer_id => params[:payer_id],
      :token    => params[:token],
      :currency => 'EUR'
      )

Jak widać, zmieniłem kwotę z 10 -> setup/użytkownik zgodził się na 1000 przy zakupie i zadziałało w Paypal Sandbox.

Myślę, że to naprawdę dziwne. Czy ktoś może to potwierdzić? To nie powinno się zdarzyć? Czy jest to możliwe tylko w piaskownicy?

0
Mark 23 luty 2012, 19:13

2 odpowiedzi

Najlepsza odpowiedź

Całkiem pewien, że Paypal Express Checkout nie wymaga, aby kwota w DoExpressCheckoutPayment (do której mapuje się setup_purchase) była taka sama jak w SetExpressCheckout. Cytując dokumentację PayPal:

W najprostszym przypadku łączną kwotę zamówienia ustalasz, wywołując API SetExpressCheckout. Możesz jednak zmienić kwotę przed wywołaniem interfejsu API DoExpressCheckoutPayment, jeśli nie znasz całkowitej kwoty podczas wywoływania interfejsu API SetExpressCheckout.

1
denishaskin 23 luty 2012, 19:50

Masz pewną swobodę między konfiguracją a zakupem - ma to na celu umożliwienie ludziom zmiany zamówienia, rabatów itp.

Nie podejmuj ryzyka obciążania ludzi wyższymi opłatami, niż wyraźnie stwierdzasz – Paypal bardzo szybko zwraca ludziom pieniądze, więc na dłuższą metę przegrasz.

0
A4J 29 luty 2012, 00:09