Как отобразить на моем веб-сайте данные кредитной карты, сохраненные PayPal, для существующих или постоянных клиентов?

Я храню данные кредитной карты на сервере PayPal и возвращаю код ниже.

stdClass Object
(
[id] => CARD-817429813C079815KKXSTCWI
[state] => ok
[payer_id] => user12345
[type] => visa
[number] => xxxxxxxxxxxx0331
[expire_month] => 11
[expire_year] => 2018
[first_name] => Joe1
[last_name] => Shopper1
[valid_until] => 2018-08-31T00:00:00Z
[create_time] => 2015-09-01T05:02:17Z
[update_time] => 2015-09-01T05:02:17Z
[links] => Array
(
[0] => stdClass Object
(
[href] => https://api.sandbox.paypal.com/v1/vault/credit-card/CARD-817429813C079815KKXSTCWI
[rel] => self
[method] => GET
)

[1] => stdClass Object
(
[href] => https://api.sandbox.paypal.com/v1/vault/credit-card/CARD-817429813C079815KKXSTCWI
[rel] => delete
[method] => DELETE
)

[2] => stdClass Object
(
[href] => https://api.sandbox.paypal.com/v1/vault/credit-card/CARD-817429813C079815KKXSTCWI
[rel] => patch
[method] => PATCH
)

)

)

.

у меня есть идентификатор как credit_card_id and payer_id
Как добиться ниже функциональности?

если существует или повторный покупатель покупает продукт в следующий раз, просто автоматически заполните данные кредитной карты от paypal так сэкономьте время для клиента

как отобразить данные кредитной карты клиента на моем веб-сайте, который уже хранится в paypal сервер?

пожалуйста, направь меня
МОИ ИСПЫТАНИЯ PHP и HTML данные ниже

<style>
.creditcard .float1 { float:left; }
</style>
<?php
$clientId="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
$secret="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";

$ipnexec = curl_init();
curl_setopt($ipnexec, CURLOPT_URL, "https://api.sandbox.paypal.com/v1/oauth2/token"); // test url

curl_setopt($ipnexec, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ipnexec, CURLOPT_POST, true);
curl_setopt($ipnexec, CURLOPT_USERPWD, $clientId.":".$secret);
curl_setopt($ipnexec, CURLOPT_POSTFIELDS, "grant_type=client_credentials");
//curl_setopt($ipnexec, CURLOPT_POSTFIELDS, $req);
//curl_setopt($ipnexec, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ipnexec, CURLOPT_RETURNTRANSFER, true);
//curl_setopt($ipnexec, CURLOPT_TIMEOUT, 30);
$ipnresult = curl_exec($ipnexec);
$result = json_decode($ipnresult);
echo "<pre>";
$access_token = $result->access_token;
//print_r($result->access_token);
$token_type = $result->token_type;
curl_close($ipnexec);


// phase 2 for credit card payment

$scope = "https://api.sandbox.paypal.com/v1/vault/credit-card";
$expire_month = 11;
$expire_year = 2018;
$first_name = "joe1";
$last_name = "shopper1";
$method = "storecreditcard";
$number = 4446283280247004;
$type = "visa";
$payer_id="manthan228@gmail.com";
$ch = curl_init();
//curl_setopt($ch, CURLOPT_HTTPHEADER, 1);
$data = '
{
"payer_id":"user12345",
"type":"visa",
"number":"4417119669820331",
"expire_month":"11",
"expire_year":"2018",
"first_name":"Joe1",
"last_name":"Shopper1"}
';
curl_setopt($ch, CURLOPT_URL,$scope);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json","Authorization: Bearer ".$access_token));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);


$result = curl_exec($ch);

if(empty($result))die("Error: No response.");
else
{
$json = json_decode($result);
print_r($json);
}
curl_close($ch);

/**************************** phase 3 ***********************************/
$ch = curl_init();

$data = '{
"intent":"sale",
"payer": {
"payment_method": "credit_card",
"funding_instruments": [
{
"credit_card_token":{
"credit_card_id":"'.$json->id.'",
"payer_id":"user12345"}
}
]
},
"transactions":[
{
"amount":{
"total":"7.47",
"currency":"USD"},
"description":"This is the payment transaction description."}
]
}
';

curl_setopt($ch, CURLOPT_URL, "https://api.sandbox.paypal.com/v1/payments/payment");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json","Authorization: Bearer ".$access_token));

$result = curl_exec($ch);


if(empty($result))die("Error: No response.");
else
{
$json = json_decode($result);
echo "<pre>";
print_r($json);
}



?>


<div class="creditcard" style="height:400px;width:400px; padding:2px;border:3px solid blue">
<p>card number</p>

<div style="border:1px solid grey;padding:2px 5px">
<?php echo $json->id ?>
</div>

<div>
<p>Name on card</p>
<div style="border:1px solid grey;padding:5px 5px">
<?php echo $json->first_name." ".$json->first_name ?>
</div>
<div class="float1">
<span>Expiry Month</span>
<span style="border:1px solid grey; padding:2px 5px;width:100px;padding:4px;"><?php echo $json->expire_month ?> </span>
</div>
<div class="float1">
<span>Expiry Year</span>
<span  style="border:1px solid grey;width:100px; padding:4px;"><?php echo $json->expire_year ?></span>
</div>
</div>

</div>

0

Решение

РЕДАКТИРОВАТЬ: в соответствии с комментариями, поскольку вы пытаетесь достичь сохраненного CC, вы можете использовать id предоставляемые Paypal в vault/credit-card называть как credit_card_id из payment звонки. Вот обзор платежей Paypal для Vault: https://developer.paypal.com/docs/integration/direct/rest-vault-overview/#use-a-stored-credit-card


ОРИГИНАЛЬНЫЙ ОТВЕТ

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

Вы можете вместо этого создать BillingAgreement. По сути, PayPal будет хранить данные CC для пользователя и запрашивать у него разрешение на получение будущих платежей на вашем сайте без вставки всех данных. После этого у вас будет идентификатор биллингового соглашения, который вы сможете использовать для последующих платежей. Посмотреть здесь:
https://developer.paypal.com/docs/classic/express-checkout/ht_ec-refTrans-SetEC-DoRefTrans-curl-etc/

1

Другие решения

Других решений пока нет …