Browse Source

清除多余信息

linwu 2 years ago
parent
commit
5243f6e616

+ 0 - 128
app/admin/controller/Demo.php

@@ -1,128 +0,0 @@
-<?php
-
-namespace app\admin\controller;
-
-use payment\wechat\WechatTransfers;
-use think\Response;
-use think\Config;
-/**
- * 示例接口
- */
-class Demo
-{
-
-    //如果$noNeedLogin为空表示所有接口都需要登录才能请求
-    //如果$noNeedRight为空表示所有接口都需要验证权限才能请求
-    //如果接口已经设置无需登录,那也就无需鉴权了
-    //
-    // 无需登录的接口,*表示全部
-    protected $noNeedLogin = ['*'];
-    // 无需鉴权的接口,*表示全部
-    protected $noNeedRight = ['*'];
-
-    /**
-     * 测试方法
-     *
-     */
-    public function test()
-    {
-        $batch_name   = '测试提现功能';//转账的名称
-        $out_trade_no = 'lgd'.getUniId();//单号
-        $money        = 1;//金额
-        $openid       = 'o4a9g5ffjsMcXS9wCtTyONqMTdEc';//用户openid
-        $detail = [];
-        $transfers = new WechatTransfers();
-        $detail[] = $transfers->getDetailList($out_trade_no,$money,$batch_name,$openid);
-        $res = $transfers->transfers($batch_name,$detail);
-        halt($res);
-//        $this->tixian($batch_name,$out_trade_no,$money,$openid);
-    }
-
-    public function tixian($batch_name,$out_trade_no,$money,$openid){
-        $url = 'https://api.mch.weixin.qq.com/v3/transfer/batches';
-        $pars = [];
-        $pars['appid'] = config('wxconfig.appId');//直连商户的appid
-        $pars['out_batch_no'] = 'lg'.date('Ymd').mt_rand(1000, 9999);//商户系统内部的商家批次单号,要求此参数只能由数字、大小写字母组成,在商户系统内部唯一
-        $pars['batch_name']   = $batch_name;//该笔批量转账的名称
-        $pars['batch_remark'] = $batch_name;//转账说明,UTF8编码,最多允许32个字符
-        $pars['total_amount'] = intval($money * 100);//转账总金额 单位为“分”
-        $pars['total_num']    = 1;//转账总笔数
-        $pars['transfer_detail_list'][0]  = [
-            'out_detail_no'=>'lgd'.$out_trade_no,
-            'transfer_amount'=>$pars['total_amount'],
-            'transfer_remark'=>$batch_name,
-            'openid'=>$openid
-        ];//转账明细列表
-        $token  = $this->getToken($pars);//获取token
-        $res    = $this->https_request($url,json_encode($pars),$token);//发送请求
-        $resArr = json_decode($res,true);
-        halt($resArr);
-        //成功返回
-        // array(3) {
-        //   ["batch_id"] => string(40) "1030001016101247194272022062900873000000"
-        //   ["create_time"] => string(25) "2022-06-29T10:21:30+08:00"
-        //   ["out_batch_no"] => string(16) "sjzz202206291647001"
-        // }
-    }
-    function https_request($url,$data = null,$token){
-        $curl = curl_init();
-        curl_setopt($curl, CURLOPT_URL, (string)$url);
-        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
-        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
-        if (!empty($data)){
-            curl_setopt($curl, CURLOPT_POST, 1);
-            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
-        }
-        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
-        //添加请求头
-        $headers = [
-            'Authorization:WECHATPAY2-SHA256-RSA2048 '.$token,
-            'Accept: application/json',
-            'Content-Type: application/json; charset=utf-8',
-            'User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
-        ];
-        if(!empty($headers)){
-            curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
-        }
-        $output = curl_exec($curl);
-        curl_close($curl);
-        return $output;
-    }
-    public function getToken($pars)
-    {
-        // $url = 'https://api.mch.weixin.qq.com/v3/certificates';
-        $url = 'https://api.mch.weixin.qq.com/v3/transfer/batches';
-        $http_method = 'POST';//请求方法(GET,POST,PUT)
-        $timestamp   = time();//请求时间戳
-        $url_parts   = parse_url($url);//获取请求的绝对URL
-        $nonce       = $timestamp.rand('10000','99999');//请求随机串
-        $body        = json_encode((object)$pars);//请求报文主体
-        $stream_opts = [
-            "ssl" => [
-                "verify_peer"=>false,
-                "verify_peer_name"=>false,
-            ]
-        ];
-
-        $apiclient_cert_path = 'https://'.$_SERVER['HTTP_HOST'].'/uploads/apiclient/apiclient_cert.pem';
-        $apiclient_key_path  = 'https://'.$_SERVER['HTTP_HOST'].'/uploads/apiclient/apiclient_key.pem';
-
-        $apiclient_cert_arr = openssl_x509_parse(file_get_contents($apiclient_cert_path,false, stream_context_create($stream_opts)));
-        $serial_no          = $apiclient_cert_arr['serialNumberHex'];//证书序列号
-        $mch_private_key    = file_get_contents($apiclient_key_path,false, stream_context_create($stream_opts));//密钥
-        $merchant_id = config('wxconfig.payMchId');//商户id
-        $canonical_url = ($url_parts['path'] . (!empty($url_parts['query']) ? "?${url_parts['query']}" : ""));
-        $message = $http_method."\n".
-            $canonical_url."\n".
-            $timestamp."\n".
-            $nonce."\n".
-            $body."\n";
-        openssl_sign($message, $raw_sign, $mch_private_key, 'sha256WithRSAEncryption');
-        $sign = base64_encode($raw_sign);//签名
-        $schema = 'WECHATPAY2-SHA256-RSA2048';
-        $token = sprintf('mchid="%s",nonce_str="%s",timestamp="%d",serial_no="%s",signature="%s"',
-            $merchant_id, $nonce, $timestamp, $serial_no, $sign);//微信返回token
-        return $token;
-    }
-
-}

+ 10 - 45
app/admin/controller/Index.php

@@ -3,10 +3,6 @@
 namespace app\admin\controller;
 
 use payment\wechat\WechatTransfers;
-use WeChatPay\Builder;
-use WeChatPay\Crypto\Rsa;
-use WeChatPay\Transformer;
-use WeChatPay\Util\PemUtil;
 
 class Index
 {
@@ -17,46 +13,15 @@ class Index
 
     public function t1()
     {
-        // 商户号
-        $merchantId = config('wxconfig.payMchId');
-
-// 从本地文件中加载「商户API私钥」,「商户API私钥」会用来生成请求的签名
-        $merchantPrivateKeyFilePath = file_get_contents(root_path('extend/payment/cert') . 'apiclient_key.pem');
-        $merchantPrivateKeyInstance = Rsa::from($merchantPrivateKeyFilePath, Rsa::KEY_TYPE_PRIVATE);
-
-// 「商户API证书」的「证书序列号」
-        $merchantCertificateSerial = config('wxconfig.serial');
-
-// 从本地文件中加载「微信支付平台证书」,用来验证微信支付应答的签名
-        $platformCertificateFilePath = file_get_contents(root_path('extend/payment/cert') . 'cert.pem');
-        $platformPublicKeyInstance   = Rsa::from($platformCertificateFilePath, Rsa::KEY_TYPE_PUBLIC);
-
-// 从「微信支付平台证书」中获取「证书序列号」
-        $platformCertificateSerial = PemUtil::parseCertificateSerialNo($platformCertificateFilePath);
-
-// 构造一个 APIv3 客户端实例
-        $instance = Builder::factory([
-            'mchid'      => $merchantId,
-            'serial'     => $merchantCertificateSerial,
-            'privateKey' => $merchantPrivateKeyInstance,
-            'certs'      => [
-                $platformCertificateSerial => $platformPublicKeyInstance,
-            ],
-        ]);
-
-// 发送请求
-        $resp = $instance->chain('v3/certificates')->get(
-            ['debug' => true] // 调试模式,https://docs.guzzlephp.org/en/stable/request-options.html#debug
-        );
-        halt($resp->getBody());
-
-    }
-
-    public function t2()
-    {
-        halt(getUniId());
-        $server = new WechatTransfers(config('wxconfig.appId'),config('wxconfig.payMchId'),config('wxconfig.appSecret'),$_SERVER['SERVER_ADDR']);
-        $res = $server->sendMoney(1,'o4a9g5cDIEVzS7zVzE-_VEK8y9Yg');
-
+        halt(11);
+        $batch_name   = '测试提现功能';//转账的名称
+        $out_trade_no = 'lgd'.getUniId();//单号
+        $money        = 1;//金额
+        $openid       = 'o4a9g5ffjsMcXS9wCtTyONqMTdEc';//用户openid
+        $detail = [];
+        $transfers = new WechatTransfers();
+        $detail[] = $transfers->getDetailList($out_trade_no,$money,$batch_name,$openid);
+        $res = $transfers->transfers($batch_name,$detail);
+        halt($res);
     }
 }

BIN
public/uploads/apiclient/apiclient_cert.p12


+ 0 - 24
public/uploads/apiclient/apiclient_cert.pem

@@ -1,24 +0,0 @@
------BEGIN CERTIFICATE-----
-MIID8zCCAtugAwIBAgIUI1Sl0S6FIBxFDMCcU+eBE7/vcmMwDQYJKoZIhvcNAQEL
-BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT
-FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg
-Q0EwHhcNMjIwODMxMDA1NDQxWhcNMjcwODMwMDA1NDQxWjCBhDETMBEGA1UEAwwK
-MTYxOTM0OTA1MjEbMBkGA1UECgwS5b6u5L+h5ZWG5oi357O757ufMTAwLgYDVQQL
-DCfnpo/lu7rnnIHmmYvmsZ/kurrlipvotYTmnKzmnInpmZDlhazlj7gxCzAJBgNV
-BAYMAkNOMREwDwYDVQQHDAhTaGVuWmhlbjCCASIwDQYJKoZIhvcNAQEBBQADggEP
-ADCCAQoCggEBALdRMXOxwrJ14pmXL3SDe6CV/1M9a0kuTXbUliUKEYC2amYWT+KT
-TtLgjlMt7T5Opefs0wngMKT3JeMVEcKwKtxQPE35JAWZ93TifMjjV+/OSwV7qogj
-4TDH9UP4FPeWcU7Cg76h/vso5mMR1MnkF35lRkQ0/LrdLfW0QizYW0fxtjgysKgU
-UtxRfS+yWrd1DB6trp1Isjl3IBrdiZmZTso7/8iLwmEBtYH8uUohcDGKF99zhj7a
-LW5q6ZpNKfflGP2SeIqU0SOW2hbqyrKTcrcYOJ3yj1txB3xXsGALzx36bdVmd53b
-OhtYsOS/UgrJgEk1y98sI0tLYFtgVXICkacCAwEAAaOBgTB/MAkGA1UdEwQCMAAw
-CwYDVR0PBAQDAgTwMGUGA1UdHwReMFwwWqBYoFaGVGh0dHA6Ly9ldmNhLml0cnVz
-LmNvbS5jbi9wdWJsaWMvaXRydXNjcmw/Q0E9MUJENDIyMEU1MERCQzA0QjA2QUQz
-OTc1NDk4NDZDMDFDM0U4RUJEMjANBgkqhkiG9w0BAQsFAAOCAQEAmUjL9WVcazvw
-OLjZm9ptn3D0dXt/u6Ygrs81WQs9igVGgGmaaQHmJV5Qzk3Ica5odRK9wlC12sjE
-5/XyoFWja3BsTubb6+yMENAiawfEZaMjIIPH35tawlEdpN7DAQIs8SO5p+l79Dg0
-d+Pc+Zu1Wru1j+MYpVfhb3xXu+cqtgVqeSk9W0P6rLy89PHAvFzZpE23LpEZS4cp
-kHcaCZAhHvsic2w+Ym0zOV/3ifsaqAq5V/xcyIU0Qe5ZPlr+Xsou4JOt9ZyGCW5P
-S5aRkEq9dt1+yJQhVAJUEx6Hfb+qyHxOQVSqqJWswkTzNo4D7oZ7jH7BBh7WvzGg
-TzlQi2xGgw==
------END CERTIFICATE-----

+ 0 - 28
public/uploads/apiclient/apiclient_key.pem

@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC3UTFzscKydeKZ
-ly90g3uglf9TPWtJLk121JYlChGAtmpmFk/ik07S4I5TLe0+TqXn7NMJ4DCk9yXj
-FRHCsCrcUDxN+SQFmfd04nzI41fvzksFe6qII+Ewx/VD+BT3lnFOwoO+of77KOZj
-EdTJ5Bd+ZUZENPy63S31tEIs2FtH8bY4MrCoFFLcUX0vslq3dQwera6dSLI5dyAa
-3YmZmU7KO//Ii8JhAbWB/LlKIXAxihffc4Y+2i1uaumaTSn35Rj9kniKlNEjltoW
-6sqyk3K3GDid8o9bcQd8V7BgC88d+m3VZned2zobWLDkv1IKyYBJNcvfLCNLS2Bb
-YFVyApGnAgMBAAECggEAAVTZoxl7bIhmqO7sLVB3KWdtf1FG4jUv4tkQbhxwnBq3
-Ex6+XcrsG6P95KTEwFsZ4WFa9wtlzwzsfYW9p0hYR1ld1sMke9Xuci7i8SKVlOxO
-py+KwYphLFWHdoLqxBGXqRbIli3fCDv30Ghkv0Kk2QorRHuOCl1o5Av3HxRDNXaM
-0WO9tqp2aq6U8Xmbk/AtQ810C3VcjoZK6SPO78boBBflPg0ZwSnNe/8/7R5d8pCE
-Lqc93nkGjgfD+VXfGmj789nG6jjAQEEku+0T7nU1q6wiGfIO1Xif6FfT5Nz1lN1m
-anm+zbdCk2+dMCt8VFH/5I+1Mj9CyzBP020IezfOAQKBgQDlLLCD2yvitI8buA2b
-sjt96IQGEr/87vjV2k1z0xI9ytiJ+4b3fZbB2xxDWDmQOwZtwtz96ZITmoYQuqst
-92SKEDKghzeAK39jJ5G/nFgmlZQMZ6qlC++c1PIZ83t+YHaMp2x+Gi8lc6JjXpbr
-mko2XaGKAz3nRGQsfV8XcVGKwQKBgQDMxl4V/krQWLOGAhp/zWyJ647Zh6BdJops
-+kKZObRarbAv6eBTWfmpioP/bXIOyin8TmB4Wi27rhMY0buQSZkaT2b2Ialui8dW
-Fz9OBo8goZ8vZYXh9XGdw4FtLbff5MkbVJzIUzwO5xJ4ql3pxUuLO2P796au4KlY
-lGZmvdk+ZwKBgQDekMMwmwcI2a/uDJZyseqjAdBOEaGQpAjXr3Xu2XrqtfgMMVHH
-Q5nI1OGi6ail0R0SNd/nXBI4paYz0wXx00Q57TctvYQCHrxNcJ1UiCL3/eZVEcyh
-E3F2Tzx8RYGWn1oiiWqNISLObXm0paVOVH5kRBRg83sIAdyDdJKIMs4tQQKBgEE5
-skBZJmVky5IU23H38emggXjijX7+Rrtdn5cE3WDA0E0CtvR1xWNufor+xoTVejgm
-ku3i84xDb0vJim/0MXNC9W3S3RAcL9tJPl3REwf20yiasuF9d7ojyvcGx/nl+vTc
-p6/ba1bn3WdYBN/wexaXTUq14H71iptvcYqqUCdjAoGANK+/iJA0LPQWq3RVD1Zd
-wI3b5NPTw85E2RwIBV+R7wLusMVlmQdz/AvoaibL2ElcnqjUOfADRtZGPLJg3GtR
-KeEi2r8aVIoEUbQk0diuvp7w8UJxQ9Hysxcvvtxs7X58GD2auVmxnany2WSl47rB
-U/lofVQrlNvYdpMyBMyQI/o=
------END PRIVATE KEY-----

+ 0 - 23
public/uploads/apiclient/cert.pem

@@ -1,23 +0,0 @@
------BEGIN CERTIFICATE-----
-MIID3DCCAsSgAwIBAgIUTM+ck3JVXSYdflq8mz/psb9IJXcwDQYJKoZIhvcNAQEL
-BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT
-FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg
-Q0EwHhcNMjIwMTE4MDIzNzA5WhcNMjcwMTE3MDIzNzA5WjBuMRgwFgYDVQQDDA9U
-ZW5wYXkuY29tIHNpZ24xEzARBgNVBAoMClRlbnBheS5jb20xHTAbBgNVBAsMFFRl
-bnBheS5jb20gQ0EgQ2VudGVyMQswCQYDVQQGDAJDTjERMA8GA1UEBwwIU2hlblpo
-ZW4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC8ZJYkVm9v8EzQ3AtL
-aYVkpcm8TLRsdXuk3Yfm7N9grz9XiJhped/NAOqCbr3SId8Hr5JPoM0UNc4G8oQL
-TX13J7bSo3choZP+qyllrrK+3HPTZWAPVOpeUYuddvXtMgl0kunh7gqUPfwsWT48
-0mXbBXqiPYaIR0+F/ubwIB73IxNSArvrAhNa4kfMC8BoWVrVvxwpuYNdLrjaN8AO
-gA+WqzUCuwGernF68rja5uQcypV3WoF7jN3boLSsJuP92towMDi7ROUxdEgqS1Xq
-/tSKnB4yauXaQ0oDkIFbDLRTjDRoNNC62rUUZU38s1QNyk+cehvNyePiV/9SbvxK
-VklRAgMBAAGjgYEwfzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIE8DBlBgNVHR8EXjBc
-MFqgWKBWhlRodHRwOi8vZXZjYS5pdHJ1cy5jb20uY24vcHVibGljL2l0cnVzY3Js
-P0NBPTFCRDQyMjBFNTBEQkMwNEIwNkFEMzk3NTQ5ODQ2QzAxQzNFOEVCRDIwDQYJ
-KoZIhvcNAQELBQADggEBAJU3dPGmWpeMLcegPx8HP4eFzil7vuKZxTvZoCaTbchS
-GZNDs+E4NQd8TIn5WMOBFt+gd8aQ2FomQ7kqz6/NQ2vFXb9JZd1dh+jzxH5K6Mqm
-Nr6+rhyAQigCT7Ts2uZdeaZIXWi/ZK+dAGEfNDacjSATvkagrYm14W1edZD0+0rv
-NxaG/JQBE7j2X8CI0a/dDpi3QUHIsdwaA+TyAKCaExP7qutiVxdEHqsDdozfS/VH
-EBvaKe8OarDK3tOxfZRGgmx+7aCBKih254Pku2MkwLT0XHIX88r0JLHehcQC6EUk
-xZ5IQEKd1Sh/yRImXM0FtGTAtFQL0Zf0H72djO3ZIpA=
------END CERTIFICATE-----

+ 0 - 19
public/uploads/apiclient/rootca.pem

@@ -1,19 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV
-UzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2Vy
-dGlmaWNhdGUgQXV0aG9yaXR5MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1
-MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0VxdWlmYXgxLTArBgNVBAsTJEVx
-dWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCBnzANBgkqhkiG9w0B
-AQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPRfM6f
-BeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+A
-cJkVV5MW8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kC
-AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQ
-MA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlm
-aWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTgw
-ODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvSspXXR9gj
-IBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQF
-MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA
-A4GBAFjOKer89961zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y
-7qj/WsjTVbJmcVfewCHrPSqnI0kBBIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh
-1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee9570+sB3c4
------END CERTIFICATE-----

+ 0 - 18
public/uploads/apiclient/证书使用说明.txt

@@ -1,18 +0,0 @@
-欢迎使用微信支付!
-附件中的三份文件(证书pkcs12格式、证书pem格式、证书密钥pem格式),为接口中强制要求时需携带的证书文件。
-证书属于敏感信息,请妥善保管不要泄露和被他人复制。
-不同开发语言下的证书格式不同,以下为说明指引:
-    证书pkcs12格式(apiclient_cert.p12)
-        包含了私钥信息的证书文件,为p12(pfx)格式,由微信支付签发给您用来标识和界定您的身份
-        部分安全性要求较高的API需要使用该证书来确认您的调用身份
-        windows上可以直接双击导入系统,导入过程中会提示输入证书密码,证书密码默认为您的商户号(如:1900006031)
-    证书pem格式(apiclient_cert.pem)
-        从apiclient_cert.p12中导出证书部分的文件,为pem格式,请妥善保管不要泄漏和被他人复制
-        部分开发语言和环境,不能直接使用p12文件,而需要使用pem,所以为了方便您使用,已为您直接提供
-        您也可以使用openssl命令来自己导出:openssl pkcs12 -clcerts -nokeys -in apiclient_cert.p12 -out apiclient_cert.pem
-    证书密钥pem格式(apiclient_key.pem)
-        从apiclient_cert.p12中导出密钥部分的文件,为pem格式
-        部分开发语言和环境,不能直接使用p12文件,而需要使用pem,所以为了方便您使用,已为您直接提供
-        您也可以使用openssl命令来自己导出:openssl pkcs12 -nocerts -in apiclient_cert.p12 -out apiclient_key.pem
-备注说明:  
-        由于绝大部分操作系统已内置了微信支付服务器证书的根CA证书,  2018年3月6日后, 不再提供CA证书文件(rootca.pem)下载