【发布时间】:2014-05-15 18:52:36
【问题描述】:
我在我的网页中集成了 PayPal 的身份 API。像往常一样,当用户单击login with paypal(JavaScript button) 时,它会打开一个新窗口以进行登录。但在有效登录后,它会将我重定向到同一个弹出窗口。
注意:我将我的域名替换为domain
应用返回网址(测试): http://domain.esy.es/index.php/users/paypalidentity
查看
//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>
控制器
//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());
成功登录
重定向到配置的重定向 URL
【问题讨论】:
-
很确定您需要在您的返回 URL 上添加来自 PayPal javascript 的 close() 触发器。实际上,该过程将是创建一个单独的返回 URL,该 URL 只有这个 close() 操作。 PayPal 会重定向到它,但随后它会立即关闭,让您按照自己的意愿将屏幕留在后面。文档中有详细说明。让我看看我能不能找到它并发布一个官方答案。
-
最后一个答案符合您的要求 - 标记它。
-
好问题。现在是 2016 年 6 月,PayPal 还没有解释如何操作。
标签: javascript php redirect paypal