Mise en place des urls de retour (succès et cancel).refactoring
use yii\base\Model; | use yii\base\Model; | ||||
use common\models\CreditHistory ; | use common\models\CreditHistory ; | ||||
use common\models\User ; | use common\models\User ; | ||||
use common\models\Prtoducer ; | |||||
use common\models\Producer ; | |||||
use common\models\UserProducer ; | use common\models\UserProducer ; | ||||
use common\helpers\Mail ; | use common\helpers\Mail ; | ||||
namespace producer\controllers; | namespace producer\controllers; | ||||
use common\models\CreditHistory ; | use common\models\CreditHistory ; | ||||
use producer\models\CreditForm ; | |||||
use common\models\User ; | |||||
class CreditController extends ProducerBaseController | class CreditController extends ProducerBaseController | ||||
{ | { | ||||
* Affiche l'historique du crédit client. | * Affiche l'historique du crédit client. | ||||
* | * | ||||
*/ | */ | ||||
public function actionHistory() | |||||
public function actionHistory($returnPayment = '') | |||||
{ | { | ||||
$searchModel = new CreditHistorySearch() ; | $searchModel = new CreditHistorySearch() ; | ||||
$dataProvider = $searchModel->search(Yii::$app->request->queryParams); | $dataProvider = $searchModel->search(Yii::$app->request->queryParams); | ||||
'id_user' => User::getCurrentId() | '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',[ | return $this->render('history',[ | ||||
'searchModel' => $searchModel, | 'searchModel' => $searchModel, | ||||
'dataProvider' => $dataProvider, | 'dataProvider' => $dataProvider, | ||||
]) ; | ]) ; | ||||
} | } | ||||
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. | * Interface de notification suite aux actions effectuées sur Payplug. | ||||
* | * |
<?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', | |||||
]; | |||||
} | |||||
} |
<?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> |
?> | ?> | ||||
<?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([ | <?= GridView::widget([ | ||||
// 'filterModel' => $searchModel, | // 'filterModel' => $searchModel, | ||||
'dataProvider' => $dataProvider, | 'dataProvider' => $dataProvider, |
color: gray; | 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) | Copyright La boîte à pain (2018) | ||||
.credit-add { | |||||
.form { | |||||
max-width: 250px ; | |||||
margin: 0px auto ; | |||||
text-align: center ; | |||||
label { | |||||
margin-bottom: 15px ; | |||||
color: gray ; | |||||
} | |||||
} | |||||
} |
@import "order/_form.scss"; | @import "order/_form.scss"; | ||||
@import "order/_history.scss"; | @import "order/_history.scss"; | ||||
@import "order/_order.scss"; | @import "order/_order.scss"; | ||||
@import "credit/_add.scss"; | |||||
@import "_responsive.scss"; | @import "_responsive.scss"; |