Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php paypal网站支付专业版托管解决方案Iframe的工作示例?_Php_Iframe_Paypal_Website Payment Pro - Fatal编程技术网

Php paypal网站支付专业版托管解决方案Iframe的工作示例?

Php paypal网站支付专业版托管解决方案Iframe的工作示例?,php,iframe,paypal,website-payment-pro,Php,Iframe,Paypal,Website Payment Pro,我希望使用paypals,这样我们就可以通过paypal接受付款,而不会让我们的用户感觉他们要离开网站,也不必遵守PCI 我们希望它以这种形式工作: 用户点击物品的购买页面,选择数量并点击立即购买按钮 AJAX请求被发送到服务器以验证数量/计算总数等 AJAX请求返回iframe的url Iframe用页面填充,然后在加载完成后显示Iframe 用户填写信用卡详细信息,paypal完成交易 paypal重定向iframe的成功页面调用父页面中的一些javascript重定向到另一个url。 所以

我希望使用paypals,这样我们就可以通过paypal接受付款,而不会让我们的用户感觉他们要离开网站,也不必遵守PCI

我们希望它以这种形式工作:

用户点击物品的购买页面,选择数量并点击立即购买按钮 AJAX请求被发送到服务器以验证数量/计算总数等 AJAX请求返回iframe的url Iframe用页面填充,然后在加载完成后显示Iframe 用户填写信用卡详细信息,paypal完成交易 paypal重定向iframe的成功页面调用父页面中的一些javascript重定向到另一个url。 所以, 我有数量选择页面, 我知道如何将数据发送到服务器并验证数量/计算总数

我不知道如何做的是从这一点上发送请求贝宝获得的iframe的url

作为一个非常基本的独立示例,我尝试做的是:

<?php

class paypal {

    private $APIuser;
    private $APIpass;
    private $APIsign;
    private $APIvers = '74.0';  
    private $APIaddr = 'https://api-3t.sandbox.paypal.com/nvp';
    private $post_params = array();

    function __construct($APIuser, $APIpass, $APIsign){
        $this->APIuser = $APIuser;
        $this->APIpass = $APIpass;
        $this->APIsign = $APIsign;
    }

    function param($name, $value = null){
        $this->post_params[$name] = $value;
        return $this;
    }

    function getUrl(){

        $post = $this->post_params;
        $post['pwd']        = $this->APIpass;
        $post['user']       = $this->APIuser;
        $post['method']     = 'BMCreateButton';
        $post['version']    = $this->APIvers;
        $post['signature']  = $this->APIsign;
        $post['buttoncode'] = 'CLEARTEXT';
        $post['buttontype'] = 'PAYMENT';

        $post_string = '?';
        foreach($post as $k => $v)
            $post_string .= $k.'='.urlencode($v).'&';

        $post_string = substr($post_string, 0, -1);

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $this->APIaddr.$post_string);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        $out = curl_exec($ch);
        curl_close($ch);

        $out = explode('&', $out);
        $final = array();
        foreach($out as $k => &$v){
            $v = explode('=', $v);
            $final[$v[0]] = urldecode($v[1]);
        }
        return $final;
    }
}

//mock variables
$price = 10.00;
$APIu  = 'xxxxxxxxxx';
$APIp  = 'xxxxxxxxxx';
$APIs  = 'xxxxxxxxxx';  


$paypal = new paypal($APIu, $APIp, $APIs);
$paypal->param('L_BUTTONVAR0=subtotal', $price*$_GET['quantity']);
$paypal->param('L_BUTTONVAR1=template', 'templateD');
$resp = $paypal->getUrl();
?>
<iframe width="100%" height=100%" src="<?php echo $resp['EMAILLINK']; ?>"></iframe>
在你输入你的测试买家信用卡详细信息并被击中之前,这一方法一开始似乎很有效

请返回付款页面并更正地址


我做错了什么/我需要做什么才能让它工作?

实际上,请尝试以下API调用,并让我知道这是否适合您:

方法=BMCreateButton& 按钮类型=付款& BUTTONCODE=令牌& L_按钮AR0=小计=11& L_按钮AR1=税=2& L_按钮AR2=装运=3& L_按钮AR3=操纵=4&
L_BUTTONVAR4=template=templateC

如果您不确定,请务必查看官方文档-@ajreal:我知道!事实上,在看了八个小时他们称之为文档的可怕的混乱之后,这就是我想到的!因此,我请求帮助!LMGTFY-可能的副本为。。古怪的您能在PayPal商户技术服务处登录一张票据吗?他们将能够从自己的角度挖掘日志,因为如果没有关键信息,这将很难调试。