Paypal CC直接付款错误

Paypal CC Direct Payment error

我需要一些帮助来弄清楚 paypal 的 API,我想做的只是 运行 向我的沙盒帐户抄送费用,我一直在查看他们的文档和代码样本,但我现在找不到正确的信息,比如在哪里添加沙盒端点。所以,当我 运行 下面的函数时,我得到以下错误:

string(213) "{"name":"MALFORMED_REQUEST","message":"Incoming JSON request does not map to API request","information_link":"https://developer.paypal.com/webapps/developer/docs/api/#MALFORMED_REQUEST","debug_id":"6eb15180f8d92"}"

这是我正在调用的函数:

public static function ccPayment($paymentInfo, $credentials)
{

$apiContext = new \PayPal\Rest\ApiContext(
    new \PayPal\Auth\OAuthTokenCredential(
        $credentials['clientId'],
        $credentials['secret']
    )
);

$card = new CreditCard();
$card->setType("visa")
    ->setNumber("xxxxxxxxxxxxxxxx")
    ->setExpireMonth("11")
    ->setExpireYear("2019")
    ->setCvv2("012")
    ->setFirstName("Joe")
    ->setLastName("Shopper");

$fi = new FundingInstrument();
$fi->setCreditCard($card);


$payer = new Payer();
$payer->setPaymentMethod("credit_card")
      ->setFundingInstruments(array($fi));

$item1 = new Item();
$item1->setName('Ground Coffee 40 oz')
    ->setDescription('Ground Coffee 40 oz')
    ->setCurrency('USD')
    ->setQuantity(1)
    ->setTax(0.3)
    ->setPrice(7.50);

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

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

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

// $request = clone $payment;

try
{
    $payment->create($apiContext);
}
catch (Exception $ex)
{
    dd($ex->getData());
}

dd($paymentInfo);

}

从早上开始就一直在编码,所以我现在需要另一双眼睛,因为我看不出自己做错了什么。我将不胜感激任何帮助。

PS。道歉,如果它是愚蠢的。例如。缺少逗号。

谢谢。

成功了!!这是工作代码:

$apiContext = new \PayPal\Rest\ApiContext(
    new \PayPal\Auth\OAuthTokenCredential(
        $credentials['clientId'],
        $credentials['secret']
    )
);

$apiContext->setConfig(
  array(
    'log.LogEnabled' => true,
    'log.FileName' => '../app/storage/paypal/PayPal.log',
    'log.LogLevel' => 'FINE'
  )
);

$card = new CreditCard();
$card->setType("visa")
    ->setNumber("xxxxxxxxxxxxxxxxx")
    ->setExpireMonth("11")
    ->setExpireYear("2019")
    ->setCvv2("012")
    ->setFirstName("Joe")
    ->setLastName("Shopper");

$fi = new FundingInstrument();
$fi->setCreditCard($card);

$payer = new Payer();
$payer->setPaymentMethod("credit_card")
    ->setFundingInstruments(array($fi));

$item1 = new Item();
$item1->setName('Ground Coffee 40 oz')
    ->setDescription('Ground Coffee 40 oz')
    ->setCurrency('USD')
    ->setQuantity(1)
    ->setPrice(49.99);

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

$details = new Details();
$details->setSubtotal(49.99);

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

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

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

try
{
    $payment->create($apiContext);
}
catch (Exception $ex)
{
    dd($ex->getData());
}

dd($payment);

我缺少新的金额和新的详细信息。此外,为了便于记录,您的货币总额必须相加。例如。税收,小计,总计。