php PayPal重定向到同一个弹出窗口

eeq64g8w  于 5个月前  发布在  PHP
关注(0)|答案(4)|浏览(46)

我在我的网页中集成了PayPal的身份API。像往常一样,当用户点击login with paypalJavaScript button)时,它会打开一个新窗口用于登录。但在有效登录后,它会将我重定向到同一个弹出窗口。
注意:我将域名替换为domain

应用返回URL(测试):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

zmeyuzjn

zmeyuzjn1#

我遇到了确切的问题,但解决方案在这里的文档中:
https://developer.paypal.com/docs/classic/express-checkout/digital-goods/ClosingWindow/
请参阅“将父页面添加到特定URL”并将此脚本添加到返回和取消页面。

<script>
    top.window.opener.location ='http://your-url-here.html';
    // if you want to close the window
    // window.close();
</script>

字符串

0h4hbjxa

0h4hbjxa2#

您需要在返回URL中添加关闭操作(并且很可能使用一个单独的URL作为返回URL,其中除了关闭操作之外什么都没有)。
看看Adaptive Payments documentation,在那一页上查找close这个词,它会直接带你到介绍如何处理这个问题的部分。
注意事项:在PayPal重定向到返回或取消URL中指定的页面后,您有责任关闭迷你浏览器。PayPal提供了一个JavaScript函数,您可以调用该函数关闭PayPal迷你浏览器或灯箱。

lawou6xi

lawou6xi3#

设置top.window.opener.location将更新您原来的“opener”窗口。您还需要通过调用top.close()关闭对话框。这只是尝试结合其他两个答案并分享我在他们的帮助下得出的解决方案。请注意,此代码位于“opener”窗口以外的url中。

<script src="https://www.paypalobjects.com/js/external/api.js"></script>
<script>
top.window.opener.location ='http://yourdomain.com';
top.close();
</script>

字符串

lxkprmvk

lxkprmvk4#

还有几点要添加。fullPage选项目前没有效果,并且:
1.如果用户在弹出窗口中登录,则重定向发生在弹出窗口中,而不是父页面
1.如果用户之前已经登录并按下“继续”,则重定向发生在父页面中,弹出窗口将关闭。
要区分它们,请检查top.window.opener是否为null

if (top.window.opener) {
    top.window.opener.location = window.location.href;
    top.close();
}

字符串

相关问题