12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- <?php
- /**
- * 自己写别抄,抄NMB抄
- */
- namespace App\Payments;
- class AlipayF2F {
- public function __construct($config)
- {
- $this->config = $config;
- }
- public function form()
- {
- return [
- 'app_id' => [
- 'label' => '支付宝APPID',
- 'description' => '',
- 'type' => 'input',
- ],
- 'private_key' => [
- 'label' => '支付宝私钥',
- 'description' => '',
- 'type' => 'input',
- ],
- 'public_key' => [
- 'label' => '支付宝公钥',
- 'description' => '',
- 'type' => 'input',
- ]
- ];
- }
- public function pay($order)
- {
- try {
- $gateway = new \Library\AlipayF2F();
- $gateway->setMethod('alipay.trade.precreate');
- $gateway->setAppId($this->config['app_id']);
- $gateway->setPrivateKey($this->config['private_key']); // 可以是路径,也可以是密钥内容
- $gateway->setAlipayPublicKey($this->config['public_key']); // 可以是路径,也可以是密钥内容
- $gateway->setNotifyUrl($order['notify_url']);
- $gateway->setBizContent([
- 'subject' => config('v2board.app_name', 'V2Board') . ' - 订阅',
- 'out_trade_no' => $order['trade_no'],
- 'total_amount' => $order['total_amount'] / 100
- ]);
- $gateway->send();
- return [
- 'type' => 0, // 0:qrcode 1:url
- 'data' => $gateway->getQrCodeUrl()
- ];
- } catch (\Exception $e) {
- abort(500, $e->getMessage());
- }
- }
- public function notify($params)
- {
- if ($params['trade_status'] !== 'TRADE_SUCCESS') return false;
- $gateway = new \Library\AlipayF2F();
- $gateway->setAppId($this->config['app_id']);
- $gateway->setPrivateKey($this->config['private_key']); // 可以是路径,也可以是密钥内容
- $gateway->setAlipayPublicKey($this->config['public_key']); // 可以是路径,也可以是密钥内容
- try {
- if ($gateway->verify($params)) {
- /**
- * Payment is successful
- */
- return [
- 'trade_no' => $params['out_trade_no'],
- 'callback_no' => $params['trade_no']
- ];
- } else {
- /**
- * Payment is not successful
- */
- return false;
- }
- } catch (\Exception $e) {
- /**
- * Payment is not successful
- */
- return false;
- }
- }
- }
|