Mise en place des urls de retour (succès et cancel).refactoring
@@ -42,7 +42,7 @@ use Yii; | |||
use yii\base\Model; | |||
use common\models\CreditHistory ; | |||
use common\models\User ; | |||
use common\models\Prtoducer ; | |||
use common\models\Producer ; | |||
use common\models\UserProducer ; | |||
use common\helpers\Mail ; | |||
@@ -39,6 +39,8 @@ termes. | |||
namespace producer\controllers; | |||
use common\models\CreditHistory ; | |||
use producer\models\CreditForm ; | |||
use common\models\User ; | |||
class CreditController extends ProducerBaseController | |||
{ | |||
@@ -65,7 +67,7 @@ class CreditController extends ProducerBaseController | |||
* Affiche l'historique du crédit client. | |||
* | |||
*/ | |||
public function actionHistory() | |||
public function actionHistory($returnPayment = '') | |||
{ | |||
$searchModel = new CreditHistorySearch() ; | |||
$dataProvider = $searchModel->search(Yii::$app->request->queryParams); | |||
@@ -75,6 +77,15 @@ class CreditController extends ProducerBaseController | |||
'id_user' => User::getCurrentId() | |||
]) ; | |||
if(strlen($returnPayment)) { | |||
if($returnPayment == 'success') { | |||
Yii::$app->getSession()->setFlash('success', "Paiement accepté : votre compte vient d'être crédité."); | |||
} | |||
if($returnPayment == 'cancel') { | |||
Yii::$app->getSession()->setFlash('error', 'Paiement annulé'); | |||
} | |||
} | |||
return $this->render('history',[ | |||
'searchModel' => $searchModel, | |||
'dataProvider' => $dataProvider, | |||
@@ -82,6 +93,51 @@ class CreditController extends ProducerBaseController | |||
]) ; | |||
} | |||
public function actionAdd() | |||
{ | |||
$producer = $this->getProducer() ; | |||
if($producer->online_payment) { | |||
\Payplug\Payplug::setSecretKey($producer->getSecretKeyPayplug()); | |||
$creditForm = new CreditForm ; | |||
if ($creditForm->load(Yii::$app->request->post()) && $creditForm->validate()) { | |||
$user = User::getCurrent() ; | |||
$payment = \Payplug\Payment::create(array( | |||
'amount' => (float) $creditForm->amount * 100, | |||
'currency' => 'EUR', | |||
'save_card' => false, | |||
'customer' => array( | |||
'email' => $user->email, | |||
'first_name' => $user->name, | |||
'last_name' => $user->lastname | |||
), | |||
'hosted_payment' => array( | |||
'return_url' => Yii::$app->urlManagerProducer->createAbsoluteUrl(['credit/history', 'slug_producer' => $producer->slug, 'returnPayment' => 'success']), | |||
'cancel_url' => Yii::$app->urlManagerProducer->createAbsoluteUrl(['credit/history', 'slug_producer' => $producer->slug, 'returnPayment' => 'cancel']), | |||
), | |||
'notification_url' => Yii::$app->urlManagerProducer->createAbsoluteUrl(['credit/payment-notifications', 'idUser' => $user->id, 'slug_producer' => $producer->slug]), | |||
'metadata' => array( | |||
'id_user' => $user->id | |||
) | |||
)); | |||
if($payment) { | |||
$this->redirect($payment->hosted_payment->payment_url) ; | |||
} | |||
} | |||
return $this->render('add', [ | |||
'creditForm' => $creditForm | |||
]) ; | |||
} | |||
else { | |||
throw new \yii\base\UserException('Cette option est désactivée chez ce producteur.'); | |||
} | |||
} | |||
/** | |||
* Interface de notification suite aux actions effectuées sur Payplug. | |||
* |
@@ -0,0 +1,70 @@ | |||
<?php | |||
/** | |||
Copyright La boîte à pain (2018) | |||
contact@laboiteapain.net | |||
Ce logiciel est un programme informatique servant à aider les producteurs | |||
à distribuer leur production en circuits courts. | |||
Ce logiciel est régi par la licence CeCILL soumise au droit français et | |||
respectant les principes de diffusion des logiciels libres. Vous pouvez | |||
utiliser, modifier et/ou redistribuer ce programme sous les conditions | |||
de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA | |||
sur le site "http://www.cecill.info". | |||
En contrepartie de l'accessibilité au code source et des droits de copie, | |||
de modification et de redistribution accordés par cette licence, il n'est | |||
offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons, | |||
seule une responsabilité restreinte pèse sur l'auteur du programme, le | |||
titulaire des droits patrimoniaux et les concédants successifs. | |||
A cet égard l'attention de l'utilisateur est attirée sur les risques | |||
associés au chargement, à l'utilisation, à la modification et/ou au | |||
développement et à la reproduction du logiciel par l'utilisateur étant | |||
donné sa spécificité de logiciel libre, qui peut le rendre complexe à | |||
manipuler et qui le réserve donc à des développeurs et des professionnels | |||
avertis possédant des connaissances informatiques approfondies. Les | |||
utilisateurs sont donc invités à charger et tester l'adéquation du | |||
logiciel à leurs besoins dans des conditions permettant d'assurer la | |||
sécurité de leurs systèmes et ou de leurs données et, plus généralement, | |||
à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. | |||
Le fait que vous puissiez accéder à cet en-tête signifie que vous avez | |||
pris connaissance de la licence CeCILL, et que vous en avez accepté les | |||
termes. | |||
*/ | |||
namespace producer\models; | |||
use Yii; | |||
use yii\base\Model; | |||
class CreditForm extends Model | |||
{ | |||
public $amount ; | |||
/** | |||
* @inheritdoc | |||
*/ | |||
public function rules() | |||
{ | |||
return [ | |||
[['amount'], 'required'], | |||
[['amount'], 'double'], | |||
]; | |||
} | |||
/** | |||
* @inheritdoc | |||
*/ | |||
public function attributeLabels() | |||
{ | |||
return [ | |||
'amount' => 'Montant', | |||
]; | |||
} | |||
} |
@@ -0,0 +1,57 @@ | |||
<?php | |||
/** | |||
Copyright La boîte à pain (2018) | |||
contact@laboiteapain.net | |||
Ce logiciel est un programme informatique servant à aider les producteurs | |||
à distribuer leur production en circuits courts. | |||
Ce logiciel est régi par la licence CeCILL soumise au droit français et | |||
respectant les principes de diffusion des logiciels libres. Vous pouvez | |||
utiliser, modifier et/ou redistribuer ce programme sous les conditions | |||
de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA | |||
sur le site "http://www.cecill.info". | |||
En contrepartie de l'accessibilité au code source et des droits de copie, | |||
de modification et de redistribution accordés par cette licence, il n'est | |||
offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons, | |||
seule une responsabilité restreinte pèse sur l'auteur du programme, le | |||
titulaire des droits patrimoniaux et les concédants successifs. | |||
A cet égard l'attention de l'utilisateur est attirée sur les risques | |||
associés au chargement, à l'utilisation, à la modification et/ou au | |||
développement et à la reproduction du logiciel par l'utilisateur étant | |||
donné sa spécificité de logiciel libre, qui peut le rendre complexe à | |||
manipuler et qui le réserve donc à des développeurs et des professionnels | |||
avertis possédant des connaissances informatiques approfondies. Les | |||
utilisateurs sont donc invités à charger et tester l'adéquation du | |||
logiciel à leurs besoins dans des conditions permettant d'assurer la | |||
sécurité de leurs systèmes et ou de leurs données et, plus généralement, | |||
à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. | |||
Le fait que vous puissiez accéder à cet en-tête signifie que vous avez | |||
pris connaissance de la licence CeCILL, et que vous en avez accepté les | |||
termes. | |||
*/ | |||
use yii\helpers\Html; | |||
use yii\widgets\ActiveForm; | |||
$this->setTitle('Créditer mon compte'); | |||
$this->setPageTitle('Crédit mon compte'); | |||
?> | |||
<div class="form"> | |||
<?php $form = ActiveForm::begin(); ?> | |||
<?= $form->field($creditForm, 'amount',[ | |||
'template' => '{label}<div class="input-group">{input}<span class="input-group-addon"><span class="glyphicon glyphicon-euro"></span></span></div>', | |||
])->label('Quel montant souhaitez-vous créditer ?'); ?> | |||
<div class="form-group"> | |||
<?= Html::submitButton( '<span class="glyphicon glyphicon-lock"></span> Payer sur Payplug', ['class' => 'btn btn-primary']) ?> | |||
</div> | |||
<?php ActiveForm::end(); ?> | |||
</div> |
@@ -43,6 +43,10 @@ $this->setPageTitle('Crédit'); | |||
?> | |||
<?php if($this->context->getProducer()->online_payment): ?> | |||
<?= Html::a('<span class="glyphicon glyphicon-credit-card"></span> Créditer mon compte', ['credit/add'], ['class' => 'btn btn-primary']); ?><br /><br /> | |||
<?php endif; ?> | |||
<?= GridView::widget([ | |||
// 'filterModel' => $searchModel, | |||
'dataProvider' => $dataProvider, |
@@ -1442,6 +1442,18 @@ termes. | |||
color: gray; | |||
} | |||
/* line 3, ../sass/credit/_add.scss */ | |||
.credit-add .form { | |||
max-width: 250px; | |||
margin: 0px auto; | |||
text-align: center; | |||
} | |||
/* line 8, ../sass/credit/_add.scss */ | |||
.credit-add .form label { | |||
margin-bottom: 15px; | |||
color: gray; | |||
} | |||
/** | |||
Copyright La boîte à pain (2018) | |||
@@ -0,0 +1,13 @@ | |||
.credit-add { | |||
.form { | |||
max-width: 250px ; | |||
margin: 0px auto ; | |||
text-align: center ; | |||
label { | |||
margin-bottom: 15px ; | |||
color: gray ; | |||
} | |||
} | |||
} |
@@ -42,4 +42,5 @@ termes. | |||
@import "order/_form.scss"; | |||
@import "order/_history.scss"; | |||
@import "order/_order.scss"; | |||
@import "credit/_add.scss"; | |||
@import "_responsive.scss"; |