我有这个用于 paypal 单次付款调用的代码,并且想要添加一个 php 变量,其中价格为“value”:“.$planPrice”。 如果我输入任何数字而不是 $planPrice ,例如:“1000”,它可以正常工作,并且我会收到通知,但是当我添加 php 变量时,它会显示以下内容:
Fatal error: Uncaught exception 'InvalidArgumentException' with message 'Invalid JSON String' in C:\xampp\htdocs\website\paypal_payouts\PayPal-PHP-SDK\paypal\rest-api-sdk-php\lib\PayPal\Validation\JsonValidator.php:29 Stack trace: #0 C:\xampp\htdocs\website\paypal_payouts\PayPal-PHP-SDK\paypal\rest-api-sdk-php\lib\PayPal\Common\PayPalModel.php(50): PayPal\Validation\JsonValidator::validate('{\r\n ...') #1 C:\xampp\htdocs\website\paypal_payouts\CreateSinglePayout.php(67): PayPal\Common\PayPalModel->__construct('{\r\n ...') #2 C:\xampp\htdocs\website\admin\reports\paynow.php(19): include('C:\xampp\htdocs...') #3 {main} thrown in C:\xampp\htdocs\website\paypal_payouts\PayPal-PHP-SDK\paypal\rest-api-sdk-php\lib\PayPal\Validation\JsonValidator.php on line 29
这是php中的代码:
$senderItem = new \PayPal\Api\PayoutItem();
$senderItem->setRecipientType('Email')
->setNote('Thanks for your patronage!')
->setReceiver($coachUsername)
->setSenderItemId("2014031400023")
->setAmount(new \PayPal\Api\Currency("{
'value':".$planPrice.",
'currency':'USD'
}"));
最佳答案
You don't need to pass a JSON string to Paypal\Api\Currency
,使用数组会更简单:
$senderItem = new \PayPal\Api\PayoutItem();
$senderItem->setRecipientType('Email')
->setNote('Thanks for your patronage!')
->setReceiver($coachUsername)
->setSenderItemId("2014031400023")
->setAmount(new \PayPal\Api\Currency([
'value' => $planPrice,
'currency' => 'USD'
]));
但是如果必须使用 JSON,则它需要有效。 JSON 只允许字符串和键名使用双引号:
$senderItem = new \PayPal\Api\PayoutItem();
$senderItem->setRecipientType('Email')
->setNote('Thanks for your patronage!')
->setReceiver($coachUsername)
->setSenderItemId("2014031400023")
->setAmount(new \PayPal\Api\Currency('{
"value":'.$planPrice.',
"currency":"USD"
}'));
(我在这里假设 "value"
应设置为 JSON 数字。如果它应该是 JSON 字符串,请将倒数第三行替换为 "value": "' . $planPrice . '",
代替。)
关于json 中的 php 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35085940/