我用的是PHP Paypal SDK:https://github.com/paypal/PayPal-PHP-SDK
通过PHP SDK引用PayPal REST API返回“传入JSON请求未映射到API请求”
继续https://stackoverflow.com/questions/39827032/paypal-how-to-get-payment-id-on-basis-of-transaction-id
根据已经可用的交易Id,需要获得付款Id
我已经尝试了下面的代码
require __DIR__ . '/bootstrap.php';
use PayPal\Api\Amount;
use PayPal\Api\Details;
use PayPal\Api\Item;
use PayPal\Api\ItemList;
use PayPal\Api\CreditCard;
use PayPal\Api\Payer;
use PayPal\Api\Payment;
use PayPal\Api\FundingInstrument;
use PayPal\Api\Transaction;
// Extra Code
use PayPal\Api\PaymentDetail;
$payer = new Payer();
$payer->setPaymentMethod('paypal');
$transaction = new PaymentDetail(
'{
"method" : "CASH",
"date" : "2014-07-06 03:30:00 PST",
"note" : "Cash received."
}'
);
$transaction->setTransactionId("3NT32794KF4824703");
$payment = new Payment();
$payment->setIntent("sale")
->setPayer($payer)
->setTransactions(array($transaction));
// For Sample Purposes Only.
$request = clone $payment;
try {
$payment->create($apiContext);
} catch (\PayPal\Exception\PayPalConnectionException $ex) {
echo $ex->getData();
}
echo "<pre>";
print_r($payment);
exit;
当我运行上面的代码时,它给出了下面的错误
{"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":"aa8bfa2a41f1f"}
PayPal\Api\Payment Object
(
[_propMap:PayPal\Common\PayPalModel:private] => Array
(
[intent] => sale
[payer] => PayPal\Api\Payer Object
(
[_propMap:PayPal\Common\PayPalModel:private] => Array
(
[payment_method] => paypal
)
)
[transactions] => Array
(
[0] => PayPal\Api\PaymentDetail Object
(
[_propMap:PayPal\Common\PayPalModel:private] => Array
(
[method] => CASH
[date] => 2014-07-06 03:30:00 PST
[note] => Cash received.
[transaction_id] => 3NT32794KF4824703
)
)
)
)
)
如何解决上述错误?请指导
PayPal技术支持的回应
经过与开发团队的讨论和测试,他们确认您不能使用TransactionId来检索PaymentId。PaymentId是在初始REST API调用时生成的。这仅发生在REST API上。
交易 ID 可以在 REST API 执行付款、经典 API [NVP/SOAP] DoEC API 或正常按钮付款完成后生成。反向搜索以查找付款ID将永远无法工作。
至于现在,您唯一的解决方法是记录每个REST API请求,无论它是否失败以跟踪PaymentId。
需要实现:一旦付款完成,它将被搁置。X天后,它将被处理。处理后,金额将从客户的账户中扣除。
首先,您使用进行付款创建请求
$payment = new Payment();
$payment->setIntent("sale")
->setPayer($payer)
->setRedirectUrls($redirectUrls)
->setTransactions(array($transaction));
$payment->create($apiContext);
>
在创建响应中,您将获得“apporval url”,该批准url用于用户在那里付款。
然后,您将通过“$redirectUrls”中发送的url接收来自paypal的通知。
在这里,您将获得“付款ID”和“付款人ID”,使用该ID执行付款。
$execution = new PaymentExecution();
$execution->setPayerId($da['PayerID']);
$apiContext=$this->apicontext();
$res = $payment->execute($execution, $apiContext);
带有消息“访问https://api.sandbox.paypal.com/v1/payments/payments/payment时获得Http响应代码400”的异常“PayPal\exception\PaypalConnectionException”。“在/var/www/html/vendor/paypal/rest-api-sdk-php/lib/paypal/core/paypalht
我试图通过PHP SDK(沙箱环境)创建并执行一个与PayPal REST API的支付,如下所示。支付创建()工作良好,但支付执行()返回。JSON请求是由SDK创建的,那么会有什么问题呢?提前道谢。
从控制器返回Html页面时获取此错误 org.springframework.web.servlet.页未找到noHandler已找到警告:没有找到HTTP请求与URI[/SpringMVCDemo/WEB-INF/response.html]在DispatcherServlet名称调度器映射 放在哪里response.html? 这是我的密码
我写了一个spring boot项目。它有三个文件。 appconfig.java HelloController.java 当我尝试运行它时,它出现了错误“没有为名为'DispatcherServlet中URI[/springc1_01/]的HTTP请求找到映射”。这是因为服务器没有找到控制器还是其他原因?THX.
很抱歉再次问这种问题,但我无法通过查看其他线程和Spring doc来解决我的问题。 我正在使用maven的3.1.0.RELEASE,并尝试使用注释和java配置。 以下是我的web.xml: 这是我的档案web-application-config.xml. 我有两个类。第一个配置视图解析器 第二个定义我的控制器: 根据我的配置,我想一切都应该指向我的home()函数。然而,事实并非如此,以下
这是我的控制器,它将请求映射到以下url