سلام
دوستان من در پروژه ای از درگاه بانکی ایران کیش میخواماستفاده کنم که بعد از دریافت شماره قبض پرداخت یا همون توکن وقتی میخوام هدایت کنم کاربر رو صفحه پرداخت نیازه که با متد POST دو تا پارامتر به لینک بفرستم
در نمونه کدش خودشون اومدن یه فرمی گذاشتن و متد فرم رو post گذاشتن که باید دکمه پرداخت رو بزنی تا هدایت کنه به صفحه پرداخت ولی من میخوام بدون استفاد از فرم HTML اون دوتا پارامتر رو با متد POST به لینک پرداختش بفرستم و کاربر به بانک هدایت بشه
لینکش اینه :
https://ikc.shaparak.ir/TPayment/Payment/index
که باید دو تا پارامتر (token و merchantId) بهش با متد post بفرستیم که در زمان اجرای این لینک بصورت post خودش کاربر رو به صفحه پرداخت ریدایرکت میکنه ولی وقتی با CURL این لینک رو اجرا میکنم به هدایت نمیشه به صفحه پرداخت
لطفا یه کد عملی اگه بدید ممنون میشم
سپاس
سلام
@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{}
}
}
}
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟