2012-02-06 22 views
6

Sử dụng Adaptive Payments API Tôi mua một chìa khóa trả bằng cách sử dụng phương pháp API Pay với các thông số:thích ứng Thanh toán thanh toán HOÀN THÀNH mặc dù actionType là CREATE

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

Sau đó, tôi bắt đầu dòng chảy lương nhúng với URL này: https://www.sandbox.paypal.com/webapps/adaptivepayment/flow/pay?expType=light&payKey= .. .

Sau khi hộp đèn được đóng lại, khi tôi gọi phương thức PaymentDetails trên phím lương, nó mang lại cho tôi (trong số những giá trị khác):

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

Vì vậy, dường như thanh toán đã được thực hiện, mặc dù tôi chưa gọi phương thức ExecutePay.

Các docs nhà nước (dưới chủ đề "PayRequest Fields"):

actionTypexs: string

(Bắt buộc) Cho dù yêu cầu phải trả tiền trả người nhận hoặc liệu Yêu cầu thanh toán được thiết lập để tạo yêu cầu thanh toán nhưng không thực hiện thanh toán cho đến khi số ExecutePayment được gọi.

giá trị cho phép là:
[...]
CREATE - Sử dụng tùy chọn này để thiết lập các hướng dẫn thanh toán với SetPaymentOptions và sau đó thực hiện việc thanh toán tại một thời điểm sau đó với các ExecutePayment.

Tôi đã bỏ lỡ điều gì?

+1

Bạn có tính toán điều này hay vẫn đang chờ câu trả lời? –

+2

Như bạn có thể thấy bên dưới, chưa có câu trả lời. http://xkcd.com/979/? :) – AndreKR

+0

Tôi đã hy vọng bạn có thể đã tìm ra và không cập nhật: D –

Trả lời

3

Chúng tôi đã chỉ sử dụng API phê duyệt trước và gọi thanh toán bằng điều đó. Trong phản ứng tôi đã e-mail của tôi, tôi đã nói:

"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." 

Tôi vẫn không chắc chắn lý do tại sao Tạo xuất hiện để làm cho phí mà không đòi hỏi một cuộc gọi ExecutePayment, nhưng đối với công việc của tôi (mà tôi hy vọng là có giá trị cho bạn), API Preapproval là cách để đi.

+1

Afaik API phê duyệt trước không hỗ trợ "dòng thanh toán được nhúng" (hộp cát thay vì chuyển hướng). – AndreKR

+0

Hoàn toàn bỏ qua điều đó. Chắc chắn hữu ích để biết. Cảm ơn bạn đã bình luận. –

+1

Trong trường hợp đó, tại sao họ sẽ triển khai loại CREATE? Làm thế nào tôi có thể gọi Execute nếu không cần phải làm điều đó? –

3

(Tôi biết nó được ba năm kể từ khi câu hỏi này được hỏi, nhưng kể từ khi một người dùng khác tham khảo câu hỏi này, tôi sẽ trả lời nó anyway.)

Nói tóm lại, nếu bạn gửi cho người gửi qua trang web PayPal và họ chấp thuận thanh toán, thanh toán sẽ hoàn tất ngay lập tức, bất kể bạn đặt số actionType cho.

Mục đích của việc đặt actionType=CREATE là cung cấp cho bạn một chút thời gian để thực hiện cuộc gọi API bổ sung đối với khóa thanh toán trước khi thanh toán hoàn tất. Điều này chủ yếu hữu ích khi bạn thực hiện thanh toán ngầm định - ví dụ: các khoản thanh toán mà người gửi và người gọi API là cùng một bên (và bạn đã đặt sender.useCredentials=true, đặt địa chỉ email của mình ở senderEmail hoặc đặt ID tài khoản người bán an toàn của bạn trong sender.accountId) hoặc các khoản thanh toán mà bạn đang sử dụng phê duyệt trước mà người gửi đã chấp thuận trước đó.Vì các loại thanh toán này thường hoàn tất ngay lập tức (nếu bạn đặt actionType=PAY), hãy đặt actionType=CREATE cung cấp cho bạn một chút thời gian để thực hiện các cuộc gọi API khác đối với thanh toán (chẳng hạn như SetPaymentOptions) trước khi thanh toán hoàn tất.

Nếu bạn đang thực hiện thanh toán rõ ràng (nơi người gửi phải truy cập trang web PayPal để phê duyệt thanh toán), tuy nhiên, bạn chỉ cần thực hiện các cuộc gọi bổ sung đó trước khi gửi người dùng qua PayPal.

Các vấn đề liên quan