0

抱歉英语不好。我的网站服务器 ip 无法连接到我的支付银行网站,这个脚本是:

$client = new nusoap_client('https://pgws.bpm.bankmellat.ir/pgwchannel/services/pgw?wsdl');

我需要连接到另一台服务器,而不是连接到银行网站。

对于另一台服务器,我使用这个脚本,如代理:

<?php header('Content-type: text/xml'); $file = file_get_contents('https://pgws.bpm.bankmellat.ir/pgwchannel/services/pgw?wsdl');echo $file;?> 

在第二个服务器中并在我的原始脚本中使用我的第二个 directadmin 主机域作为原始 url:

$client = new nusoap_client('http://seccond-host-domain.com');

但这会产生很多错误,因为这个脚本传输文件,我认为我的想法不能做到这一点。

错误是:

HTTP Error: server failed to send headers

有人说应该使用 curl,有人说使用代理服务器。但我已经尝试过了,我无法解决这个问题。我没主意了。请查看详细清晰的说明

我的完整脚本是:

<?php if ($_POST['PayRequestButton'] == 'settel') { SETTEL_PROCCES();} function SETTEL_PROCCES(){


require_once("./lib/nusoap.php");



    $client = new nusoap_client('https://pgws.bpm.bankmellat.ir/pgwchannel/services/pgw?wsdl');

    $namespace='http://interfaces.core.sw.bps.com/';

    $terminalId = $_POST['termID'];

    $userName = $_POST['username'];

    $userPassword = $_POST['password'];

    $orderId = $_POST['orderID'];

    $settleSaleOrderId = $_POST['orderID'];

    $settleSaleReferenceId = $_POST['ReferenceId'];





                        // Check for an error

                        $err = $client->getError();

                        if ($err) {

                            echo '<h2>Constructor error</h2><pre>' . $err . '</pre>';

                            die();

                        }



                        $parameters = array(

                            'terminalId' => $terminalId,

                            'userName' => $userName,

                            'userPassword' => $userPassword,

                            'orderId' => $orderId,

                            'saleOrderId' => $settleSaleOrderId,

                            'saleReferenceId' => $settleSaleReferenceId);



                        // Call the SOAP method

                        $result = $client->call('bpSettleRequest', $parameters, $namespace);



                        // Check for a fault

                        if ($client->fault) {

                            echo '<h2>Fault05</h2><pre>';

                            print_r($result);

                            echo '</pre>';

                            die();

                        } 

                        else {

                            $resultStr = $result;



                            $err = $client->getError();

                            if ($err) {

                                // Display the error

                                echo '<h2>Error</h2><pre>' . $err . '</pre>';

                                die();

                            } 

                            else {

                                // Update Table, Save Settle Status 

                                // Note: Successful Settle means that sale is settled.

                                //echo "<script>alert('Settle Response is : " . $resultStr . "');</script>";

                            //  echo "Settle Response is : " . $resultStr;

                            }// end Display the result

                        }// end Check for errors    



    echo "

<br><br><br><br><br><br><br>

<center>

<table dir=rtl width=400 height=40 cellpadding=2 cellspacing=1 bgcolor='#7c931a'><tr><td bgcolor='#f6fff0' style='font-family:tahoma; font-size:12px; color:#738b3b; ' align=center >

<br>



<span style='font-size:14px;' >".check_mellat_state_error($resultStr)." 



<br><br>

<a href='default.php'>صفحه اصلي</a>

<br><br>

</td></tr></table>

</center>

";} function check_mellat_state_error($ResCode){

switch($ResCode){

    case '0' :

        $prompt="تراکنش با موفقيت انجام شد.";

        break;

    case '11' :

        $prompt="شماره کارت نامعتبر است.";

        break;

    case '12' :

        $prompt="موجودي کافي نيست.";

        break;

    case '13' :

        $prompt="رمز نادرست است.";

        break;

    case '14' :

        $prompt="تعداد دفعات وارد کردن رمز پيش از حد مجاز است.";

        break;

    case '15' :

        $prompt="کارت نامعتبراست.";

        break;

    case '17' :

        $prompt="کاربر از انجام تراکنش منصرف شده است.";

        break;

    case '18' :

        $prompt="تاريخ انقضاي کارت گذشته است.";

        break;

    case '111' :

        $prompt="صادرکننده کارت نامعتبر است.";

        break;

    case '112' :

        $prompt="خطاي سوييچ صادرکننده کارت";

        break;

    case '113' :

        $prompt="پاسخ از صادرکننده کارت دريافت نشد.";

        break;

    case '114' :

        $prompt="دارنده کارت مجاز به انجام اين تراکنش نيست.";

        break;

    case '21' :

        $prompt="پذيرنده نامعتبر است";

        break;

    case '22' :

        $prompt="ترمينال مجوز ارائه سرويس درخواستي را ندارد.";

        break;

    case '23' :

        $prompt="خطاي امنيتي رخ داده است.";

        break;

    case '24' :

        $prompt="اطلاعات کاربري پذيرنده نامعتبر است..";

        break;

    case '25' :

        $prompt="مبلغ نامعتبر است.";

        break;

    case '31' :

        $prompt="پاسخ نامعتبر است.";

        break;

    case '32' :

        $prompt="فرمت اطلاعات وارد شده صحيح نيست.";

        break;

    case '33' :

        $prompt="حساب نامعتبر است.";

        break;

    case '34' :

        $prompt="خطاي سيستمي";

        break;

    case '35' :

        $prompt="تاريخ نامعتبر است.";

        break;

    case '41' :

        $prompt="شماره درخواست تکراري است.";

        break;

    case '42' :

        $prompt="تراکنش sale يافت نشد.";

        break;

    case '43' :

        $prompt="قبلا درخواست verify داده شده است.";

        break;

    case '44' :

        $prompt="درخواست verify  يافت نشد.";

        break;

    case '45' :

        $prompt="تراکنش settle شده است.";

        break;

    case '46' :

        $prompt="تراکنش settle نشده است.";

        break;

    case '47' :

        $prompt="تراکنش settle يافت نشد.";

        break;

    case '48' :

        $prompt="تراکنش reverse شده است.";

        break;

    case '49' :

        $prompt="تراکنش refund يافت نشد.";

        break;

    case '412' :

        $prompt="شناسه قبض نادرست است.";

        break;

    case '413' :

        $prompt="شناسه پرداخت نادرست است.";

        break;

    case '414' :

        $prompt="سازمان صادرکننده قبض نامعتبر است.";

        break;

    case '415' :

        $prompt="زمان جلسه کاري به پايان رسيده است.";

        break;

    case '416' :

        $prompt="خطا در ثبت اطلاعات";

        break;

    case '417' :

        $prompt="شناسه پرداخت کننده نامعتبراست.";

        break;

    case '418' :

        $prompt="اشکال در تعريف اطلاعات مشتري";

        break;

    case '419' :

        $prompt="تعداد دفعات ورود اطلاعات از حد مجاز گذشته است.";

        break;

    case '421' :

        $prompt="IP نامعتبر است";

        break;

    case '51' :

        $prompt="تراکنش تکراري است.";

        break;

    case '52' :

        $prompt="سرويس درخواستي موجود نمي باشد.";

        break;

    case '54' :

        $prompt="تراکنش مرجع موجود نيست.";

        break;          

    case '55' :

        $prompt="تراکنش نامعتبر است.";

        break;

    case '61' :

        $prompt="خطا در واريز";

        break;                          

    DEFAULT :

        $prompt="خطاي نامشخص";

        break;

}

return  'کد ' . $ResCode .' : '. $prompt;

}?>
4

1 回答 1

0

也许允许 url-fopen被禁用?

使用 file_get_contents() 时,可能无法通过 SSL 获取 httpS?据我所知,该方法是一个非常简单/愚蠢的 url fetcher

您可以尝试使用适当的标题为您的 file_get_contents 调用设置上下文。请参阅http://php.net/manual/en/function.file-get-contents.php#example-2320作为开始。

如果您需要更正确的 URL 获取控制(如果您需要获取 HTTPS 页面,可能会这样做),请参阅有关 curl 函数的 PHP 手册页。@Marc B 有一个很好的链接作为上面的评论,但您可能不需要代理部分(您可能需要,这可能取决于您的网络主机的设置)

如果我们有更多关于正在发生的事情的详细信息,或者关于错误的更多详细信息,我们可以提出更多建议。

于 2013-04-18T16:26:41.967 回答