【问题标题】:Working Of Paypal Rest APIPaypal Rest API 的工作
【发布时间】:2014-04-16 16:46:29
【问题描述】:

我无法正确理解 Paypal API。我正在尝试了解用于付款的 PHP SDK。

我也尝试查看Paypal Integration

我无法理解的是。

  1. 不需要用户登录吗?

  2. 使用 Paypal 存储信用卡的真正含义是什么。这是否意味着信用卡存储在 API 中或信用卡存储在 Paypal 用户的配置文件中

  3. 我应该如何在其中进行定期付款。我了解我需要使用信用卡 ID 来获取所有信用卡详细信息,然后进行付款。这是否意味着,我必须将信用卡 ID 存储在我的数据库中,从而将其用于未来的定期付款/订阅?我是否还必须存储付款人 ID?

  4. 我应该如何获取用户的详细信息。如果说第一点是错误的并且确实需要用户登录,那么我应该如何获取已经存储在该用户帐户中的信用卡详细信息?

  5. 我不希望用户访问 Paypal 的网站,我的意思是,付款应该完全在我的网站上进行,而不需要重定向到 Paypal。我该怎么做呢?

能否请您逐步向我解释如何进行付款(使用 Paypal API 进行定期付款)。我不需要任何代码,只需要知道它是如何工作的、采取什么步骤以及何时进行安全付款。

【问题讨论】:

    标签: php paypal


    【解决方案1】:

    以下是有关 RESTful API 的信息:

    1. PayPal 付款需要重定向到 PayPal。某些国家/地区支持信用卡直接付款,请联系here
    2. 当您使用 Vault 时,PayPal 会将卡信息交换为卡 ID,您稍后将使用该卡 ID 向该客户收费。更多信息可以在here找到。
    3. 是的,您需要存储卡 ID 和付款人 ID(如果使用),以便以后参考这些信息向客户收费。如果您最初在存储卡时使用付款人 ID,那么您稍后还需要在付款时将其与卡 ID 一起传递。可以在上面 #2 中的链接所在的同一页面上找到更多信息。
    4. PayPal 不会向您提供来自客户 PayPal 帐户的卡详细信息。如果您想稍后从客户的卡中扣款,则需要使用保险柜功能。同样,请记住,由于 Vault 使用 Direct Credit Card 进行处理,您必须在受支持的国家/地区注册(上面 #1 中的链接)。
    5. 请参考上面的#1。

    【讨论】:

      【解决方案2】:
      1. 只有在使用 PayPal 帐户付款时才需要登录。如果您订阅了 Website Payments Pro,您可以在没有 PayPal 帐户的情况下使用他们的信用卡
      2. 每当您使用 PayPal 进行信用卡交易时,PayPal 都会为您提供交易 ID。您可以使用 DoReferenceTransaction(经典 API)再次运行卡
      3. Recurring Payments 是一个单独的订阅和一组单独的 API 调用。但 PayPal 会根据您的设置管理您的定期帐单
      4. 除非您保存用户的信用卡详细信息(有些由于 PCI 的原因无法保存,例如 CVV2),否则您以后将无法获取它们。
      5. 如果您订阅Website Payments Pro 和定期付款(必须同时拥有),您可以在您的网站上使用他们的信用卡。但是(根据 PayPal 的服务条款),您还必须提供快速结帐选项

      【讨论】:

        【解决方案3】:

        尝试下面的 IPN 代码:

        $postipn = 'cmd=_notify-validate';
        $orgipn = '';
        foreach ($_POST as $key => $value)
        {    
                $postipn .= '&' . $key . '=' . urlencode (stripslashes ($value));
        }
        
        // post back to PayPal system to validate
        $header .= "POST /cgi-bin/webscr HTTP/1.0\r\n";
        $header .= "Host: www.sandbox.paypal.com\r\n"; // for sandbox
        //$header .= "Host: www.paypal.com\r\n"; // for live
        $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
        $header .= "Content-Length: " . strlen($postipn) . "\r\n\r\n";        
        
        $port = fsockopen ('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30); // for sandbox
        //$port = fsockopen ('www.paypal.com', 80, $errno, $errstr, 30);// for live
        
        if ((!$port AND !$error))
        {
                echo $error .= 'Problem: Error Number: ' . $errno . ' Error String: ' . $errstr;
                exit ();
                return 1;
        }
        
        fputs ($port, $header . $postipn);
        while (!feof ($port))
        {
                $reply = fgets ($port, 4000);
                $reply = trim ($reply);
        }
        
        //if (!strcmp ($reply, 'VERIFIED'))
        if (strcmp ($reply, "VERIFIED") == 0)
        {
                if ($payment_status == 'Pending')
                {
                        //logtransaction ('PayPal', $orgipn, 'Pending');
                        exit ();
                }
        
                $idnumber = $_POST['custom'];                    
        
                // your code here                                                        
                        $update_status_query = "Update booking_name SET `status` = 'Confirmed' WHERE `registration_number` = '".$idnumber."' ";
                        mysql_query($update_status_query);
        }
        
        fclose ($port);
        exit ();
        ?>
        

        了解更多详情:http://blog.phpcode.co.in/php/paypal-integration/

        【讨论】:

          猜你喜欢
          • 2016-01-06
          • 2016-07-16
          • 2016-09-21
          • 2015-05-20
          • 2014-12-26
          • 2013-08-16
          • 2011-12-12
          • 2018-02-04
          相关资源
          最近更新 更多