diff --git a/app/Payments/EPay.php b/app/Payments/EPay.php new file mode 100644 index 00000000..a87b97a8 --- /dev/null +++ b/app/Payments/EPay.php @@ -0,0 +1,69 @@ +config = $config; + } + + public function form() + { + return [ + 'url' => [ + 'label' => 'URL', + 'description' => '', + 'type' => 'input', + ], + 'pid' => [ + 'label' => 'PID', + 'description' => '', + 'type' => 'input', + ], + 'key' => [ + 'label' => 'KEY', + 'description' => '', + 'type' => 'input', + ] + ]; + } + + public function pay($order) + { + $params = [ + 'money' => $order['total_amount'] / 100, + 'name' => $order['trade_no'], + 'notify_url' => $order['notify_url'], + 'return_url' => $order['return_url'], + 'out_trade_no' => $order['trade_no'], + 'pid' => $this->config['pid'] + ]; + ksort($params); + reset($params); + $str = stripslashes(urldecode(http_build_query($params))) . $this->config['key']; + $params['sign'] = md5($str); + $params['sign_type'] = 'MD5'; + return [ + 'type' => 1, // 0:qrcode 1:url + 'data' => $this->config['url'] . '/submit.php?' . http_build_query($params) + ]; + } + + public function notify($params) + { + $sign = $params['sign']; + unset($params['sign']); + unset($params['sign_type']); + ksort($params); + reset($params); + $str = stripslashes(urldecode(http_build_query($params))) . $this->config['key']; + if ($sign !== md5($str)) { + return false; + } + return [ + 'trade_no' => $params['out_trade_no'], + 'callback_no' => $params['trade_no'] + ]; + } +}