2013-04-01 20 views
9

我一直在使用PayPal IPN接收和處理付款,並將transactionId存儲爲參考。如何從transactionId獲取payKey?

現在已經可以通過我正在開發的系統來退款,現在已經到了掙扎的時候了。

使用時輸入的transactionId到上一個更新的PHP SDK的GetPaymentDetails.php樣品payKey領域,具有正確的認證信息和應用程序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。

現在我卡住了。我收集了數千個live 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

你能分享你的NVP字符串嗎?一定要清除證書。我使用API​​從我開發的系統(不使用他們的SDK)發出退款,我也使用transactionID。 –

+0

我想我給主帖增加了你要求的內容 –

+0

我們去了,內容:) –

回答

2

我有一個建議:

我想你都保存在你的數據庫的事務ID ,

循環所有記錄,獲得事務ID,通過獲得事務ID的paykey和更新相關訂單,

那麼你可以有交易和paykey價值,共同爲一個記錄。

+0

是的,我試圖弄清楚的是如何從交易中獲得payKey ID。謝謝 –

+0

請查閱此文件。 https://www.paypalobjects.com/webstatic/en_US/developer/docs/pdf/ipnguide.pdf – Naeem