Bläddra i källkod

更新手工支付加密方式

兔姬桑 4 år sedan
förälder
incheckning
737d95b071
3 ändrade filer med 18 tillägg och 8 borttagningar
  1. 1 7
      app/Http/Controllers/Gateway/Manual.php
  2. 1 1
      app/Notifications/PaymentConfirm.php
  3. 16 0
      app/helpers.php

+ 1 - 7
app/Http/Controllers/Gateway/Manual.php

@@ -51,16 +51,10 @@ class Manual extends AbstractPayment
         $code = $request->input('sign');
         $status = $request->input('status');
         if ($code && $status) {
-            $id = openssl_decrypt(base64url_decode($code), 'aes-128-ctr', config('app.key'), OPENSSL_RAW_DATA);
-            $payment = Payment::findOrFail($id);
+            $payment = Payment::findOrFail((int) string_decrypt($code));
             if ($payment && $payment->order) {
                 $payment->order->complete();
             }
         }
     }
-
-    public function decode($string)
-    {
-        return openssl_decrypt(base64url_decode($string), 'aes-128-ctr', config('app.key'), OPENSSL_RAW_DATA);
-    }
 }

+ 1 - 1
app/Notifications/PaymentConfirm.php

@@ -29,7 +29,7 @@ class PaymentConfirm extends Notification
     {
         $order = $this->order;
         $goods = $this->order->goods;
-        $sign = base64url_encode(openssl_encrypt($order->payment->id, 'aes-128-ctr', config('app.key'), OPENSSL_RAW_DATA));
+        $sign = string_encrypt($order->payment->id);
         $message = sprintf("🛒 人工支付\n————————\n\t💰 金额:%s\n\t📦 商品:%s\n\t", $order->amount, $goods->name ?? '余额充值');
         foreach (User::role('Super Admin')->get() as $admin) {
             if (! $admin->telegram_user_id) {

+ 16 - 0
app/helpers.php

@@ -93,3 +93,19 @@ if (! function_exists('sysConfig')) {
         return config('settings.'.$name);
     }
 }
+
+// 字段加密
+if (! function_exists('string_encrypt')) {
+    function string_encrypt(string $data): string
+    {
+        return base64url_encode(openssl_encrypt($data, 'aes-128-ctr', hash('sha256', config('app.key')), OPENSSL_RAW_DATA, substr(sha1(config('app.key')), 0, 16)));
+    }
+}
+
+// 字段解密
+if (! function_exists('string_decrypt')) {
+    function string_decrypt(string $data): string
+    {
+        return openssl_decrypt(base64url_decode($data), 'aes-128-ctr', hash('sha256', config('app.key')), OPENSSL_RAW_DATA, substr(sha1(config('app.key')), 0, 16));
+    }
+}