我正在尝试找到一些在PayPal帐户有效期内不会改变的硬标识符,
似乎REST API有自己的用户标识符(当范围具有 openid 时,可以从 openidconnect / userinfo 资源返回)
不幸的是,此ID不是Adaptive API在发出PayRequest时所期望的:
sender.accountId :帐户ID值(与Express Checkout API中使用的付款人ID值相同)。帐户ID值是加密的PayPal帐户ID。
这很令人困惑,我理解REST API与Adaptive API不同,并且使用电子邮件是不够的,因为我们需要将标识符长期存储在我们的数据库中,用户可以通过PayPal更改他的电子邮件地址,
谢谢,
阿萨夫。
答案 0 :(得分:0)
使用预先批准的付款时,您不需要发件人ID。预批准密钥本身与批准它的发件人有关。
以下是使用预先批准密钥进行付款的示例请求和响应,该密钥在没有任何发件人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="">usb_1329725429_biz@angelleye.com</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>usb_1329725429_biz@angelleye.com</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。