مهدی
6 سال پیش توسط مهدی مطرح شد
3 پاسخ

هدایت کاربر به بانک با متد POST

سلام
دوستان من در پروژه ای از درگاه بانکی ایران کیش میخواماستفاده کنم که بعد از دریافت شماره قبض پرداخت یا همون توکن وقتی میخوام هدایت کنم کاربر رو صفحه پرداخت نیازه که با متد POST دو تا پارامتر به لینک بفرستم
در نمونه کدش خودشون اومدن یه فرمی گذاشتن و متد فرم رو post گذاشتن که باید دکمه پرداخت رو بزنی تا هدایت کنه به صفحه پرداخت ولی من میخوام بدون استفاد از فرم HTML اون دوتا پارامتر رو با متد POST به لینک پرداختش بفرستم و کاربر به بانک هدایت بشه
لینکش اینه :
https://ikc.shaparak.ir/TPayment/Payment/index
که باید دو تا پارامتر (token و merchantId) بهش با متد post بفرستیم که در زمان اجرای این لینک بصورت post خودش کاربر رو به صفحه پرداخت ریدایرکت میکنه ولی وقتی با CURL این لینک رو اجرا میکنم به هدایت نمیشه به صفحه پرداخت

لطفا یه کد عملی اگه بدید ممنون میشم
سپاس


ثبت پرسش جدید
محسن بستان
تخصص : Senior Backend Developer
@mohsenbostan 6 سال پیش مطرح شد
0

@hesami13
از Soap یا NuSoap استفاده کنید.


مهدی
@mehdi13 6 سال پیش مطرح شد
0

کار نمیکنه
حتی با postman هم با متد post لینک رو اجرا میکنم میگه شما مجاز نیستید


Alimotreb
تخصص : کانفیگ سرور و برنامه نویس
@Alimotreb 6 سال پیش مطرح شد
0

سلام
@hesami13
این یه نمونه کدی که با soap هست و استفاده میشه هنوز و کار میده
یه بررسی کنید جاهاییش که لازمه رو تغییر بدید و ...
امید وارم مشکل رو حل کنه

class irankish extends Bank
{
         public $merchantID = ''; // b45
         public $sha1= ''; // b45
    public function sendParams($transaction,$redirect=null)
    {

        $client = new SoapClient('https://ikc.shaparak.ir/XToken/Tokens.xml', array('soap_version'   => SOAP_1_1));
        if($redirect == null){  
        $redirect = 'http://'.$_SERVER['SERVER_NAME'].'/pay/check';
                }
                $merchantID = $this->merchantID;
        $params['amount'] =  $transaction->amount;
        $params['merchantId'] = $this->merchantID;
        $params['invoiceNo'] = time();
        $params['paymentId'] = time();
        $params['specialPaymentId'] = $transaction->res_num;
        $params['revertURL'] = $redirect;
        $params['description'] = "";
        $result = $client->__soapCall("MakeToken", array($params));
        $data['token'] = $result->MakeTokenResult->token;
        $data['merchantId'] = $merchantID;
        $transaction->order_id = $data['token'];
        $transaction->save(false);
/*print '<pre>';
print_r($result);*/
        $this->redirect_post('https://ikc.shaparak.ir/TPayment/Payment/index',$data);
    }

    function redirect_post($url, array $data)
    {

        echo '<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>درحال اتصال به درگاه ....</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <style type="text/css">
    #main {
        background-color: #F1F1F1;
        border: 1px solid #CACACA;
        height: 90px;
        left: 50%;
        margin-left: -265px;
        position: absolute;
        top: 200px;
        width: 530px;
    }
    #main p {
        color: #757575;
        direction: rtl;
        font-family: Arial;
        font-size: 16px;
        font-weight: bold;
        line-height: 27px;
        margin-top: 30px;
        padding-right: 60px;
        text-align: right;
    }
    </style>
        <script type="text/javascript">
            function closethisasap() {
                document.forms["redirectpost"].submit();
            }
        </script>
    </head>
    <body onload="closethisasap();">';
        echo '<form name="redirectpost" method="post" action="'.$url.'">';

        if ( !is_null($data) ) {
            foreach ($data as $k => $v) {
                echo '<input type="hidden" name="' . $k . '" value="' . $v . '"> ';
            }
        }

        echo' </form><div id="main">
<p>درحال اتصال به درگاه بانک</p></div>
    </body>
    </html>';

        exit;
    }
    public function verify($refNum,$transaction,$param)
    {
        if(  empty($_POST['resultCode']) || $transaction->status ==1 ){
            $transaction->status = 3;
            $transaction->save(false);
            die;
        }else {$client = new SoapClient('https://ikc.shaparak.ir/XVerify/Verify.xml', array('soap_version' => SOAP_1_1));
            $params['token'] = $transaction->order_id;
            $params['merchantId'] = Bank::find()->where(['name_id'=>'irankish'])->one()->terminalId;
            $params['referenceNumber'] = $refNum;
            $params['sha1Key'] = $this->sha1;
            $result = $client->__soapCall("KicccPaymentsVerification", array($params));
            $result = ($result->KicccPaymentsVerificationResult);
            if($_POST['resultCode'] == 100 && floatval($result) == $transaction->amount*10){
                $transaction->status = 1;
                $transaction->ref_num = $refNum;
                if( ! $transaction->save(FALSE)) {die;
                } else {
                }
            }else{}
        }

    }

}

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام