1

我正在尝试访问支付网关。在银行的示例中,使用了一个简单的 html FORM,但我想通过 cURL 来完成。我的问题是当我尝试访问支付网关时没有看到 css(网关样式表)并且 javascript 失败。有什么办法可以避免这些错误?

    $url = sfConfig::get('app_tpv_url');

    $dsOrder = $this->getDSOrder($order);
    $dsAmount = (float)$order->getPriceWithShipping() * 100;
    $dsCurrency = sfConfig::get('app_tpv_merchant_currency');
    $dsMerchantCode = sfConfig::get('app_tpv_merchant_code');
    $dsName = sfConfig::get('app_tpv_merchant_name');
    $dsLanguage = ($this->getUser()->getCulture() == 'es') ? 1 : 2;
    $dsTerminal = sfConfig::get('app_tpv_merchant_terminal');
    $dsSignature = sfConfig::get('app_tpv_merchant_signature');
    $dsTransactionType = 0;

    sfProjectConfiguration::getActive()->loadHelpers('Url');
    $dsUrl = url_for('cart_ipn', array('sf_culture' => $this->getUser()->getCulture(),), true);

    $dsStringResult = $dsAmount + $dsOrder + $dsMerchantCode + $dsCurrency + $dsTransactionType + $dsSignature;
    $digest = sha1($dsStringResult);

    $options = array(
        'Ds_Merchant_Amount' => $dsAmount,
        'Ds_Merchant_Currency' => $dsCurrency,
        'Ds_Merchant_Order' => $dsOrder,
        'Ds_Merchant_MerchantCode' => $dsMerchantCode,
        'Ds_Merchant_MerchantName' => $dsName,
        'Ds_Merchant_ConsumerLanguage' => $dsLanguage,
        'Ds_Merchant_Terminal' => $dsTerminal,
        'Ds_Merchant_MerchantSignature' => $digest,
        'DS_Merchant_TransactionType' => $dsTransactionType,
        'Ds_Merchant_MerchantURL' => $dsUrl
    );

    $fields_string = '';
    foreach ($options as $key => $value) {
        $fields_string .= $key . '=' . $value . '&';
    }

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_USERAGENT, $this->getContext()->getRequest()->getHttpHeader('User-Agent'));

    curl_exec($ch);

    curl_close($ch);
4

0 回答 0