root 5 years ago
parent
commit
4d75f5a7f2
1 changed files with 44 additions and 0 deletions
  1. 44 0
      app/Http/Controllers/Guest/OrderController.php

+ 44 - 0
app/Http/Controllers/Guest/OrderController.php

@@ -5,10 +5,54 @@ namespace App\Http\Controllers\Guest;
 use Illuminate\Http\Request;
 use App\Http\Controllers\Controller;
 use App\Models\Order;
+use Omnipay\Omnipay;
 use Illuminate\Support\Facades\Log;
 
 class OrderController extends Controller
 {
+    public function alipayNotify (Request $request) {
+        Log::info('alipayNotifyData: ' . json_encode($_POST));
+        $gateway = Omnipay::create('Alipay_AopF2F');
+        $gateway->setSignType('RSA2'); //RSA/RSA2
+        $gateway->setAppId(config('v2board.alipay_appid'));
+        $gateway->setPrivateKey(config('v2board.alipay_privkey')); // 可以是路径,也可以是密钥内容
+        $gateway->setAlipayPublicKey(config('v2board.alipay_pubkey')); // 可以是路径,也可以是密钥内容
+        $request = $gateway->completePurchase();
+        $request->setParams($_POST); //Optional
+        try {
+            /** @var \Omnipay\Alipay\Responses\AopCompletePurchaseResponse $response */
+            $response = $request->send();
+            
+            if($response->isPaid()){
+                $order = Order::where('trade_no', $_POST['out_trade_no'])->first();
+                if (!$order) {
+                    abort(500, 'ERROR');
+                }
+                if ($order->status !== 0) {
+                    die('SUCCESS');
+                }
+                $order->status = 1;
+                if (!$order->save()) {
+                    abort(500, 'ERROR');
+                }
+                /**
+                 * Payment is successful
+                 */
+                die('success'); //The response should be 'success' only
+            }else{
+                /**
+                 * Payment is not successful
+                 */
+                die('fail');
+            }
+        } catch (Exception $e) {
+            /**
+             * Payment is not successful
+             */
+            die('fail');
+        }
+    }
+
     public function stripeNotify (Request $request) {
         Log::info('stripeNotifyData: ' . json_encode($request->input()));