在 PayPal Express Checkout 中选择收款人

Choose the recipient of the payment in PayPal Express Checkout

我正在使用 PayPal 的快速结账创建一个市场类型的结账流程。我用

调用经典 API 是否正确

SUBJECT=somebody@email.com

SetExpressCheckout 电话中确保某人@email.com 是付款的收款人,而不是我自己?

我需要为市场上的一群卖家做这件事,这样每个人都可以直接从买家那里收到付款到他们的 PayPal 帐户。

它不在 https://developer.paypal.com/docs/classic/api/merchant/SetExpressCheckout_API_Operation_NVP/ 的文档中,但我发现它在 Google 上搜索。

我这样叫对吗?

更新 1:

或者我应该使用 PAYMENTREQUEST_n_SELLERPAYPALACCOUNTID

更新 2:

我试过使用PAYMENTREQUEST_n_SELLERPAYPALACCOUNTID?而且没用,说我没有授权。但后来我使用了 SUBJECT= 并且它运行良好,即使该帐户从未授予我权限。

这是正确的方法吗?我只需要人们能够向多个卖家付款。我不需要做任何花哨的事情,比如退款之类的。

您应该使用 Express Checkout 并行支付的概念,而不是使用 "subject" 参数。在并行付款中,您要放在 "PAYMENTREQUEST_n_SELLERPAYPALACCOUNTID" 下的任何人都将收到付款。与 "subject" 参数不同的是,您一次只能将付款发送给一个收款人。

我已经包含了并行支付的 SETEXPRESSCHECKOUT 调用请求。

NVP Request:
USER=XXXXXXXXXX&PWD=XXXXXXXXXXXX&SIGNATURE=XXXXXXX&VERSION=109.0&METHOD=SetExpressCheckout&RETURNURL=http://XXXXX/index.php?action=ECreturn&CANCELURL=http://XXXXX/index.php?action=ECcancel&LANDINGPAGE=BILLING&SOLUTIONTYPE=SOLE&PAYMENTREQUEST_0_CURRENCYCODE=USD&PAYMENTREQUEST_0_AMT=300&PAYMENTREQUEST_0_ITEMAMT=200&PAYMENTREQUEST_0_TAXAMT=100&PAYMENTREQUEST_0_DESC=Summer Vacation trip&PAYMENTREQUEST_0_INSURANCEAMT=0&PAYMENTREQUEST_0_SHIPDISCAMT=0&PAYMENTREQUEST_0_SELLERPAYPALACCOUNTID=Eshan@XXXX.pro&PAYMENTREQUEST_0_INSURANCEOPTIONOFFERED=false&PAYMENTREQUEST_0_PAYMENTACTION=Order&PAYMENTREQUEST_0_PAYMENTREQUESTID=CART26488-PAYMENT0&PAYMENTREQUEST_1_CURRENCYCODE=USD&PAYMENTREQUEST_1_AMT=200&PAYMENTREQUEST_1_ITEMAMT=180&PAYMENTREQUEST_1_SHIPPINGAMT=0&PAYMENTREQUEST_1_HANDLINGAMT=0&PAYMENTREQUEST_1_TAXAMT=20&PAYMENTREQUEST_1_DESC=Summer Vacation trip&PAYMENTREQUEST_1_INSURANCEAMT=0&PAYMENTREQUEST_1_SHIPDISCAMT=0&PAYMENTREQUEST_1_SELLERPAYPALACCOUNTID=Eshan@XXXXX.com&PAYMENTREQUEST_1_INSURANCEOPTIONOFFERED=false&PAYMENTREQUEST_1_PAYMENTACTION=Order&PAYMENTREQUEST_1_PAYMENTREQUESTID=CART26488-PAYMENT1&L_PAYMENTREQUEST_0_NAME0=Depart San Jose Feb 12 at 12:10PM Arrive in Baltimore at 10:22PM&L_PAYMENTREQUEST_0_NAME1=Depart Baltimore Feb 15 at 6:13 PM Arrive in San Jose at 10:51 PM&L_PAYMENTREQUEST_0_NUMBER0=Flight 522&L_PAYMENTREQUEST_0_NUMBER1=Flight 961&L_PAYMENTREQUEST_0_QTY0=1&L_PAYMENTREQUEST_0_QTY1=1&L_PAYMENTREQUEST_0_TAXAMT0=50&L_PAYMENTREQUEST_0_TAXAMT1=50&L_PAYMENTREQUEST_0_AMT0=50&L_PAYMENTREQUEST_0_AMT1=150&L_PAYMENTREQUEST_0_DESC0=SJC Terminal 1. Flight time: 7 hours 12 minutes&L_PAYMENTREQUEST_0_DESC1=BWI Terminal 1. Flight time: 7 hours 38 minutes&L_PAYMENTREQUEST_1_NAME0=Night(s) stay at 9990 Deereco Road,Timonium, MD 21093&L_PAYMENTREQUEST_1_NUMBER0=300&L_PAYMENTREQUEST_1_QTY0=1&L_PAYMENTREQUEST_1_TAXAMT0=20&L_PAYMENTREQUEST_1_AMT0=180&L_PAYMENTREQUEST_1_DESC0=King No-Smoking; Check in after 4:00 PM; Check out by 1:00 PM

NVP Response:
TOKEN=EC-59G28135S2093963X
TIMESTAMP=2015-04-05T21:51:31Z
CORRELATIONID=419ef62debfd2
ACK=Success
VERSION=109.0
BUILD=16057073 

然后您的买家将看到如下内容:

您是否试图通过 PAYMENTREQUEST_0_SELLERPAYPALACCOUNTID 而没有任何其他凭证参数(例如,USERPWDSIGNATURE)?这可能是你的问题。

您可以通过三种不同的方式为没有 API 权限的其他用户处理付款:

  1. 自己通过SUBJECT
  2. 通过 USERPWDSIGNATURESUBJECT
  3. 通过 USERPWDSIGNATUREPAYMENTREQUEST_0_SELLERPAYPALACCOUNTID。 (注意应该是PAYMENTREQUEST_0_SELLERPAYPALACCOUNTID, not PAYMENTREQUEST_n_SELLERPAYPALACCOUNTID.

注意事项如下:

  • 选项 1 可以(在某些情况下,已经)随时关闭 — 所以实际上,选项 2 或选项 3 是您的最佳选择。 (对于想要为商家提供启用 PayPal 的快速方式的可下载购物车,选项 1 确实是最佳选择。)有些人会告诉您选项 3 是首选方式,但实际上,选项 2 和选项 3 都同样有效嗯
  • 如果主题未授予您任何 API 权限,您将仅限于销售交易 — 因此请确保 PAYMENTREQUEST_0_PAYMENTACTION 设置为 Sale
  • 商家帐户中有一项设置可阻止未经授权的购物车付款。如果启用此选项,这些方法中的 none 将起作用,除非商家授予您 API 权限。 (不过这个选项默认是关闭的,大部分商家都不知道。)