好的,这几天我一直在努力解决这个问题。我正在将支付流程构建到一个 PHP 应用程序中,该应用程序将允许在客户批准付款后追加销售产品。
我可以毫无问题地向客户收取付款,但如果他们选择任何需要更改订单价值的追加销售产品,那么即使它遵循我可以找到的文档中的内容,我也会收到错误...
下面是我正在使用的测试函数,这是当用户在批准付款后被重定向回网站时调用的函数。
public function confirmOrder($payer_id, $payment_id, $incentives = false){
//GET PAYMENT
$payment = Payment::get($payment_id, $this->apiContext);
//CREATE EXECUTION WITH PAYER ID
$execution = new PaymentExecution();
$execution->setPayerId($payer_id);
//APPLY PAYMENT AMOUNT - Original amount was 7.00
$amount = new Amount();
$amount = $amount->setCurrency('GBP')->setTotal('8.00');
//PATCH REPLACE
$patchReplace = new Patch();
$patchReplace = $patchReplace->setOp('replace')->setPath('/transactions/0/amount')->setValue($amount);
//CREATE PATCH OBJECT
$patchRequest = new PatchRequest();
$patchRequest = $patchRequest->setPatches(array($patchReplace));
try {
$payment->update($patchRequest, $this->apiContext);
} catch (PayPalConnectionException $ex) {
return "PATCH ERROR: State(" . $payment->getState() . ") ".$ex->getData();
}
}
这不是我将使用的最终代码,但现在我只是想在构建更多逻辑之前更新订单。这段代码给了我以下错误:
PATCH ERROR: State(created) {"name":"PAYMENT_STATE_INVALID","message":"由于当前的付款状态,此请求无效","information_link":" https://developer.paypal.com/ webapps/developer/docs/api/#PAYMENT_STATE_INVALID ","debug_id":"9caacdc1d652b"}
您可以看到我正在输出 getState() ,它作为“已创建”返回,这通常可以更新我能找到的所有内容,但它仍然失败。
有没有其他人有使用 PayPal PHP SDK 的经验并且可以帮助我指出正确的方向?