diff --git a/app/Http/Controllers/WechatPayController.php b/app/Http/Controllers/WechatPayController.php index f15292b..752438a 100644 --- a/app/Http/Controllers/WechatPayController.php +++ b/app/Http/Controllers/WechatPayController.php @@ -57,7 +57,6 @@ class WechatPayController extends Controller ]; $body = $request->all(); // $body = json_encode($body, JSON_UNESCAPED_UNICODE); - Log::info("请求体", ["body" => $request->getContent()]); Log::info("请求头", ["headers" => $headers]); Log::info("请求体", ["body" => $body]); $res = WechatPayService::mchTransferCallback($headers, $body); diff --git a/app/Services/WechatPayService.php b/app/Services/WechatPayService.php index 1caa11f..9dc3238 100644 --- a/app/Services/WechatPayService.php +++ b/app/Services/WechatPayService.php @@ -175,6 +175,38 @@ class WechatPayService { // $data = json_decode($rawBody, true); + $callbackData = `{ + "id": "a696501c-e681-57d9-8340-1027264847d8", + "create_time": "2026-04-24T16:44:29+08:00", + "resource_type": "encrypt-resource", + "event_type": "MCHTRANSFER.BILL.FINISHED", + "summary": "商家转账单据终态通知", + "resource": { + "original_type": "mch_payment", + "algorithm": "AEAD_AES_256_GCM", + "ciphertext": "nzEqwUmtvgt7eV6zaT1HLLSaPeqN5X7h8SXJYUSpJ36piZmZpBWS9Qxef8po36Xp0Q0rY6vdHpALNivdJ9lYv8lwxc2nY8zeOZmNwJ0c2uHu3NKjpK1dTraMPTPKZB+jf4k4qyJnjMC7qvwRSL9mHuvzUNvwJ8qO9t9XQc+v1X+o9fOekZ++84LZ4SYryu8njOicJ+Y6wfG5w/UyoE8NIm1PyUrQXp8meRpebzEKs9RVmUny58fHn8uNtiKrYV+ErbX9uGjeL+PGw8uKNI2bs76y0QTgEFfukmALioK+m1jC3AVARmo1ucJp3opbul2Poc4HLRTqsA0DVEuZZQRElhAkEFHpwOAwaovUcVBHS3gt5/LnVDPx6YuOmf5DxovVHb2bjdyZlcGoTnvh1x+zvN2PqAgl/FBH", + "associated_data": "mch_payment", + "nonce": "1UnsfIH54DTm" + } +}`; + $data = json_decode($callbackData, true); + $resource = $data['resource']; + + // 替换成你实际的 APIv3 密钥 + $apiV3Key = "r4wu1Ms2bwApMXFwUJ7jgA5NmMJvhiyL"; // 👈 改成你的真实密钥 + + $decrypted = AesGcm::decrypt( + base64_decode($resource['ciphertext']), + $apiV3Key, + $resource['nonce'], + $resource['associated_data'] + ); + + echo "✅ 解密成功!\n"; + echo "解密后的数据:\n"; + print_r(json_decode($decrypted, true)); + dd($decrypted); + if (!isset($data['resource'])) { Log::info("缺少参数 resource"); return null;