選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

126 行
4.5KB

  1. <?php
  2. /**
  3. * Copyright distrib (2018)
  4. *
  5. * contact@opendistrib.net
  6. *
  7. * Ce logiciel est un programme informatique servant à aider les producteurs
  8. * à distribuer leur production en circuits courts.
  9. *
  10. * Ce logiciel est régi par la licence CeCILL soumise au droit français et
  11. * respectant les principes de diffusion des logiciels libres. Vous pouvez
  12. * utiliser, modifier et/ou redistribuer ce programme sous les conditions
  13. * de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA
  14. * sur le site "http://www.cecill.info".
  15. *
  16. * En contrepartie de l'accessibilité au code source et des droits de copie,
  17. * de modification et de redistribution accordés par cette licence, il n'est
  18. * offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons,
  19. * seule une responsabilité restreinte pèse sur l'auteur du programme, le
  20. * titulaire des droits patrimoniaux et les concédants successifs.
  21. *
  22. * A cet égard l'attention de l'utilisateur est attirée sur les risques
  23. * associés au chargement, à l'utilisation, à la modification et/ou au
  24. * développement et à la reproduction du logiciel par l'utilisateur étant
  25. * donné sa spécificité de logiciel libre, qui peut le rendre complexe à
  26. * manipuler et qui le réserve donc à des développeurs et des professionnels
  27. * avertis possédant des connaissances informatiques approfondies. Les
  28. * utilisateurs sont donc invités à charger et tester l'adéquation du
  29. * logiciel à leurs besoins dans des conditions permettant d'assurer la
  30. * sécurité de leurs systèmes et ou de leurs données et, plus généralement,
  31. * à l'utiliser et l'exploiter dans les mêmes conditions de sécurité.
  32. *
  33. * Le fait que vous puissiez accéder à cet en-tête signifie que vous avez
  34. * pris connaissance de la licence CeCILL, et que vous en avez accepté les
  35. * termes.
  36. */
  37. namespace backend\controllers;
  38. use common\helpers\GlobalParam;
  39. use common\helpers\MeanPayment;
  40. use common\models\CreditHistory;
  41. use yii\filters\VerbFilter;
  42. class StripeController extends BackendController
  43. {
  44. public function behaviors()
  45. {
  46. return [
  47. /*'access' => [
  48. 'class' => AccessControl::className(),
  49. 'rules' => [
  50. [
  51. 'allow' => true,
  52. 'roles' => ['?'],
  53. ],
  54. ],
  55. ],*/
  56. 'verbs' => [
  57. 'class' => VerbFilter::className(),
  58. 'actions' => [
  59. 'verification' => ['post'],
  60. ],
  61. ]
  62. ];
  63. }
  64. public function beforeAction($action)
  65. {
  66. $this->enableCsrfValidation = false;
  67. return parent::beforeAction($action);
  68. }
  69. public function actionVerification()
  70. {
  71. // This is your Stripe CLI webhook secret for testing your endpoint locally.
  72. $endpoint_secret = 'whsec_2Prm8JYcikDsN0Bz2MuWrHKSOjcTIb8v';
  73. $payload = @file_get_contents('php://input');
  74. $sig_header = $_SERVER['HTTP_STRIPE_SIGNATURE'];
  75. $event = null;
  76. try {
  77. $event = \Stripe\Webhook::constructEvent(
  78. $payload,
  79. $sig_header,
  80. $endpoint_secret
  81. );
  82. } catch (\UnexpectedValueException $e) {
  83. // Invalid payload
  84. http_response_code(400);
  85. exit();
  86. } catch (\Stripe\Exception\SignatureVerificationException $e) {
  87. // Invalid signature
  88. http_response_code(400);
  89. exit();
  90. }
  91. // Handle the event
  92. switch ($event->type) {
  93. case 'payment_intent.succeeded':
  94. $paymentIntent = $event->data->object;
  95. $creditHistory = new CreditHistory;
  96. $creditHistory->id_user = 1;
  97. $creditHistory->id_user_action = 1;
  98. $creditHistory->id_producer = 1;
  99. $creditHistory->type = CreditHistory::TYPE_CREDIT ;
  100. $creditHistory->comment = null ;
  101. $creditHistory->amount = $paymentIntent->amount / 100 ;
  102. $creditHistory->mean_payment = MeanPayment::CREDIT_CARD ;
  103. $creditHistory->save();
  104. break;
  105. // ... handle other event types
  106. default:
  107. echo 'Received unknown event type ' . $event->type;
  108. }
  109. http_response_code(200);
  110. }
  111. }