Как подтвердить учетную запись PayPal?

Я хочу интегрировать PayPal на свой сайт и попросить пользователей войти в аккаунт PayPal для выплаты комиссии. Как я могу проверить, существует ли их учетная запись на PayPal? Я предпочитаю НЕ отправлять им 0,01 доллара, или это единственный способ проверить счет?

Он должен проверять его автоматически, когда пользователь регистрируется на веб-сайте.


person Andrey    schedule 12.07.2010    source источник


Ответы (5)


GetVerifiedStatus должен помочь. Вам нужно будет передать адрес электронной почты и имя человека, и тогда он вернет, подтверждена ли его учетная запись.

Если у них нет учетной записи PayPal, вы получите сообщение об ошибке «Невозможно определить статус учетной записи PayPal».

Вот образец запроса и ответа, который я только что запустил в песочнице для проверенной учетной записи PayPal ...

<?xml version="1.0" encoding="utf-8"?>
<GetVerifiedStatusRequest xmlns="http://svcs.paypal.com/types/ap">
  <requestEnvelope xmlns="">
    <detailLevel>ReturnAll</detailLevel>
    <errorLanguage>en_US</errorLanguage>
  </requestEnvelope>
  <emailAddress xmlns="">[email protected]</emailAddress>
  <matchCriteria xmlns="">NAME</matchCriteria>
  <firstName xmlns="">Drew</firstName>
  <lastName xmlns="">Angell</lastName>
</GetVerifiedStatusRequest>

<?xml version='1.0' encoding='UTF-8'?>
<ns2:GetVerifiedStatusResponse xmlns:ns2="http://svcs.paypal.com/types/aa">
  <responseEnvelope>
    <timestamp>2013-01-05T00:07:01.729-08:00</timestamp>
    <ack>Success</ack>
    <correlationId>3fecb3e1f2011</correlationId>
    <build>4055066</build>
  </responseEnvelope>
  <accountStatus>VERIFIED</accountStatus>
  <userInfo>
    <emailAddress>[email protected]</emailAddress>
    <accountType>BUSINESS</accountType>
    <accountId>E7BTGVXBFSUAU</accountId>
    <name>
      <salutation></salutation>
      <firstName>Drew</firstName>
      <middleName></middleName>
      <lastName>Angell</lastName>
      <suffix></suffix>
    </name>
    <businessName>Drew Angell's Test Store</businessName>
  </userInfo>
</ns2:GetVerifiedStatusResponse>

А вот образец запроса и ответа, когда аккаунт PayPal не существует ...

<?xml version="1.0" encoding="utf-8"?>
<GetVerifiedStatusRequest xmlns="http://svcs.paypal.com/types/ap">
  <requestEnvelope xmlns="">
    <detailLevel>ReturnAll</detailLevel>
    <errorLanguage>en_US</errorLanguage>
  </requestEnvelope>
  <emailAddress xmlns="">[email protected]</emailAddress>
  <matchCriteria xmlns="">NAME</matchCriteria>
  <firstName xmlns="">Drew</firstName>
  <lastName xmlns="">Angell</lastName>
</GetVerifiedStatusRequest>

<?xml version='1.0' encoding='UTF-8'?>
<ns3:FaultMessage xmlns:ns3="http://svcs.paypal.com/types/common" xmlns:ns2="http://svcs.paypal.com/types/aa">
  <responseEnvelope>
    <timestamp>2013-01-05T00:08:28.581-08:00</timestamp>
    <ack>Failure</ack>
    <correlationId>43364ce704211</correlationId>
    <build>4055066</build>
  </responseEnvelope>
  <error>
    <errorId>580023</errorId>
    <domain>PLATFORM</domain>
    <subdomain>Application</subdomain>
    <severity>Error</severity>
    <category>Application</category>
    <message>Cannot determine PayPal Account status</message>
  </error>
</ns3:FaultMessage>
person Drew Angell    schedule 05.01.2013
comment
Проблема заключается в том, что пользователю также необходимо ввести имя и фамилию ТОЧНО в том виде, в каком оно указано в его учетной записи PayPal, иначе это не удастся. - person Doug S; 15.10.2013
comment
@DougS Вам не нужно имя пользователя, если вы установите поле matchCriteria на NONE - person robmcvey; 31.10.2013
comment
@robmcvey PayPal не позволяет использовать matchCriteria = NONE. Они резервируют эту способность исключительно для избранных своих партнеров. Поверьте, я пробовал. Наша компания была одобрена для доступа к API PayPal в течение многих лет, но они не принесут результатов при matchCriteria = NONE. - person Doug S; 04.11.2013
comment
Ответ, который я получил от PayPal, заключался в том, что matchCriteria = NONE зарезервирован для использования только крупнейшими клиентами. Они никому не доверяют. Не могу думать о какой-либо угрозе безопасности при проверке, проверена ли электронная почта учетной записи, поэтому PayPal просто PITA. @Andrew: да, многие пользователи все время предоставляют неверную информацию и не вводят ее одинаково в каждой системе. Жаль, что PayPal ограничивает это. - person Jordan; 03.11.2014

вы можете попросить их ввести адрес электронной почты, который они используют в PayPal. и если у них нет учетной записи в PayPal, вы все равно можете отправлять им средства на любой адрес электронной почты, который они вводят. Paypal позаботится о том, чтобы они создали учетную запись PayPal с этим идентификатором электронной почты и покажут им свои средства.

все, что вам может потребоваться, это убедиться, что они вводят правильный идентификатор электронной почты ... возможно, шаг проверки адреса электронной почты может помочь.

person Kinjal Dixit    schedule 12.07.2010
comment
Он должен проверять его автоматически при регистрации пользователя. - person Andrey; 12.07.2010
comment
Вы имеете в виду, что хотите проверить, есть ли у них действующая учетная запись PayPal, прежде чем отправлять им деньги? у вас должна быть уникальная проблема, потому что я бы просто попросил их ввести свой идентификатор PayPal и предположить, что они все делают правильно, отправил им деньги и покончил с этим. именно они должны беспокоиться о вводе правильной информации, а не вы. если вы не даете деньги людям, которые не особо заинтересованы в их получении ... я имею в виду, что вы должны иметь уникальную проблему. - person Kinjal Dixit; 13.07.2010
comment
Примечание: API-интерфейсы MassPay и Payments НЕ будут отправлять деньги на адрес электронной почты, на который не был зарегистрирован аккаунт! - person David Murdoch; 05.02.2016

С помощью Java (мы можем сделать что-то вроде Adaptiveaccountssdk)

<dependency>
    <groupId>com.paypal.sdk</groupId>
    <artifactId>adaptiveaccountssdk</artifactId>
    <version>LATEST</version>
</dependency>

...

Map<String, String> sdkConfig = new HashMap<>();
sdkConfig.put("mode", "sandbox/live");
sdkConfig.put("acct1.UserName", "");
sdkConfig.put("acct1.Password", ""));
sdkConfig.put("acct1.Signature", ""));
sdkConfig.put("acct1.AppId", ""));

GetVerifiedStatusRequest request = new GetVerifiedStatusRequest();
AccountIdentifierType accountIdentifierType = new AccountIdentifierType();
accountIdentifierType.setEmailAddress(accountEmail);
request.setAccountIdentifier(accountIdentifierType);
request.setMatchCriteria("NONE");
AdaptiveAccountsService aas = new AdaptiveAccountsService(sdkConfig);
GetVerifiedStatusResponse response = aas.getVerifiedStatus(request);
String status = response.getAccountStatus();

.....

person sojin    schedule 21.12.2014
comment
Гарантирует ли этот код, что учетная запись пользователя будет проверена? Я получаю эту ошибку ... ИНФОРМАЦИЯ: responseEnvelope.timestamp = 2015-12-17T01% 3A14% 3A59.665-08% 3A00 & responseEnvelope.ack = Failure & responseEnvelope.correlationId = 9ee14ddcd7e99 & responseEnvelope.build = 18679799 & error (0) .error23 & error (0) .error23 & error (0). .domain = PLATFORM & error (0) .subdomain = Application & error (0) .severity = Error & error (0) .category = Application & error (0) .message = Cannot + define + PayPal + Account + status Вы или кто-нибудь, пожалуйста, помогите !!? - person Abdullah Khan; 17.12.2015

Я реализовал следующий скрипт в PHP для метода GetVerifiedStatus с вызовом API, и он отлично работает для меня. Этот сценарий предназначен для песочницы, поэтому, если вы хотите его протестировать, проверьте его с помощью учетных записей PayPal в песочнице. Если вы хотите использовать его для производственного режима, удалите строки для песочницы (я показал их в подсказках в комментариях). Я объяснил, что вам нужно получить от PayPal для запуска этого кода, в комментариях PHP.

<?php
// create a new cURL resource
$ch = curl_init();

$ppUserID = "******************"; //Take it from   sandbox dashboard for test mode or take it from paypal.com account in production mode, help: https://developer.paypal.com/docs/classic/api/apiCredentials/
$ppPass = "*************"; //Take it from sandbox dashboard for test mode or take it from paypal.com account in production mode, help: https://developer.paypal.com/docs/classic/api/apiCredentials/
$ppSign = "********************"; //Take it from sandbox dashboard for test mode or take it from paypal.com account in production mode, help: https://developer.paypal.com/docs/classic/api/apiCredentials/
$ppAppID = "***********"; //if it is sandbox then app id is always: APP-80W284485P519543T
$sandboxEmail = "********************"; //comment this line if you want to use it in production mode.It is just for sandbox mode

$emailAddress = "******************"; //The email address you wana verify
$firstName = "********"; //first name of the account holder you want to verify, sandbox personal account default first name is: test
$lastName = "*******"; //last name of the account holder you want to verify, sandbox personal account default last name is: buyer

//parameters of requests
$nvpStr = 'emailAddress='.$emailAddress.'&firstName='.$firstName.'&lastName='.$lastName.'&matchCriteria=NAME';

// RequestEnvelope fields
$detailLevel    = urlencode("ReturnAll");   // See DetailLevelCode in the WSDL for valid enumerations
$errorLanguage  = urlencode("en_US");       // This should be the standard RFC 3066 language identification tag, e.g., en_US
$nvpreq = "requestEnvelope.errorLanguage=$errorLanguage&requestEnvelope.detailLevel=$detailLevel";
$nvpreq .= "&$nvpStr";
curl_setopt($ch, CURLOPT_POSTFIELDS, $nvpreq);

$headerArray = array(
"X-PAYPAL-SECURITY-USERID:$ppUserID",
"X-PAYPAL-SECURITY-PASSWORD:$ppPass",
"X-PAYPAL-SECURITY-SIGNATURE:$ppSign",
"X-PAYPAL-REQUEST-DATA-FORMAT:NV",
"X-PAYPAL-RESPONSE-DATA-FORMAT:JSON",
"X-PAYPAL-APPLICATION-ID:$ppAppID",
"X-PAYPAL-SANDBOX-EMAIL-ADDRESS:$sandboxEmail" //comment this line in production mode. IT IS JUST FOR SANDBOX TEST 
);

$url="https://svcs.sandbox.paypal.com/AdaptiveAccounts/GetVerifiedStatus";
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headerArray);
$paypalResponse = curl_exec($ch);
//echo $paypalResponse;   //if you want to see whole PayPal response then uncomment it.
curl_close($ch);

$data = json_decode($paypalResponse);

if($data->responseEnvelope->ack == "Success"){
$output = array('status' => true); //means user is verified successfully
} else {
$output = array('status' => false); //means verification was unsuccessful
}

echo $output;

?>
person Iman Sedighi    schedule 23.04.2015

Наличие подтвержденной учетной записи PayPal означает, что вы предоставили PayPal дополнительную информацию для подтверждения своей личности. Это дает потенциальным клиентам больше уверенности в вашей легитимности и дает вам право на защиту продавца PayPal. Проверка вашей учетной записи также снимает ограничения на счет и позволяет вам переводить деньги между своим счетом PayPal и другими связанными банковскими счетами.

person CharlesJohnson    schedule 26.08.2014