2012-02-06 4 views
6

Używanie Adaptive Payments API nabyłem klucza płacić za pomocą metody API Pay z tych parametrów:Płatności adaptacyjne zapłaty uzupełniającej chociaż actionType to stworzyć

actionType:      CREATE 
receiverList.receiver(0).email: ... 
receiverList.receiver(0).amount: 5 
currencyCode:     EUR 
cancelUrl:      ... 
returnUrl:      ... 
requestEnvelope.errorLanguage: en_US 

Potem zacząłem wbudowanego przepływ wynagrodzenia z tego adresu URL: https://www.sandbox.paypal.com/webapps/adaptivepayment/flow/pay?expType=light&payKey= .. .

schowka Po ponownym zamknięciu, kiedy wywołać metodę PaymentDetails na klawiszu płatnej, to daje mi (wśród innych wartości):

paymentInfoList.paymentInfo(0).transactionStatus: COMPLETED 
status:           COMPLETED 
actionType:          CREATE 

Najwyraźniej płatność została już zrealizowana, ale jeszcze nie zadzwoniłem do metody ExecutePay.

docs państwa (w ramach tematu "PayRequest Fields"):

actionTypexs: string

(Wymagane) czy żądanie Pay płaci odbiornika lub czy Żądanie zapłaty jest skonfigurowane w taki sposób, aby utworzyć żądanie płatności, ale nie można zrealizować płatności do czasu wywołania ExecutePayment.

Dozwolone wartości to:
[...]
CREATE - Użyj tej opcji, aby skonfigurować instrukcji płatniczych z SetPaymentOptions a następnie wykonać płatność w późniejszym czasie z ExecutePayment.

Czego mi brakowało?

+1

Czy wymyśliłeś to lub nadal czekałeś na odpowiedź? –

+2

Jak widać poniżej, nie ma jeszcze odpowiedzi. http://xkcd.com/979/? :) – AndreKR

+0

Miałem nadzieję, że mógłbyś to wymyślić i po prostu nie zaktualizować: D –

Odpowiedz

3

Skończyło się na tym, że korzystaliśmy z interfejsu API Preapproval i dzwoniliśmy do Pay z tym. W odpowiedzi dostałem na mój e-mail powiedziano mi:

"PayPal does not allow you to hold any amount of money in somebody else's PayPal account  and that is why we have Preapproval API." 

ja nadal nie jestem pewien, dlaczego Tworzenie wydaje się zrobić ładunek bez konieczności połączenia ExecutePayment, ale dla mojego przepływu pracy (co mam nadzieję jest cenna dla ciebie), Preapproval API jest drogą do zrobienia.

+1

Afaik the Preapproval API nie obsługuje jeszcze "wbudowanego przepływu płatności" (sandbox zamiast przekierowania). – AndreKR

+0

Zupełnie przeoczyłem to. Zdecydowanie przydatna. Dziękuję za komentarz. –

+1

W takim przypadku, dlaczego mieliby implementować typ CREATE? Jak mogę zadzwonić do Execute, jeśli nie ma takiej potrzeby? –

3

(wiem, że już trzy lata odkąd to pytano, ale od innego użytkownika odwołanie to pytanie, będę go odebrać w każdym razie).

W skrócie, jeśli wyślesz nadawcę nad do witryny PayPal i zatwierdzają płatność, płatność zostanie zrealizowana natychmiast, niezależnie od tego, co ustawisz na actionType.

Celem ustawienia actionType=CREATE jest zapewnienie trochę czasu na wykonanie dodatkowych wywołań API przeciwko funkcji "paykey" przed zakończeniem płatności. Jest to przede wszystkim przydatne, gdy wykonujesz niejawne płatności - np. Te płatności, w których nadawca i osoba dzwoniąca API są tą samą stroną (i ustawiłeś sender.useCredentials=true, ustaw swój adres e-mail w senderEmail lub ustaw bezpieczny identyfikator konta sprzedawcy w sender.accountId) lub te płatności, w przypadku których używasz wstępnej zgody zatwierdzonej przez nadawcę.Ponieważ te typy płatności byłyby normalnie natychmiastowe (jeśli ustawisz actionType=PAY), ustawienie actionType=CREATE daje ci trochę czasu na wykonanie innych wywołań API przeciwko płatności (takich jak SetPaymentOptions) przed zakończeniem płatności.

Jeśli wykonujesz wyraźną płatność (jeśli nadawca musi przejść do witryny PayPal w celu zatwierdzenia płatności), należy wykonać te dodatkowe połączenia, zanim wyślesz użytkownika do serwisu PayPal.