Pay.php 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. /**
  3. * PayDriver.php UTF-8
  4. * 支付驱动
  5. *
  6. * @date : 2018/2/8 11:47
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : wuyonghong <wyh@huosdk.com>
  10. * @version : HUOSDK 8.0
  11. */
  12. namespace huolib\pay;
  13. use huolib\status\OrderStatus;
  14. use think\Exception;
  15. use think\Log;
  16. class Pay {
  17. static $ins;
  18. private $payway_map
  19. = [
  20. 'default' => 'Alipay',
  21. 'alipay' => 'Alipay',
  22. 'wxpay' => 'Wxpay',
  23. 'shengpay' => 'Shengpay',
  24. 'balance' => 'Balancepay'
  25. ];
  26. public static function ins() {
  27. if (self::$ins == null) {
  28. self::$ins = new self();
  29. }
  30. return self::$ins;
  31. }
  32. /**
  33. * @param string $payway
  34. *
  35. * @return mixed
  36. * @throws Exception
  37. */
  38. public function get($payway = '') {
  39. if (empty($payway)) {
  40. return $this->register('default');
  41. }
  42. $_pay_obj = $this->register($payway);
  43. if (!isset($_pay_obj)) {
  44. Log::write(
  45. "func=".__FUNCTION__."&class=".__CLASS__."&errmsg=registerError&payway=".$payway
  46. .'objName='.$this->payway_map[$payway], 'info'
  47. );
  48. throw new Exception(OrderStatus::getMsg(OrderStatus::PAYWAY_INCORRECT), OrderStatus::PAYWAY_INCORRECT);
  49. }
  50. return $_pay_obj;
  51. }
  52. /**
  53. * @param string $payway
  54. *
  55. * @return mixed
  56. */
  57. protected function register($payway = '') {
  58. $payway = strtolower($payway);
  59. $_class = '\\huolib\\pay\\driver\\'.$this->payway_map[$payway];
  60. return new $_class();
  61. }
  62. }