2017-09-08 108 views
1

我有Paypal REST Api計費(循環付款)問題。PayPal帳單REST Api Php問題

我的確如在PayPal文檔中一樣,但是當我點擊付款按鈕時,它會打開空白頁面(錯誤日誌中沒有錯誤)。

這裏是我做的:

前端按鈕

<form action="WEBSITE/subscribe/paypal/paypal_agreement.php" method="POST"> 
            <button type="submit" style="margin-top:10px;border: 0; background: transparent"> 
              <img src="WEBSITE/wp-content/uploads/2017/05/paypal.png" style = "width:170px;" alt="submit" /> 
            </button>         
        </form> 

paypal_agreement.php(複製/貝寶文檔粘貼)

<?php 
require_once("../../paypal/vendor/autoload.php"); 


$createdPlan = require 'paypal_createplan.php'; 

use PayPal\Api\Agreement; 
use PayPal\Api\Payer; 
use PayPal\Api\Plan; 
use PayPal\Api\ShippingAddress; 


$ppstartdate = date('c', time()+210); 

$agreement = new Agreement(); 
$agreement->setName('Title Agreement') 
    ->setDescription('Description Agreement') 
    ->setStartDate($ppstartdate); 

// Add Plan ID 
// Please note that the plan Id should be only set in this case. 
$plan = new Plan(); 
$plan->setId($createdPlan->getId()); 
$agreement->setPlan($plan); 
// Add Payer 
$payer = new Payer(); 
$payer->setPaymentMethod('paypal'); 

$agreement->setPayer($payer); 



// ### Create Agreement 
try { 
    // Please note that as the agreement has not yet activated, we wont be receiving the ID just yet. 
    $agreement = $agreement->create($apiContext); 
    // ### Get redirect url 
    // The API response provides the url that you must redirect 
    // the buyer to. Retrieve the url from the $agreement->getApprovalLink() 
    // method 
    $approvalUrl = $agreement->getApprovalLink(); 

    header("Location: ".$approvalUrl); 
} catch (Exception $ex) { 

    exit(1); 
} 


return $agreement; 

?> 

paypal_createplan.php(從PayPal文檔複製/粘貼)

<?php 
require_once("../../paypal/vendor/autoload.php"); 

use PayPal\Api\Currency; 
use PayPal\Api\MerchantPreferences; 
use PayPal\Api\PaymentDefinition; 
use PayPal\Api\Plan; 



// Create a new instance of Plan object 
$plan = new Plan(); 


// # Basic Information 
// Fill up the basic information that is required for the plan 
$plan->setName('Title Plan') 
    ->setDescription('Description Subscription Plan') 
    ->setType('fixed'); 


// # Payment definitions for this billing plan. 
$paymentDefinition = new PaymentDefinition(); 


// The possible values for such setters are mentioned in the setter method documentation. 
// Just open the class file. e.g. lib/PayPal/Api/PaymentDefinition.php and look for setFrequency method. 
// You should be able to see the acceptable values in the comments. 
$paymentDefinition->setName('Regular Payments') 
    ->setType('REGULAR') 
    ->setFrequency('Month') 
    ->setFrequencyInterval("1") 
    ->setCycles("6") 
    ->setAmount(new Currency(array('value' => 94.99, 'currency' => 'USD'))); 

$merchantPreferences = new MerchantPreferences(); 
$baseUrl = "https://websitelink.com"; 

$merchantPreferences->setReturnUrl("$baseUrl/subscribe/paypal/execute.php?success=true") 
->setCancelUrl("$baseUrl/subscribe/paypal/execute.php?success=false") 
->setAutoBillAmount("yes") 
->setInitialFailAmountAction("CONTINUE") 
->setMaxFailAttempts("0") 
->setSetupFee(new Currency(array('value' => 0, 'currency' => 'USD'))); 



// ### Create Plan 
try { 
    $output = $plan->create($apiContext); 
} catch (Exception $ex) { 

    exit(1); 
} 


return $output; 

?> 

execute.php(PayPal的文檔複製/粘貼)

<?php 
// #Execute Agreement 
// This is the second part of CreateAgreement Sample. 
// Use this call to execute an agreement after the buyer approves it 
require_once("../../paypal/vendor/autoload.php"); 

// ## Approval Status 
// Determine if the user accepted or denied the request 
if (isset($_GET['success']) && $_GET['success'] == 'true') { 
$token = $_GET['token']; 
$agreement = new \PayPal\Api\Agreement(); 
try { 
    // ## Execute Agreement 
    // Execute the agreement by passing in the token 
    $agreement->execute($token, $apiContext); 
} catch (Exception $ex) { 

    exit(1); 
} 


// ## Get Agreement 
// Make a get call to retrieve the executed agreement details 
try { 
    $agreement = \PayPal\Api\Agreement::get($agreement->getId(), $apiContext); 

    //done 
    header('Location: https://websitelink.com/subscribe/subscribe.php'); 


} catch (Exception $ex) { 

    exit(1); 
} 

} else { 
    $_SESSION['pmsg'] = $_SESSION['pmsg'].'<h2>Subscription Failed</h2>'; 
} 

但我找不到任何有關身份驗證的OAuth2任何東西(如例如用快速結賬),沒有在文檔。也許它不工作,因爲這個?

回答

0

變量$ APICONTEXT應該包含的PayPal應用程序認證&調用setConfig

0

是這樣的: 「變量$ APICONTEXT應該包含的PayPal應用程序認證&調用setConfig」

解決這個問題?:我擁有PayPal問題REST Api計費(循環付款)。我完全按照PayPal文檔的方式做,但是當我點擊付款按鈕時,它會打開空白頁面(錯誤日誌中沒有錯誤)。

我有一個類似的問題。請確認。我們如何獲得貝寶應用身份驗證& setConfig?

+0

是的,就是這樣!在我明白它應該包含認證和setConfig之前,我沒有注意這個變量。但掃描所有與貝寶代碼的文件,你會看到它無數次,你必須通過貝寶變量 – user1584043

+0

http://www.primitivecode.com/index.php?topic=-how%20to-integrate%20paypal% 20payment%20api-rest-instant-payment-php-sdk-install-composer-這裏是怎麼做的 – user1584043

+0

謝謝。但是我們仍然看到空白屏幕。 –