Zintegrowałem interfejs API Identity PayPala na mojej stronie internetowej. Jak zwykle, gdy użytkownik kliknie login with paypal
(JavaScript button), otworzy nowe okno dla celów logowania. Ale po prawidłowym logowaniu przekierowuje mnie do tego samego okna.Przekierowanie PayPal do tego samego okna popup:
Uwaga: Wymieniłem moją domenę jako domain
App powrót URL (test):http://domain.esy.es/index.php/users/paypalidentity
Zobacz
//url http://domain.esy.es/index.php
<span id="paypalButton"></span>
<script src="https://www.paypalobjects.com/js/external/api.js"></script>
<script>
paypal.use(["login"], function(login) {
login.render ({
"appid": MYAPPID,
"authend": "sandbox",
"scopes": "openid email profile address phone https://uri.paypal.com/services/paypalattributes",
"containerid": "paypalButton",
"locale": "en-us",
"returnurl": "http://domain.esy.es/index.php/users/paypalidentity"
});
});
</script>
Controller
//url http://domain.esy.es/index.php/users/paypalidentity
require_once __DIR__ . '/../../vendor/autoload.php';
$apicontext = new PPApiContext(array('mode' => 'sandbox'));
$code = $_REQUEST['code'];
$apicontext = new PPApiContext(array('mode' => 'sandbox'));
$params = array(
'client_id' => MYCLIENTID,
'client_secret' => MYSECRET,
'code' => $code
);
$token = PPOpenIdTokeninfo::createFromAuthorizationCode($params,$apicontext);
$apicontext = new PPApiContext(array('mode' => 'sandbox'));
$params = array('access_token' => $token->getAccessToken());
$user = PPOpenIdUserinfo::getUserinfo($params,$apicontext);
$this->session->set_userdata(
array(
'name'=>$user->getName()
)
);
redirect(base_url());
udanym logowaniu
Przekierowanie do skonfigurowanego przekierowania
Na pewno trzeba dodać wyzwalacz close() z systemu PayPal javascript na zwrotnym adresie URL. W rzeczywistości procedura będzie polegać na utworzeniu oddzielnego URL-a zwrotnego, który nie ma nic poza tą akcją close(). PayPal przekieruje się do niego, ale natychmiast się zamknie, pozostawiając ekran tak, jak chcesz. Jest szczegółowo opisany w dokumentach. Zobaczę, czy mogę go znaleźć i zamieścić oficjalną odpowiedź. –
Ostatnia odpowiedź robi to, o co prosiłeś - zaznacz to. – kape123
Świetne pytanie. Jest czerwiec 2016, a PayPal nadal nie wyjaśnił, jak to zrobić. – Green