我正在尝试通过PHP SDK(沙箱环境)使用PayPal REST API创建和执行付款,如下所示。付款创建($payment->create
)运行正常,但付款执行($payment->execute
)返回"Incoming JSON request does not map to API request"
。
JSON请求是由SDK创建的,那么问题是什么呢?
提前谢谢。
$payer = new Payer();
$payer->setPaymentMethod("paypal");
$item = new Item();
$item->setName('Any name')
->setCurrency('EUR')
->setQuantity(1)
->setPrice(0.99);
$itemList = new ItemList();
$itemList->setItems(array($item));
$details = new Details();
$details->setTax(0)
->setSubtotal(0.99);
$amount = new Amount();
$amount->setCurrency('EUR')
->setTotal(0.99)
->setDetails($details);
$transaction = new Transaction();
$transaction->setAmount($amount)
->setItemList($itemList)
->setDescription('Any description')
->setInvoiceNumber(uniqid());
$redirectUrls = new RedirectUrls();
$redirectUrls->setReturnUrl(BASE_URL.'/payment/?success=true')
->setCancelUrl(BASE_URL.'/payment/?success=false');
$payment = new Payment();
$payment->setIntent('sale')
->setPayer($payer)
->setRedirectUrls($redirectUrls)
->setTransactions(array($transaction));
try {
$payment->create($apiContext);
$execution = new PaymentExecution();
$result = $payment->execute($execution, $apiContext);
} catch (Exception $ex) {
//Function for extract the error message,
//the error message can be showing with
//a simple var_dump($ex)
$exception = self::getException($ex);
}
答案 0 :(得分:0)
我不是PHP开发人员(.Net),因此根据上述内容,请在代码中查看此部分:
$execution = new PaymentExecution();
$result = $payment->execute($execution, $apiContext);
您正在发送新的 PaymentExecution
payer_id
和Payment.Id
,您将在之后获取 / em>用户批准您创建的paypal
付款请求。
那就是说,我没有看到那部分(虽然如上所述,不是PHP开发者)所以我可能错了。步骤是:
创建付款
进入审批流程 - >用户被重定向到Paypal并批准您在#1 - >中创建的付款并重定向回您的网站(returnUrl)
一个。 PayerID
将在此过程中的查询字符串中
湾paymentId
也将在此过程中的查询字符串中
用户从PayPal(您的returnUrl
) - Execute
新Payment
重定向回您的网站后,将其设置为{{ 1}}到你获得的那个(#2b),将id
的{{1}}设置发送到你获得的内容(#2a)
在c#中(你需要将它转换为PHP):
PaymentExecution
... H个
答案 1 :(得分:0)
这已经足够了
$payment->setIntent('authorize')
而不是
$payment->setIntent('sale')
并取消执行
$execution = new PaymentExecution(); $result = $payment->execute($execution, $apiContext);
然后,
之后$payment->create
我使用了
中的“href”$payment->links
进行重定向。一切都很顺利。谢谢大家。