self::$appid, 'cusid' => self::$cusid, 'version'=>11, 'trxamt'=>'1',//交易金额 'reqsn'=>'fdsfsdf' . date('YmdHis') . rand(1000, 9999),//订单号 'paytype'=>'W06',//交易方式 W06小程序 'randomstr'=>bin2hex(random_bytes(32 / 2)), 'body'=>'微信小程序体检订单',//订单标题 'notify_url'=>'https://ezeys-tj.sixinyun.com', 'sub_appid'=>env('WX_APP_ID'), 'acct'=>'oV-6x7bN8zp2UNM3z1xbvz-EsIKQ',//openid 'signtype' => 'RSA', // 'sign' => '', // 可有可无,下面会排除 ]; // 商户私钥(注意:需使用 PKCS#8 格式) // $privateKey=$this->PrivatedKey(self::$key); $sign = $this->Sign($data); $data['sign'] = $sign; return self::ValidSign($data); $response=Http::Post(self::$PayUrl,$data); if ($response->successful()) { $res = $response->json(); var_dump($res); }else{ Yo::error_echo(999999, ['请求失败']); } return response()->json([ 'data' => $data, ]); } public static function Sign(array $array){ ksort($array); $bufSignSrc = self::ToUrlParams($array); $key="MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCS6r706Ogi7FpYV71ccH1jwC2NZGcrWzt1Xw6rJ6+ZEeICQjUWZLPqc/D4fvh3xJPaxIqXlcA5y9xlPVO7hhoVqAKY3uPC519j6IFBxIUYC0fKWZdCpBK/kfcaqZu6ChH+hmawqfwqRjYeIGJLW2xyS8GAxQX6Uj32bZHW0xfl6Ia6lmVZ2pNpO8RS8ExhhuNc4Mm9G72+drQKfj809NNwO7fzNWa6htogszbhcf+n5pBqSzGn6j0RAnq6Eylza8GOt6LXI04KpvglPsvdCgJYK2VdezADG3XjBSdFo7ezyh0YRYVgzEWpAA1bFe6eOJPsMccetxVr/s1PwDXg3kMnAgMBAAECggEARUHpRA3ZhMETs+qkp0OWMKRjNPC8W+l1pZZqlU+vjUKrXvI0EXrmf6MpWRON8PPX2XzmcqATDovmOUmIQ/HrMQNTOhp0lyg4RSJRcJ4COfvzW1YRosYy2mEmcki7Ux+1LN3R4f04FPulPl14yNpvzI+eyCPY9hC4CgfMBM/dR7E3nU/kpesGhfwPs/prXHs9Dy/r6YG7RjSF/QANga8rVFMnQJpxSYBABRVRePtTThTZ8fTgabLpqXOihqhoBSYpt0sP5FK7cMOKJn93H4Y2UbSzcLZRdbm1vjuVILxyHe1XQ72gFbHucy1XbjQ+GKMLaHkXx9ikqjaeg5lQIWpWCQKBgQDCCLGu9p4cy8paRTykf7El0SaPYcsW8JrJqfd5USV/gKNGJ9N+mGxEo+RszD61L5Vufniupzbfepl1kCVJGQ2lqgfJe1r3RToF8PPIvq/IdBfcVpIOeIf6y/JK0OJwBnk4WwTprWIicUDW5Ju+vvddxOL2xAr+f+pZJG79PdYDfwKBgQDB1f0CE3ExhzfznQyLO7T418qXrmzSkp0qi7KS+zNWvamgHNBovqsZsS604lH6CTag8FPOuvPUaNiDFWV6lbQ7ve8Ta9xtQ6if3yNlARliHgWhM/Cy+BLTC4+1Eq2cD62ud7tFbxxcio60PVihGLsyiVSJn4X/W3QGksGSot70WQKBgQCDl9/huHJNN00aYcCaE9vxuOI89ecFvNJNmM804PrceULCjroaLoenGbwOqYqR2R6wXGe+k7tcX0p6d/NBmxMtWp6DX/y2nKWYZ+z+JY0UFuAj2DagR9B5IB5H7VjU/x7xQJGZZbSbhVGjLFIQUHV1i9Ud5KFMLzahlFsNtwVRQwKBgQCLuDvPq0QEd3uVVrccBcXFOYcHHuvCPXyclmX6HKg89im3CA4R8p5Svqz0Jc8BdHK0P4eplIj9qzWmB15GpnJsPdR/I1iYShTaaHWS8N/jIdDdChuOZdLr3YGQ/A24WHTRNez/d7/x1M5YjX+9X55QJz2QljR4hOt1cYOmt1AOwQKBgQCgb4HhAo/IRDifuXQc5SOgbM/woZ4/9Yxbdv3f9vBX9xRfcJ9deFsi513jgow6LF0+eS6rh189Ds/kXM1/wgC4dg+6rrW3x/gYXSXv6gaWTmYF0xtkS1TV/7JIu1CJmxA91aJEODEdjBQZWoFqZiQlTE1t2CuPsvTDq/HpedEJ5g=="; $private_key = chunk_split($key , 64); $key = "-----BEGIN RSA PRIVATE KEY-----\n".$private_key."-----END RSA PRIVATE KEY-----"; // echo $key; if(openssl_sign($bufSignSrc, $signature, $key )){ // echo 'sign success'; }else{ echo 'sign fail'; } $sign = base64_encode($signature);//加密后的内容通常含有特殊字符,需要编码转换下,在网络间通过url传输时要注意base64编码是否是url安全的 //echo $sign; // echo $signature,"\n"; return $sign; } public static function ToUrlParams(array $array) { $buff = ""; foreach ($array as $k => $v) { if($v != "" && !is_array($v)){ $buff .= $k . "=" . $v . "&"; } } $buff = trim($buff, "&"); return $buff; } /** * 校验签名 * @param array 参数 * @param unknown_type appkey */ public static function ValidSign(array $array){ $sign =$array['sign']; unset($array['sign']); ksort($array); $bufSignSrc = self::ToUrlParams($array); $public_key='MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCm9OV6zH5DYH/ZnAVYHscEELdCNfNTHGuBv1nYYEY9FrOzE0/4kLl9f7Y9dkWHlc2ocDwbrFSm0Vqz0q2rJPxXUYBCQl5yW3jzuKSXif7q1yOwkFVtJXvuhf5WRy+1X5FOFoMvS7538No0RpnLzmNi3ktmiqmhpcY/1pmt20FHQQIDAQAB'; $public_key = chunk_split($public_key , 64, "\n"); $key = "-----BEGIN PUBLIC KEY-----\n".$public_key."-----END PUBLIC KEY-----\n"; $result= openssl_verify($bufSignSrc,base64_decode($sign), $key ); return $result; } }