【问题标题】:Sofort: Get Reponse After Successfull paymentSofort:支付成功后得到响应
【发布时间】:2017-11-11 08:32:41
【问题描述】:

我正在尝试通过 sofort 集成成功付款后取回响应,但没有得到任何响应;

Error:   Error: 7000:Invalid XML.

这里是成功函数:

public function successAction()
{   

    $configkey = 'my_key';

    $SofortLib_Notification = new Notification();

    $TestNotification = $SofortLib_Notification->getNotification(file_get_contents('php://input'));

    echo $SofortLib_Notification->getTransactionId();
    echo '<br />';
    echo $SofortLib_Notification->getTime();
    echo '<br />';

    $SofortLibTransactionData = new TransactionData($configkey);

    $SofortLibTransactionData->addTransaction($TestNotification);

    $SofortLibTransactionData->setApiVersion('2.0');

    $SofortLibTransactionData->setTime('2012-11-14T18:00+02:00', '2012-12-13T00:00+02:00');
    $SofortLibTransactionData->setNumber(5, 1);

    $SofortLibTransactionData->sendRequest();

     echo '<pre>'; print_r($SofortLibTransactionData);
    //exit();
    $output = array();
    $methods = array(
        'getAmount' => '',
        'getAmountRefunded' => '',
        'getCount' => '',
        'getPaymentMethod' => '',
        'getConsumerProtection' => '',
        'getStatus' => '',
        'getStatusReason' => '',
        'getStatusModifiedTime' => '',
        'getLanguageCode' => '',
        'getCurrency' => '',
        'getTransaction' => '',
        'getSenderAccountNumber' => '',
        'getSenderBankCode' => '',
        'getSenderCountryCode' => '',
        'getSenderBankName' => '',
        'getSenderBic' => '',
        'getSenderIban' => '',
        );

    foreach($methods as $method => $params) {
        if(count($params) == 2) {
            $output[] = $method . ': ' . $SofortLibTransactionData->$method($params[0], $params[1]);
        } else if($params !== '') {
            $output[] = $method . ': ' . $SofortLibTransactionData->$method($params);
        } else {
            $output[] = $method . ': ' . $SofortLibTransactionData->$method();
        }
    }

    if($SofortLibTransactionData->isError()) {
        echo $SofortLibTransactionData->getError();
    } else {
        echo implode('<br />', $output);
    }

    // $sofortTans = new TransactionData;
    // echo '<pre>';print_r($sofortTans);
    // $viewModel = new ViewModel(array('status' => $sofortTans));
    // $viewModel->setTemplate('layout/pay_done');

    // return $viewModel;
}

这里是我的控制器中发送请求的 Action 方法,您能指导我如何获取响应吗?

$configkey = 'my_config_key';

$Sofortueberweisung = new SofortUeberWeisung($configkey);

$Sofortueberweisung->setAmount($request->getPost('grandtotal_price'));
$Sofortueberweisung->setCurrencyCode('EUR');
$Sofortueberweisung->setReason('Single Coupon Order', 'Voucher Codes');
$Sofortueberweisung->setSuccessUrl('http://localhost:8088/payment/success', false);
$Sofortueberweisung->setCustomerprotection(true);

$Sofortueberweisung->sendRequest();

if($Sofortueberweisung->isError()) {
// SOFORT-API didn't accept the data

    echo $Sofortueberweisung->getError();
} else {

// get unique transaction-ID useful for check payment status
    $transactionId = $Sofortueberweisung->getTransactionId();
// buyer must be redirected to $paymentUrl else payment cannot be successfully completed!
    $paymentUrl = $Sofortueberweisung->getPaymentUrl();
    $this->redirect()->toUrl($paymentUrl);
//header('Location: '.$paymentUrl);
}

我正在使用这个 API 库,Sofort API Library

【问题讨论】:

    标签: php zend-framework2 response payment-gateway payum


    【解决方案1】:

    使用您的success_url 添加参数?transId=-TRANSACTION-,然后您将能够从响应中获得它!

    $transNumber = $this->getRequest()->getQuery('transId');
    $fields = $sofortObj->getTransactionData($transNumber);
    

    您在$fields 中拥有所有交易数据

    【讨论】:

      猜你喜欢
      • 2017-08-04
      • 1970-01-01
      • 2019-09-04
      • 1970-01-01
      • 2013-03-26
      • 2013-01-24
      • 2013-11-03
      • 2021-10-07
      • 1970-01-01
      相关资源
      最近更新 更多