OmnipayBridge 中的 OffsiteCaptureAction 似乎与 Omnipay/Mollie 网关不兼容。
OffsiteCaptureAction.php中的以下部分不兼容:
if (false == $details['returnUrl'] && $request->getToken()) {
$details['returnUrl'] = $request->getToken()->getTargetUrl();
}
如果您用以下代码行替换不兼容的部分,它可以工作:
if (false == $details['returnUrl'] && $request->getToken()) {
$details['returnUrl'] = $request->getToken()->getAfterUrl();
}
if (false == $details['notifyUrl'] && $request->getToken()) {
$details['notifyUrl'] = $request->getToken()->getTargetUrl();
}
Mollie 网关使用 notifyUrl 作为 webhook 来确认付款。这是付款中最重要的部分。在后台使用 webhook/notifyUrl 后,客户将被重定向到 returnUrl/AfterUrl。原始代码缺少 notifyUrl,并将客户重定向到付款确认 URL。
这些更改可能与其他网关不兼容。我只使用 Mollie,所以这对我来说不是什么大问题。
我为 0.14 分支做了一个分支:
https ://github.com/goemaere/OmnipayBridge/blob/0.14/src/Action/OffsiteCaptureAction.php#L43-L49