-
Notifications
You must be signed in to change notification settings - Fork 17
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
3D Secure Eklendi. #15
base: master
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,4 @@ | ||
.idea | ||
vendor | ||
*.lock | ||
*.lock | ||
**/.DS_Store |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -13,6 +13,7 @@ $configuration = new Configuration(); | |
$configuration->setMerchantId('MY_MERCHANT_01') | ||
->setSecretKey('SECRET_KEY') | ||
->setPaymentEndpointUrl('https://secure.payu.com.tr/order/alu/v3'); | ||
->setReturnUrl('http://payu/cs/payu_3dreturn.php'); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Döküman son kullanıcı tarafından değerlendirileceği için buradaki alan adının örnek olduğunu anlamayabilirler. example.com/3d_return.php şeklinde birşeyler olursa sanki biraz daha anlamlı olur gibi duruyor. |
||
|
||
$client = new Client($configuration); | ||
``` | ||
|
@@ -91,6 +92,15 @@ if($response->getStatus() == ResponseAbstract::STATUS_APPROVED) { | |
echo $response->getTransactionId() | ||
*/ | ||
} else { | ||
/* | ||
// Eğer Kredi Kartı 3D Secure korumalıysa | ||
if (($response->getCode() == ResponseAbstract::SECURE3D)) { | ||
|
||
header("Location:" . $response->getUrl_3ds()); | ||
exit(); | ||
} | ||
*/ | ||
|
||
/* | ||
// Odeme islemi hatali oldu | ||
|
||
|
@@ -112,6 +122,7 @@ $configuration = new Configuration(); | |
$configuration->setMerchantId('MY_MERCHANT_01') | ||
->setSecretKey('SECRET_KEY') | ||
->setPaymentEndpointUrl('https://secure.payu.com.tr/order/alu/v3'); | ||
->setReturnUrl('http://payu/cs/payu_3dreturn.php'); | ||
|
||
$client = new Client($configuration); | ||
|
||
|
@@ -131,6 +142,14 @@ if($response->getStatus() == ResponseAbstract::STATUS_APPROVED) { | |
echo $response->getTransactionId() | ||
*/ | ||
} else { | ||
/* | ||
// Eğer Kredi Kartı 3D Secure korumalıysa | ||
if (($response->getCode() == ResponseAbstract::SECURE3D)) { | ||
|
||
header("Location:" . $response->getUrl_3ds()); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Normal şartlarda banka, 3d Secure authorizasyonu sırasında kart formundan gelen bilgilerin kendisine HTTP/POST olarak gönderilmesini bekliyor. Bu implementasyonda kartın 3d secure olması durumunda yönlendiğiniz sayfaya herhangibir parametre taşındığını göremiyorum. Bunun doğru olduğundan emin misiniz ? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Evet. Taşıyor. |
||
exit(); | ||
} | ||
*/ | ||
/* | ||
// Odeme islemi hatali oldu | ||
|
||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -24,9 +24,10 @@ public function parse($rawData) | |
$status = (string) $xml->STATUS; | ||
$code = (string) $xml->RETURN_CODE; | ||
$message = (string) $xml->RETURN_MESSAGE; | ||
$url_3ds = (string) $xml->URL_3DS; | ||
$statusCode = $status == 'SUCCESS' && $code == 'AUTHORIZED' ? | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Burada kartın 3d secure gerekliliği ile ilgili herhangibir kontrol eklenmemiş. Normalde 3D_SECURE_ENROLLED gibi bir bilgi dönüyor olması lazım. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. URL_3DS her sorguda dönüyor. |
||
ResponseAbstract::STATUS_APPROVED : ResponseAbstract::STATUS_DECLINED; | ||
$transactionId = $statusCode == ResponseAbstract::STATUS_APPROVED ? (string) $xml->REFNO : null; | ||
return new PaymentResponse($statusCode, $code, $message, $transactionId); | ||
return new PaymentResponse($statusCode, $code, $message, $transactionId, $url_3ds); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. sınıf özellikleri, metod isimleri, metod argümanları ve değişkenler camelCase olarak isimlendirilmeli. |
||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -8,6 +8,28 @@ class PaymentResponse extends ResponseAbstract | |
*/ | ||
protected $transactionId; | ||
|
||
/** | ||
* @var string | ||
*/ | ||
protected $url_3ds; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. sınıf özellikleri, metod isimleri, metod argümanları ve değişkenler camelCase olarak isimlendirilmeli. |
||
|
||
/** | ||
* @param string $url_3ds | ||
* @return $this; | ||
*/ | ||
public function setUrl_3ds($url_3ds) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. sınıf özellikleri, metod isimleri, metod argümanları ve değişkenler camelCase olarak isimlendirilmeli. |
||
{ | ||
$this->url_3ds = $url_3ds; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. sınıf özellikleri, metod isimleri, metod argümanları ve değişkenler camelCase olarak isimlendirilmeli. |
||
} | ||
|
||
/** | ||
* @return string | ||
*/ | ||
public function getUrl_3ds() | ||
{ | ||
return $this->url_3ds; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. sınıf özellikleri, metod isimleri, metod argümanları ve değişkenler camelCase olarak isimlendirilmeli. |
||
} | ||
|
||
/** | ||
* @param string $transactionId | ||
* @return $this; | ||
|
@@ -30,10 +52,12 @@ public function getTransactionId() | |
* @param string $code | ||
* @param string $message | ||
* @param string $transactionId | ||
* @param string $url_3ds | ||
*/ | ||
public function __construct($status, $code, $message, $transactionId) | ||
public function __construct($status, $code, $message, $transactionId, $url_3ds) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. sınıf özellikleri, metod isimleri, metod argümanları ve değişkenler camelCase olarak isimlendirilmeli. |
||
{ | ||
parent::__construct($status, $code, $message); | ||
$this->setTransactionId($transactionId); | ||
$this->setUrl_3ds($url_3ds); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. sınıf özellikleri, metod isimleri, metod argümanları ve değişkenler camelCase olarak isimlendirilmeli. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. camelCase leri birisi düzeltemez mi? Çok vaktim olmuyor. |
||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,6 +5,7 @@ abstract class ResponseAbstract | |
{ | ||
const STATUS_APPROVED = 200; | ||
const STATUS_DECLINED = 500; | ||
const SECURE3D = "3DS_ENROLLED"; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. İsimlendirme konusu biraz sıkıntılı görünüyor. Aslında kartın 3D Secure enrolled olma durumu, kartın 3d secure gerektiren bir kart olması nedeniyle para çekilemediği anlamına gelir dolaysıyla bu da success ve fail olmak gibi bir durumdur. Bu noktada başında STATUS_ önekinin olması daha doğru olur. Ayrıca diğer sabitler sayısal olarak değerlendirilmişken SECURED değişkeninin string olarak değerlendirilmesi de yine standard dışı bir durum. Ya diğerleri de string olmalı ya da buna da 4xx şeklinde bir değerlendirme yapılmalı. Seçim sizin. |
||
|
||
/** | ||
* @var integer | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Composer
.lock
dosyasını gitignore'a eklemek iyi bir pratik değil diye biliyorum. Uygulamanın her branch'inde composer.lock versiyonlanmalı ve kodla birlikte dağıtılmalı. Bağımlılık olarak bu kütüphaneyi kullanan uygulamalar, composer install ile kurulum yaptıklarında lock file spesifik (son commit edilen) versiyona işaret ediyor olmalı.