راکت

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

3 پاسخ

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

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

ثبت پرسش جدید

پاسخ‌ها

3
محسن بستان
محسن بستان
@mohsenbostan

تخصص: Senior Backend Developer

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

مهدی
مهدی
@mehdi13

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

شاید پاسخ شما همین‌جا باشد

Alimotreb
Alimotreb
@Alimotreb

تخصص: کانفیگ سرور و برنامه نویس

سلام
@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{}
        }

    }

}

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

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