Laravel payment dummy driver, a dummy payment gateway for development.
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

DummyPayDriver.php 1.8KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <?php
  2. namespace MirfalahTech\Laravel\Payment\Gateway\DummyPay;
  3. use Illuminate\Http\Request;
  4. use Illuminate\Support\Facades\Response as Res;
  5. use MirfalahTech\Laravel\Payment\Contracts\PayableEntity;
  6. use MirfalahTech\Laravel\Payment\Contracts\PaymentGatewayDriver;
  7. use Symfony\Component\HttpFoundation\Response;
  8. class DummyPayDriver implements PaymentGatewayDriver
  9. {
  10. /**
  11. * @var string
  12. */
  13. protected $callback_url;
  14. /**
  15. * @var string
  16. */
  17. protected $return_url;
  18. public function __construct(string $callback_url, string $return_url){
  19. $this->callback_url = rtrim($callback_url, '/');
  20. $this->return_url = rtrim($return_url, '/');
  21. }
  22. public function createPaymentURL(PayableEntity $payable, array $options = []): string
  23. {
  24. $order_id = $payable->getBillId();
  25. return "$this->callback_url?".http_build_query(compact('order_id'));
  26. }
  27. public function verifyGatewayReturn(Request $request): bool
  28. {
  29. return true;
  30. }
  31. public function verifyGatewayCallback(Request $request, Response &$response = null): bool
  32. {
  33. if($request->query->has('status')){
  34. $response = Res::redirectTo($this->return_url);
  35. return $request->query->get('status') == 'success';
  36. } else {
  37. $order_id = $request->query->get('order_id');
  38. /** @noinspection HtmlUnknownTarget */
  39. $html = sprintf(
  40. '<a href="%s">Click Here for Positive Response</a><br/><br/><a href="%s">Click Here for Negative Response</a>',
  41. $this->callback_url.'?'.http_build_query(['order_id' => $order_id, 'status' => 'success']),
  42. $this->callback_url.'?'.http_build_query(['order_id' => $order_id, 'status' => 'failed'])
  43. );
  44. $response = Res::make($html);
  45. return false;
  46. }
  47. }
  48. }