mirror of
				https://github.com/v2board/v2board.git
				synced 2025-10-31 17:31:49 +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