我正试图通过omnipay桥将Mollie整合到sylius payumbundle中。这就是我的配置:
sylius_payment:
gateways:
mollie: Mollie
payum:
contexts:
mollie:
omnipay_onsite:
type: Mollie
options:
apiKey: test_...
它工作正常,但在付款程序后,Mollie重定向回来,我收到以下错误:
transactionReference参数是必需的
有人成功地将sylius与Mollie合并了吗?
答案 0 :(得分:1)
似乎OmnipayBridge的OffsiteCaptureAction与Omnipay / Mollie网关不兼容。
following part from 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,并将客户重定向到付款确认网址。
这些更改可能与其他网关不兼容。我只使用Mollie所以对我来说这不是一个大问题。
我为0.14分支做了一个分叉: https://github.com/goemaere/OmnipayBridge/blob/0.14/src/Action/OffsiteCaptureAction.php#L43-L49