【问题标题】:Paypal PHP SDK Error贝宝 PHP SDK 错误
【发布时间】:2017-01-15 18:27:19
【问题描述】:

所以我想将贝宝付款集成到我的网站。

我尝试直接从贝宝集成贝宝按钮表单,但它存在问题。可以通过轻松检查元素并更改price 输入来更改产品的价格。

我发现了 Paypal PHP SDK,所以我通过 composer 安装了它。我遇到的问题是当我希望用户为产品付费时。

我复制并粘贴了在here 找到的创建付款方式。但我得到了错误:

Notice: Undefined variable: apiContext in C:\xampp\htdocs\paypal\index.php on line 62

Fatal error: Class 'ResultPrinter' not found in C:\xampp\htdocs\paypal\index.php on line 64

我知道我收到了这个错误,因为我没有初始化这个变量。我不知道在哪里创建它以及它必须包含什么变量。有谁知道如何完全整合它?

非常感谢任何帮助。提前致谢!

这是我的完整 PHP 代码:

<?php

require 'vendor/autoload.php';
use PayPal\Api\Amount;
use PayPal\Api\Details;
use PayPal\Api\Item;
use PayPal\Api\ItemList;
use PayPal\Api\Payer;
use PayPal\Api\Payment;
use PayPal\Api\RedirectUrls;
use PayPal\Api\Transaction;

$payer = new Payer();
$payer->setPaymentMethod("paypal");

$item1 = new Item();
$item1->setName('Ground Coffee 40 oz')
    ->setCurrency('USD')
    ->setQuantity(1)
    ->setSku("123123") // Similar to `item_number` in Classic API
    ->setPrice(7.5);
$item2 = new Item();
$item2->setName('Granola bars')
    ->setCurrency('USD')
    ->setQuantity(5)
    ->setSku("321321") // Similar to `item_number` in Classic API
    ->setPrice(2);

$itemList = new ItemList();
$itemList->setItems(array($item1, $item2));

$details = new Details();
$details->setShipping(1.2)
    ->setTax(1.3)
    ->setSubtotal(17.50);

$amount = new Amount();
$amount->setCurrency("USD")
    ->setTotal(20)
    ->setDetails($details);

$transaction = new Transaction();
$transaction->setAmount($amount)
    ->setItemList($itemList)
    ->setDescription("Payment description")
    ->setInvoiceNumber(uniqid());

//I changed the base url and the return url's to mine.
$baseUrl = "http://www.localhost/paypal";
$redirectUrls = new RedirectUrls();
$redirectUrls->setReturnUrl("$baseUrl/ExecutePayment.php?success=true")
    ->setCancelUrl("$baseUrl/ExecutePayment.php?success=false");

$payment = new Payment();
$payment->setIntent("sale")
    ->setPayer($payer)
    ->setRedirectUrls($redirectUrls)
    ->setTransactions(array($transaction));

$request = clone $payment;

try {
    $payment->create($apiContext);
} catch (Exception $ex) {
    ResultPrinter::printError("Created Payment Using PayPal. Please visit the URL to Approve.", "Payment", null, $request, $ex);
    exit(1);
}

$approvalUrl = $payment->getApprovalLink();

ResultPrinter::printResult("Created Payment Using PayPal. Please visit the URL to Approve.", "Payment", "<a href='$approvalUrl' >$approvalUrl</a>", $request, $payment);

return $payment;

【问题讨论】:

    标签: php paypal


    【解决方案1】:

    您似乎还没有定义$apiContext。我对这个 SDK 不是很熟悉,但看起来你可以像这样创建一个:

    $apiContext = new \Paypal\Rest\ApiContext(
        new \PayPal\Auth\AuthTokenCredential(
            $clientId,
            $clientSecret
        )
    );
    

    reference

    您需要输入您从 PayPal 获得的 $clientId$clientSecret

    【讨论】:

      猜你喜欢
      • 2016-07-18
      • 2013-12-12
      • 2013-01-22
      • 2017-03-09
      • 2018-06-12
      • 2019-08-08
      • 2014-09-06
      • 2014-08-25
      • 2015-09-14
      相关资源
      最近更新 更多