2013-09-24 109 views
0

我試圖找到一些硬標識符PayPal賬戶生命週期內不改變,PayPal用戶標識符

這似乎是REST API都有自己的用戶標識符(可從openidconnect返回/用戶信息時,範圍已經的OpenID資源)

不幸的是,這個ID是不是發出PayRequest當自適應API期待什麼:

發件人。 accountId:帳戶ID值(與Express Checkout API中使用的Payer ID值相同)。帳戶ID值是加密的PayPal帳戶ID。

這是混亂的,我理解的REST API比自適應API不同,使用電子郵件是不夠的,因爲我們需要存儲在我們的數據庫中的標識符長期的,用戶可以通過PayPal改變了他的電子郵件地址,

謝謝,

Asaf。

+0

你在做什麼,你需要存儲付款人的ID?如果您需要代表其他用戶進行API調用,而這些用戶的權限API(如您所說的基於令牌的API)則發揮作用。 –

+0

我知道您可以獲得Payer ID的唯一方法是讓用戶手動輸入,或者在Express Checkout流程中從GetExpressCheckoutDetails中獲取。 –

+0

我無法申請令牌,因爲它需要用戶干預,使用PayRequest我可以在將來處理付款,而不需要任何用戶交互,因爲預先批准已經批准,並且PayRequest需要senderId。 – asaf000

回答

0

使用預先批准的付款時,您不需要發件人ID。預批准密鑰本身涉及批准它的發件人。

下面是使用preapproval密鑰進行支付的示例請求和響應,該密鑰在沒有任何發件人ID的情況下工作得很好。

請求

<?xml version="1.0" encoding="utf-8"?> 
<PayRequest xmlns="http://svcs.paypal.com/types/ap"> 
    <requestEnvelope xmlns=""> 
    <detailLevel>ReturnAll</detailLevel> 
    <errorLanguage>en_US</errorLanguage> 
    </requestEnvelope> 
    <actionType xmlns="">PAY</actionType> 
    <cancelUrl xmlns="">http://paypal.angelleye.com/paypal/class/1.2/Pay_Cancel.php</cancelUrl> 
    <clientDetails xmlns=""> 
    <applicationId xmlns="">APP-80W284485P519543T</applicationId> 
    <ipAddress xmlns="">192.168.1.1</ipAddress> 
    </clientDetails> 
    <currencyCode xmlns="">USD</currencyCode> 
    <preapprovalKey xmlns="">PA-2AY45015CC5060422</preapprovalKey> 
    <receiverList xmlns=""> 
    <receiver xmlns=""> 
     <amount xmlns="">5.00</amount> 
     <email xmlns="">[email protected]</email> 
    </receiver> 
    </receiverList> 
    <sender> 
    <useCredentials xmlns=""></useCredentials> 
    </sender> 
    <account xmlns=""> 
    <phone xmlns=""></phone> 
    </account> 
    <returnUrl xmlns="">http://paypal.angelleye.com/paypal/class/1.2/Pay_Return.php</returnUrl> 
</PayRequest> 

響應

<?xml version='1.0' encoding='UTF-8'?> 
<ns2:PayResponse xmlns:ns2="http://svcs.paypal.com/types/ap"> 
    <responseEnvelope> 
    <timestamp>2013-09-24T13:57:52.350-07:00</timestamp> 
    <ack>Success</ack> 
    <correlationId>2fa4316b879b9</correlationId> 
    <build>7767516</build> 
    </responseEnvelope> 
    <payKey>AP-5632737798659023M</payKey> 
    <paymentExecStatus>COMPLETED</paymentExecStatus> 
    <paymentInfoList> 
    <paymentInfo> 
     <transactionId>53664474R26308454</transactionId> 
     <transactionStatus>COMPLETED</transactionStatus> 
     <receiver> 
     <amount>5.00</amount> 
     <email>[email protected]</email> 
     <primary>false</primary> 
     <accountId>C9TAVNJFATXCS</accountId> 
     </receiver> 
     <pendingRefund>false</pendingRefund> 
     <senderTransactionId>3CV49919EJ546411E</senderTransactionId> 
     <senderTransactionStatus>COMPLETED</senderTransactionStatus> 
    </paymentInfo> 
    </paymentInfoList> 
    <sender> 
    <accountId>E7BTGVXBFSUAU</accountId> 
    </sender> 
</ns2:PayResponse> 

可以看到上面的響應實際上包括它知道基於在請求中提供的預先批准密鑰的發送者ID。

+0

我是在談論'接收者'標籤而不是發件人,它應該包含電子郵件或accountId,我想收集接收者AHEAD的accountId,但是當用戶登錄時,我無法得到它的其餘部分用於獲取用戶詳細信息的API僅暴露了openID用戶ID,因此我需要一些API資源或其他方式來檢索提前檢索的ID。謝謝! – asaf000