№21 Dars — Yii da Payment Gateway integratsiyasi
Plastik kartochkalar orqali to`lovlarni amalga oshirish yani online to`lov xizmatlari ancha avj olgan bir payt. Hozirda har bir platformamiz uchun ham kerak bo`lishi mumkin bo`gan ishga aylanib bormoqda. Yiida bu ishlar qanday aks etadi. Har xil to`lov xizmatlari mavjud men siz bilan birga «BrainTree» deb atalmish «peyment gateway» to`lov xizmatini qanday qilib platformamizga integratsiya qilishni ko`rib chiqamiz.
Ximoyasi:
Klientning shaxsiy karta nomeri va CVV ni klient tomonda BrainTreening maxsus shifrlash kutubxonasi yordamida amalga oshiriladi. Ishlash usuli quyidagicha:
Sizning shaxsiy web ilovangizdan ma`llumotni oladi, uni o`zining «BrainTree.js» shifrlash kutubxonasi bo`yicha shifrlab sizning serveringizga jo`natadi va u yerdan BrainTree ning serveriga boradi. U yerdan ishlar muvofaqiyatli yoki muvofaqiyatsiz turdagi xabarnoma keladi.
To`lovni qabul qilib oluvchi taraf BrainTreedan ro`yhatdan o`tgan bo`lishi kerak. U yerda o`zining shaxsiy accounti orqali hamma to`lovlarni nazorat qila olishi mumkin. BrainTreeni integratsiya qilish faqatgina Yii da emas. U yana Ruby, Perl, Phyton, Java, PHP, Microsoft .NET, Node JS kabi katta platformalar uchun ham mavjud. Endi buni yiida qanday qilib integratsiya qilishni ko`rib chiqamiz.
1. Ushbu gipermurajaat orqali extensionni yuklab olamiz. http://www.yiiframework.com/extension/braintreeapi/
Bu extension uchun PHPimiz 5.2 versiyasidan yuqori bo`lishi kerak.
2. Yuklab olingan API ni ‘protected/extensions/BraintreeApi’ yo`l bo`yicha joylaymiz
3. «config/main.php» faylimizga quyidagicha kod kiritamiz
'params'=>array(
// bu braintree contactimizda foydalanilayotgan emailimiz
'adminEmail'=>'your@email.com',
'braintreeapi' => array(
'class' => 'ext.BraintreeApi.BraintreeApi',//ishlatishingiz kerak bo`lgan class bu yerda siz yuklab olgan class chaqirilmoqda
'environment' => 'sandbox', //'sandbox' yoki 'production' bu yerda sandbox braintree dan shunchaki ro`yhatdan o`tiladi sizning hisobingizga visual asli kuchga ega bo`lmagan miqdorda sizning hisobingizga pul tushirib beradi. production bu endi haqiqiy pul aylanmasi. sandbox aslida qilayotgan integratsiyangizni to`g`ri ishlayotganini tekshirish uchun kerak bo`ladi.
'merchant_id' => '',// siz braintree dan ro`yhatdan o`tganingizdan keyin sizga yagona id ko`rinishidagi kodni beradi.
'public_key' => '',
'private_key' => '',
'clientside_key' => '',
),
),
4. Controllerimizga quyidagicha kodni qo`shamiz:
public function actionPayment() {
$model = User::model()->findByPk(Yii::app()->user->id);
Yii::import('ext.BraintreeApi.models.BraintreeCCForm');
$payment = new BraintreeCCForm('charge'); //'customer', 'address', va 'creditcard' kabi to`lov amalga oshirishning turlari
if(isset($_POST['BraintreeCCForm'])) {
$payment->setAttributes($_POST['BraintreeCCForm']);
if($payment->validate()) {
$result = $payment->send();
if($result) {
//Success
}
}
}
$this->render('payment',array('model'=>$model,'payment'=>$payment));
}
5. Viewimizga quyidagicha kod kiritamiz:
beginWidget(`CActiveForm`, array('id'=>'payment-form')); ?> widget('ext.BraintreeApi.widgets.CCForm', array( 'form' => $form, 'form_id' => 'payment-form', forma idsi 'model' => $payment, 'values' => $payment->attributes, //$payment attributlarini olish 'fields' => array( foydalanish kerak bo`lgan maydonlar 'amount', // bu yerda amount maydonidan foydalanamiz 'creditCard' => array('number','cvv','date'), // creditCard maydonidan foydalanamiz. ), ));endWidget(); ?>
Credit cardda berilganlar:
1. Credit Card number — karta nomeri.
2. Credit Card CVV («Card Verification Value») — bu sizning kartangizdagi PIN (Personal Identification Number) emas, shunga yanglishmang. U Visa, MasterCard kabi kartalarda 3 xonali, American Express kartalarida 4 xonali bo`ladi. Chegarasi 4 xonadan oshmaydi. Quyidagi rasmda ko`rsatilgan.
3. Credit Card date — bu yerda kartada ko`rsatilgan bo`lib, kartaning tugash muddati hisoblanadi. Biz bergan ushbu misolimizda faqat shu 3 parametr bilan ishlangan. «MM/YYYY» ko`rinishida kiritiladi.
Yuqoridagi widget maxsus yasalgan bo`lib uni extensiondan chaqirib to`g`ri ishlata olsangiz bo`lgani. Dizayn va shunga o`xshash ishlarni widget fayli orqali ishlashingiz mumkin bo`ladi.
Batafsil ma`lumot uchun braintreegateway.com shaxsiy saytidan olishingiz mumkin.
Ma`lumotlar habrahabr.ru va yiiframework.com saytlaridan olingan holda tayyorlandi.
Manba:
Web Dasturlash
№21 Dars — Yii da Payment Gateway integratsiyasi