Как проверить учетную запись PayPal?
Я хочу интегрировать paypal на свой веб-сайт и попросить пользователей ввести PayPal-аккаунт для оплаты комиссии.
Как я могу проверить, существует ли их учетная запись в PayPal?
Я предпочитаю НЕ посылать им $0,01, или это единственный способ проверить аккаунт?
Он должен проверять его автоматически, когда пользователь регистрируется на веб-сайте.
Ответы
Ответ 1
Попробуйте использовать API-интерфейс PayPal AddressVerify: https://www.x.com/docs/DOC-1161
AddressVerify также может проверить правильность адреса пользователя и почтового индекса.
Обратите внимание, что доступ к API AddressVerify по умолчанию не предоставляется Paypal. Вы должны подать запрос на поддержку клиентов, чтобы получить доступ к нему в песочнице, а затем снова связаться с ним, чтобы его можно было одобрить на реальном сайте.
Ответ 2
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 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>
Ответ 3
вы можете попросить их ввести адрес электронной почты, который они используют в PayPal. и если у них нет учетной записи на paypal, вы все равно можете отправить их на любую электронную почту, которую они вводят. Paypal позаботится о том, чтобы заставить их создать учетную запись PayPal с этим идентификатором электронной почты и показать им свои средства.
все, что вам может потребоваться, это то, что они вводят правильный идентификатор электронной почты. Возможно, шаг проверки адреса электронной почты может сделать трюк.
Ответ 4
С 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();
.....
Ответ 5
Я реализовал следующий script в PHP для метода GetVerifiedStatus с вызовом API, и он отлично работает для меня. Этот script предназначен для песочницы, поэтому, если вы хотите протестировать его, проверьте его с помощью учетных записей 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;
?>
Ответ 6
Наличие подтвержденной учетной записи PayPal означает, что вы предоставили дополнительную информацию PayPal для подтверждения своей идентификации. Это дает потенциальным клиентам больше уверенности в вашей легитимности и квалифицирует вас для покрытия в рамках защиты продавца PayPal. При проверке вашей учетной записи также удаляются ограничения учетной записи и вы можете переводить деньги между учетной записью PayPal и другими связанными банковскими счетами.