Php Payu Entegrasyonu [SORU]
-
Selamlar payu entegrasyonu yapmaya çalışıyorum ancak 2 gündür çözemedim
<?php $url = "https://secure.payu.com.tr/order/alu/v3"; $secretKey = 'SECRET_KEY'; $arParams = array( //The Merchant's ID "MERCHANT" => "OPU_TEST", //order external reference number in Merchant's system "ORDER_REF" => rand(1000,9999), "ORDER_DATE" => gmdate('Y-m-d H:i:s'), //First product details begin "ORDER_PNAME[0]" => "Ticket1", "ORDER_PCODE[0]" => "TCK1", "ORDER_PINFO[0]" => "Barcelona flight", "ORDER_PRICE[0]" => "1", "ORDER_QTY[0]" => "1", //First product details end //Second product details begin "ORDER_PNAME[1]" => "Ticket2", "ORDER_PCODE[1]" => "TCK2", "ORDER_PINFO[1]" => "London flight", "ORDER_PRICE[1]" => "2", "ORDER_QTY[1]" => "1", //Second product details end "PRICES_CURRENCY" => "TRY", "PAY_METHOD" => "CCVISAMC", "SELECTED_INSTALLMENTS_NUMBER" => "2", "CC_NUMBER" => "4242424242424242", "EXP_MONTH" => "12", "EXP_YEAR" => "2020", "CC_CVV" => "000", "CC_OWNER" => "FirstName LastName", //Return URL on the Merchant webshop side that will be used in case of 3DS enrolled cards authorizations. "BACK_REF" => "https://www.example.com/alu/3ds_return.php", "CLIENT_IP" => "127.0.0.1", "BILL_LNAME" => "John", "BILL_FNAME" => "Doe", "BILL_EMAIL" => "shopper@payu.ro", "BILL_PHONE" => "13556778900", "BILL_COUNTRYCODE" => "TR", "BILL_ZIPCODE" => "12345", //optional "BILL_ADDRESS" => "Billing address", //optional "BILL_ADDRESS2"=> "Billing address ", //optional "BILL_CITY" => "City", //optional "BILL_STATE" => "State / Dept.", //optional "BILL_FAX" => "1234567890", //optional "DELIVERY_LNAME" => "John", //optional "DELIVERY_FNAME" => "Doe", //optional "DELIVERY_EMAIL" => "shopper@payu.ro", //optional "DELIVERY_PHONE" => "1234567890", //optional "DELIVERY_COMPANY" => "Company Name", //optional "DELIVERY_ADDRESS" => "Delivery Address", //optional "DELIVERY_ADDRESS2" => "Delivery Address", //optional "DELIVERY_ZIPCODE" => "12345", //optional "DELIVERY_CITY" => "City", //optional "DELIVERY_STATE" => "State / Dept.", //optional "DELIVERY_COUNTRYCODE" => "TR", //optional ); //begin HASH calculation ksort($arParams); $hashString = ""; foreach ($arParams as $key=>$val) { $hashString .= strlen($val) . $val; } $arParams["ORDER_HASH"] = hash_hmac("md5", $hashString, $secretKey); //end HASH calculation $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, 60); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($arParams)); $response = curl_exec($ch); $curlerrcode = curl_errno($ch); $curlerr = curl_error($ch); if (empty($curlerr) && empty($curlerrcode)) { $parsedXML = @simplexml_load_string($response); if ($parsedXML !== FALSE) { //Get PayU Transaction reference. //Can be stored in your system DB, linked with your current order, for match order in case of 3DSecure enrolled cards //Can be empty in case of invalid parameters errors $payuTranReference = $parsedXML->REFNO; if ($parsedXML->STATUS == "SUCCESS") { //In case of 3DS enrolled cards, PayU will return the extra XML tag URL_3DS that contains a unique url for each //transaction. For example https://secure.payu.com.tr/order/alu_return_3ds.php?request_id=2Xrl85eakbSBr3WtcbixYQ%3D%3D. //The merchant must redirect the browser to this url to allow user to authenticate. //After the authentification process ends the user will be redirected to BACK_REF url //with payment result in a HTTP POST request - see 3ds return sample. if (($parsedXML->RETURN_CODE == "3DS_ENROLLED") && (!empty($parsedXML->URL_3DS))) { header("Location:" . $parsedXML->URL_3DS); die(); } echo "SUCCES [PayU reference number: " . $payuTranReference . "]"; } else { echo "FAILED: " . $parsedXML->RETURN_MESSAGE . " [" . $parsedXML->RETURN_CODE . "]"; if (!empty($payuTranReference)) { //the transaction was register to PayU system, but some error occured during the bank authorization. //See $parsedXML->RETURN_MESSAGE and $parsedXML->RETURN_CODE for details echo " [PayU reference number: " . $payuTranReference . "]"; } } } } else { //Was an error comunication between servers echo "cURL error: " . $curlerr; }
Payunun verdiği kod bu yapmak istediğim şey
//First product details begin "ORDER_PNAME[0]" => "Ticket1", "ORDER_PCODE[0]" => "TCK1", "ORDER_PINFO[0]" => "Barcelona flight", "ORDER_PRICE[0]" => "1", "ORDER_QTY[0]" => "1", //First product details endBuradaki ürün bilgilerini dbden while veya for döngüsüyle yapıya uygun aktarmak bu konuda kaynak varmı veya deaha önce yapan biri
Tek ürün bilgilerini aktarıyorum ancak çoklu üründe sıkıntı çıkıyor yapı oturmuyor -
"ORDER_PNAME[0]" => array("Ticket1","Ticket2")
şeklinde olabilir sanki.
Edit: Dökümantasyona baktım bu şekilde değilmiş.
Biraz daha açıklayıcı yazabilirseniz sorunu belki yardımcı olabilirim.
BiUyeOlamadim tarafından 22/Mar/16 15:22 tarihinde düzenlenmiştir -
BiUyeOlamadim bunu yazdı
"ORDER_PNAME[0]" => array("Ticket1","Ticket2")
şeklinde olabilir sanki.
Edit: Dökümantasyona baktım bu şekilde değilmiş.
Biraz daha açıklayıcı yazabilirseniz sorunu belki yardımcı olabilirim.
Şimdi array dizisi olarak değerleri gönderiyor .
Her bir ürün için
//First product details begin "ORDER_PNAME[0]" => "Ticket1", "ORDER_PCODE[0]" => "TCK1", "ORDER_PINFO[0]" => "Barcelona flight", "ORDER_PRICE[0]" => "1", "ORDER_QTY[0]" => "1", //First product details endbu değerleri şart koısuyor misal 3 ürün gönderdiğimde
//1.ürün "ORDER_PNAME[0]" => "Ticket1", "ORDER_PCODE[0]" => "TCK1", "ORDER_PINFO[0]" => "Barcelona flight", "ORDER_PRICE[0]" => "1", "ORDER_QTY[0]" => "1", //2.ürün "ORDER_PNAME[1]" => "Ticket2", "ORDER_PCODE[1]" => "TCK2", "ORDER_PINFO[1]" => "Barcelona flight2", "ORDER_PRICE[1]" => "1", "ORDER_QTY[1]" => "1", //3.ürün "ORDER_PNAME[2]" => "Ticket3", "ORDER_PCODE[2]" => "TCK3", "ORDER_PINFO[2]" => "Barcelona flight3", "ORDER_PRICE[2]" => "1", "ORDER_QTY[2]" => "1",böyle bir dizi ortaya çıkıyor bewnde verileri dbden çektiğim için bu arra y dizisi içinde bu yapıya uygun while veya for döngüsü kurmalıyım veya başka bir yolu var mı
-
nasıl bir hata alıyosun hacı yapmaya çalıştığında ?
-
nurulmac11 bunu yazdı
nasıl bir hata alıyosun hacı yapmaya çalıştığında ?
Aldığım bir php hatası yok Payudan gelen HATA: Hash mismatch [HASH_MISMATCH] hatası dönüyor yani diyorki bu degerler istediğim gibi dökülmemiş.
Ürün değerlerini su sekilde alıyorum
if($db->num_rows > 0){ foreach($obj as $key){ if($key->urun_indirim_fiyat != '0.00'){$fyxt = $key->urun_indirim_fiyat;}else{$fyxt = $key->urun_fiyat;}; $sh = '"ORDER_PNAME['.$pi.']" => "'.ss($key->urun_adi).'", "ORDER_PCODE['.$pi.']" => "'.ss($key->urun_kod).'", "ORDER_PINFO['.$pi.']" => "Beden: '.ss($key->sepet_ozellik).'", "ORDER_PRICE['.$pi.']" => "'.$fyxt.'", "ORDER_QTY['.$pi.']" => "'.$key->sepet_adet.'", '; $pi++; } }bunu şu sekilde yazdırıyorum
$arParams = array( "ORDER_REF" => rand(1000,9999), "ORDER_DATE" => gmdate('Y-m-d H:i:s'), $sh, "PRICES_CURRENCY" => "TRY", "PAY_METHOD" => "CCVISAMC", "SELECTED_INSTALLMENTS_NUMBER" => "2", "CC_NUMBER" => $kart, "EXP_MONTH" => $ay, "EXP_YEAR" => $yil, "CC_CVV" => $ccv, "CC_OWNER" => $adss ):Sonuç olarak söyle bir yapı geliyor

İşaretlediğim yerii yok etmem gerek
-
Hiç yapan tecrübeli biri yokmu arkdaslar
