无法在通知和成功url SOFORT API中获取响应参数

时间:2017-11-08 11:31:00

标签: zend-framework zend-framework2 payum

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文档和成功网址,请无法找到任何帮助或指南?

2 个答案:

答案 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