public function sofyAction()
{
$args = [ 'config_key' => $this->getConfigKey() ];
$sofy = new Api($args);
$helper = $this->getServiceLocator()->get('ViewHelperManager')->get('ServerUrl');
$successUrl = $helper($this->url()->fromRoute('sofort_response'));
$params = [
'amount' => 1500,
'currency_code' => 'EUR',
'reason' => 'Vouhcer Order',
'success_url' => $successUrl,
'customer_protection' => false,
'notification_url' => 'MY_PRIVATE_RESPONSE_URL',
];
$trans = $sofy->createTransaction($params);
return $this->redirect()->toUrl($trans['payment_url']);
}
如何获取响应和交易ID,如通知网址中的API文档和成功网址,请无法找到任何帮助或指南?
答案 0 :(得分:0)
最简单的方法是让Payum为您做与通知相关的工作。为此,您可以:
必须使用Payum的令牌工厂手动创建通知令牌(我不确定它是否存在于Zend模块中,它已经很老了)。将令牌用作notification_url。而已。 Sofort会向该网址和Payum does the rest发送请求。
确保将令牌工厂传递给网关对象,然后注入以捕获操作对象。将notification_url字段留空,Payum将generate新的字段。
使用您自己的网址作为通知,然后添加您需要的所有信息(作为查询字符串)。我不推荐它,因为你暴露敏感数据,曾经可以尝试利用它。
答案 1 :(得分:0)
我以这种方式解决,方法是将?trx=-TRANSACTION-
附加成功和通知网址,而不是作为回应,我收到了交易ID作为参数,后来加载了与transactionId
的TransactionData。 Payum Token方式对我不起作用!显然必须使用其配置键来创建 Payum/Sofort/Api
isnstance,
请求:强>
$args = [ 'config_key' => $sofortConfigKey ];
$sofortPay = new Api($args);
// ?trx=-TRANSACTION- will append transacion ID as response param !
$params = [
'amount' => $coupon['price'],
'currency_code' => $coupon['currency'],
'reason' => $coupon['description'],
'success_url' => $successUrl.'?trx=-TRANSACTION-',
'abort_url' => $abortUrl.'?trx=-TRANSACTION-',
'customer_protection' => false,
'notification_url' => '_URL_'.'?trx=-TRANSACTION-',
];
$transactionParams = $sofortPay->createTransaction($params);
return $this->redirect()->toUrl($transactionParams['payment_url']);
<强>响应:强>
$args = [ 'config_key' => $configKey ];
$sofy = new Api( $args );
$transNumber = $this->getRequest()->getQuery('trx');
$fields = $sofy->getTransactionData($transNumber);
从API文档中获取帮助。 Payum文档最糟糕。 SOFORT API DOC