我们正在开发一个买家和卖家会面交易的市场(类似于Ebay)。我们希望通过PayPal支持付款,我们不打算收取任何服务费。由于我们是一家创业公司,因此我们的任何管理费用都超出了我们,因此我们决定直接在买家和卖家之间进行任何PayPal交易。
但是,我们希望为卖家提供接受/拒绝机制,以便他们必须手动批准每个订单(如果某些商品在实体店中缺货等)。订单接受后,应将钱转移给卖家。
经过大量思考和阅读PayPal文档后,我们决定使用auth / capture和并行支付概念来使用Express Checkout。我们已成功集成Express Checkout,一切正常,直到调用DoAuthorization
API,但遗憾的是失败了。到目前为止我们所做的一切都在PayPal沙盒中。
为了让您了解我们与PayPal端点的通信是如何工作的,以下是我们正在做的事情(仅显示重要字段):
SetExpressCheckout
和PAYMENTREQUEST_0_PAYMENTACTION=Order
PAYMENTREQUEST_0_SELLERPAYPALACCOUNTID={seller's PayPal email address}
RedirectURL
以授权付款GetExpressCheckoutDetails
以获取有关付款的信息DoExpressCheckoutPayment
PAYMENTREQUEST_0_PAYMENTACTION=Order
这里我们获得了有关状态为“待定”的交易的信息,似乎到目前为止一切正常(交易也在卖家的PayPal账户中可见,状态为“待定”)。现在根据可用的文档,我们需要调用DoAuthorization
以完成身份验证过程。但是,在致电DoAuthorization
后,我们面临一个错误说:
[L_ERRORCODE] => 10007
[L_SHORTMESSAGE] => Permission denied
[L_LONGMESSAGE] => You do not have permissions to make this API call
[L_SEVERITYCODE] => Error
以下是我们通过DoExpressCheckoutPayment
和DoAuthorization
API调用发送和接收的内容(仅显示重要部分):
[REQUESTDATA] => Array
(
[USER] => {our API username}
[PWD] => {our API password}
[VERSION] => 98.0
[BUTTONSOURCE] => AngellEYE_PHPClass
[SIGNATURE] => {our API signature}
[METHOD] => DoExpressCheckoutPayment
[TOKEN] => {token we got from SetExpressCheckout}
[PAYERID] => {payer ID we got from GetExpressCheckoutDetails}
[RETURNFMFDETAILS] => 1
[NOSHIPPING] => 1
[PAYMENTREQUEST_0_AMT] => 123
[PAYMENTREQUEST_0_ITEMAMT] => 23
[PAYMENTREQUEST_0_SHIPPINGAMT] => 100
[PAYMENTREQUEST_0_CURRENCYCODE] => EUR
[PAYMENTREQUEST_0_DESC] => Order #54
[PAYMENTREQUEST_0_SELLERPAYPALACCOUNTID] => {seller's PayPal email address}
[PAYMENTREQUEST_0_PAYMENTACTION] => Order
)
[PAYMENTS] => Array
(
[0] => Array
(
[TRANSACTIONID] => {we get some transaction ID here}
[TRANSACTIONTYPE] => expresscheckout
[PAYMENTTYPE] => None
[ORDERTIME] => 2014-01-15T22:43:19Z
[AMT] => 123.00
[FEEAMT] =>
[SETTLEAMT] =>
[TAXAMT] => 0.00
[EXCHANGERATE] =>
[CURRENCYCODE] => EUR
[PAYMENTSTATUS] => Pending
[PENDINGREASON] => order
[REASONCODE] => None
[PROTECTIONELIGIBILITY] => None
[ERRORCODE] => 0
)
)
[REQUESTDATA] => Array
(
[USER] => {our API username}
[PWD] => {our API password}
[VERSION] => 98.0
[BUTTONSOURCE] => AngellEYE_PHPClass
[SIGNATURE] => {our API signature}
[METHOD] => DoAuthorization
[TRANSACTIONID] => {transaction ID we got from DoExpressCheckoutPayment}
[AMT] => 123
[CURRENCYCODE] => EUR
)
[ERRORS] => Array
(
[0] => Array
(
[L_ERRORCODE] => 10007
[L_SHORTMESSAGE] => Permission denied
[L_LONGMESSAGE] => You do not have permissions to make this API call
[L_SEVERITYCODE] => Error
)
)
花了一周的时间试图让它工作,谷歌搜索并浏览所有可用的文档试图找到我们是否必须有权调用DoAuthorization
API,我们是无能为力的。
如果这个问题太长,我们很抱歉,但我们希望您全面了解正在发生的事情以及我们如何使用PayPal API处理问题。如果知识渊博的人能够对这个问题有所了解,我们将感激不尽。
答案 0 :(得分:1)
通常,这种错误意味着它所说的内容,而您的PayPal帐户根本没有权限进行该特定呼叫。
您是否特别希望暂停资金?您可以运行DoCapture直接捕获订单,而无需在两者之间进行授权,但订单授权实际上并不持有资金,因此您需要联系PayPal以了解您获得的原因,这是您解决问题的重要部分那个错误。
您可以向www.paypal.com/mts提交门票,直接转到技术支持。他们最近在更快地回到门票方面做得更好,所以我肯定会尝试这一点。
平均而言,你可以试试手机支持,但是,普通手机代表往往不知道如何解决这样的问题,最终会导致更多的混乱。
在任何一种情况下,只要让他们知道您正在尝试调用DoAuthorization API,但是您收到此错误,他们应该能够帮助您找到问题并让您得到照顾。
如果您仍然无法获得帮助,请通知我,我可以直接与PayPal的某些联系人联系。
答案 1 :(得分:1)
好的,我有更新(有点)。我们收到PayPal MTS的回复,告诉我们在调用SUBJECT
时添加DoAuthorization
字段,并使用与PAYMENTREQUEST_0_SELLERPAYPALACCOUNTID
相同的值填充,这基本上是卖家的PayPal电子邮件地址。我们这样做了,这次我们从DoAuthorization
API获得以下回复:
[ERRORS] => Array
(
[0] => Array
(
[L_ERRORCODE] => 10002
[L_SHORTMESSAGE] => Authentication/Authorization Failed
[L_LONGMESSAGE] => You do not have permissions to make this API call
[L_SEVERITYCODE] => Error
)
)
因此错误代码从10007变为10002.现在我们仍在等待PayPal MTS的第二次响应,但与此同时我们缩小了问题范围,看来问题出在我们的API凭据(用户名,密码)和签名)。
基本上,我们使用我们的API凭据通过SetExpressCheckout
,GetExpressCheckoutDetails
和DoExpressCheckoutPayment
来接收与DoAuthorization
API一起使用的交易ID。现在,我们不是使用我们的API凭据(会失败)调用DoAuthorization
,而是尝试从http://quar.me/paypal/api/nvp/doauthorization调用它(使用本网站上的API凭据)。令我们惊讶的是,它成功了,并且交易已被授权(后来被捕获)成功。然后我们将来自该网站的API凭证复制到我们的应用程序以验证它是否有效,我可以确认它。
我们现在第一次感到困惑。当我们收到PayPal MTS的回复时,我会更新这个答案。与此同时,如果有人知道出了什么问题,请随时回复。
我们得到了PayPal MTS家伙的回复。这个问题有些奇怪;要调用DoAuthorization/DoVoid/DoCapture
等API调用,卖家需要向API用户名授予Auth/capture
权限。好吧,让我们说这是正常的。
奇怪的是:
Auth/capture
权限?我们甚至已成功使用我们的API凭据生成transaction ID
,然后使用上述网站的API凭据授权付款。好的,我们已经用PayPal MTS解决了这个问题。收回这些错误的原因是每个卖家都需要授予我们的API用户名权限,以便我们能够授权/捕获付款。这些可以通过卖方手动授予权限,也可以通过权限API实现。