我一直在使用PayPals IPN接收和处理付款,并将transactionId存储为参考。
现在是时候通过我正在开发的系统退款,这就是斗争。
当使用在更新的PHP SDK中的GetPaymentDetails.php
示例的payKey字段中输入transactionId时,使用正确的身份验证详细信息和应用程序ID,我得到:
Error ID: 580022
Domain: PLATFORM
Severity: Error
Category: Application
Message: Invalid request parameter: payKey with value [REMOVED (transactionId)]
Parameter: Array
这是可以理解的,因为它期待一个payKey。现在,我可以根据规范将$pdRequest->payKey = $payKey;
更改为$pdRequest->transactionId = $payKey;
。现在应该将transactionId作为transactionId发送并运行,但我得到了响应:
Error ID: 520002
Domain: PLATFORM
Severity: Error
Category: Application
Message: Internal Error
好的,所以有些东西被打破了。我怀疑他们现在不允许将transactionId用作参考,并且没有更新他们的文档(典型)。我怀疑这是因为我使用的原始SDK包括transactionId的字段,以及trackingId和另一个标识符。但现在更新的SDK只要求payKey。
现在我被卡住了。我已经收集了数千个实时transactionIds。你知道我如何为每笔交易获得payKey,或者解决原始问题。
由于
以下是发送的HTTP标头:
X-PAYPAL-SECURITY-SIGNATURE: [removed]
X-PAYPAL-SECURITY-USERID: [removed]
X-PAYPAL-SECURITY-PASSWORD: [removed]
X-PAYPAL-APPLICATION-ID: [removed]
X-PAYPAL-REQUEST-SOURCE: PHP_SOAP_SDK_V1.4
X-PAYPAL-DEVICE-IPADDRESS: 127.0.0.1
X-PAYPAL-MESSAGE-PROTOCOL: SOAP11
X-PAYPAL-REQUEST-SOURCE: PHP_SOAP_SDK_V1.4
这是内容
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body><PaymentDetailsRequest>
<requestEnvelope>
<errorLanguage>en_US</errorLanguage>
</requestEnvelope>
<transactionId>[removed]</transactionId>
</PaymentDetailsRequest></soap:Body>
</soap:Envelope>
要
https://svcs.paypal.com/AdaptivePayments/PaymentDetails
答案 0 :(得分:2)
我有一个建议:
我想您已将所有交易ID保存在数据库中,
循环显示所有记录,获取交易ID,按交易ID获取支付关键字并更新相关订单,
然后您可以将交易和支付键值一起用于单个记录。
答案 1 :(得分:1)
paypal官方网站上已有资源。 这是文档的链接 https://cms.paypal.com/mx/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_APPaymentDetails
它声明您可以传递payKey或transactionID。并且两者都作为响应返回,因此您可以获得payKey&amp; TRANSACTIONID。
如果您在使用api时遇到任何问题,可以在此处找到paypal API入门教程http://coding.smashingmagazine.com/2011/09/05/getting-started-with-the-paypal-api/
答案 2 :(得分:1)
使用PaymentDetails API Operation中的现有跟踪ID。 payKey和有关付款的其他信息将作为回复返回。