mirror of
				https://github.com/v2board/v2board.git
				synced 2025-10-31 01:11:46 +08:00 
			
		
		
		
	add: alipay f2f
This commit is contained in:
		
							
								
								
									
										96
									
								
								app/Payments/AlipayF2F.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										96
									
								
								app/Payments/AlipayF2F.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,96 @@ | |||||||
|  | <?php | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 自己写别抄,抄NMB抄 | ||||||
|  |  */ | ||||||
|  | namespace App\Payments; | ||||||
|  |  | ||||||
|  | use Omnipay\Omnipay; | ||||||
|  |  | ||||||
|  | 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) | ||||||
|  |     { | ||||||
|  |         $gateway = Omnipay::create('Alipay_AopF2F'); | ||||||
|  |         $gateway->setSignType('RSA2'); //RSA/RSA2 | ||||||
|  |         $gateway->setAppId($this->config['app_id']); | ||||||
|  |         $gateway->setPrivateKey($this->config['private_key']); // 可以是路径,也可以是密钥内容 | ||||||
|  |         $gateway->setAlipayPublicKey($this->config['public_key']); // 可以是路径,也可以是密钥内容 | ||||||
|  |         $gateway->setNotifyUrl($order['notify_url']); | ||||||
|  |         $request = $gateway->purchase(); | ||||||
|  |         $request->setBizContent([ | ||||||
|  |             'subject' => config('v2board.app_name', 'V2Board') . ' - 订阅', | ||||||
|  |             'out_trade_no' => $order['trade_no'], | ||||||
|  |             'total_amount' => $order['total_amount'] / 100 | ||||||
|  |         ]); | ||||||
|  |         /** @var \Omnipay\Alipay\Responses\AopTradePreCreateResponse $response */ | ||||||
|  |         $response = $request->send(); | ||||||
|  |         $result = $response->getAlipayResponse(); | ||||||
|  |         if ($result['code'] !== '10000') { | ||||||
|  |             abort(500, $result['sub_msg']); | ||||||
|  |         } | ||||||
|  |         return [ | ||||||
|  |             'type' => 0, // 0:qrcode 1:url | ||||||
|  |             'data' => $response->getQrCode() | ||||||
|  |         ]; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public function notify($params) | ||||||
|  |     { | ||||||
|  |         $gateway = Omnipay::create('Alipay_AopF2F'); | ||||||
|  |         $gateway->setSignType('RSA2'); //RSA/RSA2 | ||||||
|  |         $gateway->setAppId($this->config['app_id']); | ||||||
|  |         $gateway->setPrivateKey($this->config['private_key']); // 可以是路径,也可以是密钥内容 | ||||||
|  |         $gateway->setAlipayPublicKey($this->config['public_key']); // 可以是路径,也可以是密钥内容 | ||||||
|  |         $request = $gateway->completePurchase(); | ||||||
|  |         $request->setParams($_POST); //Optional | ||||||
|  |         try { | ||||||
|  |             /** @var \Omnipay\Alipay\Responses\AopCompletePurchaseResponse $response */ | ||||||
|  |             $response = $request->send(); | ||||||
|  |             if ($response->isPaid()) { | ||||||
|  |                 /** | ||||||
|  |                  * 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; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user