#### 1. 前言 --- 单次提现金额要求在 0.3 元 - 5000 元之间 企业付款到零钱需要使用商户证书, 当配置的证书错误时会抛出异常, 而不是以返回值的形式返回 EasyWechat 4.x 企业付款 : [https://easywechat.com/docs/4.x/payment/transfer](https://easywechat.com/docs/4.x/payment/transfer) 微信支付开发文档 : [https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=14_1](https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=14_1) #### 2. 执行提现 --- **特别注意: 证书配置错误时会抛出异常, 而不是以返回值的形式返回** ``` use EasyWeChat\Factory; $config = [ // 必要配置 'app_id' => 'xxxx',//小程序APPID 'mch_id' => 'your-mch-id',//商户ID 'key' => 'key-for-signature', // 商户API 密钥 // 如需使用敏感接口(如企业付款、退款、公众号发送现金红包等)需要配置 API 证书 'cert_path' => 'path/to/your/cert.pem', // XXX: 绝对路径!!!! 'key_path' => 'path/to/your/key', // XXX: 绝对路径!!!! ]; $app = Factory::payment($config); // 执行企业付款到零钱 $result = $app->transfer->toBalance([ 'partner_trade_no' => '1233455', // 商户订单号,具有唯一性(只能是字母或者数字) 'openid' => 'oxTWIuGaIt6gTKsQRLau2M0yL16E', // 提现用户openid 'check_name' => 'FORCE_CHECK', // NO_CHECK:不校验姓名, FORCE_CHECK:强校验真实姓名 're_user_name' => '王小帅', // 如果 check_name 设置为FORCE_CHECK,则必填用户真实姓名 'amount' => 10000, // 企业付款金额,单位为分 'desc' => '提现', // 企业付款操作说明信息。必填 ]); ``` #### 3. 提现成功返回值 --- **`return_code` 通信标识, 表示接口是否请求成功, 而不是交易标识, 不能用于判断提现结果** **`result_code` 业务结果标识, 当其值为 `SUCCESS` 时表示 `提现成功`** **执行提现应使用`try catch`捕获错误, 因为当证书文件错误时是抛出异常, 而不是以返回值的形式返回** ``` try { $result = $app->transfer->toBalance(); } catch (\Throwable $e) { fault($e->getMessage()); } if ( !empty($result['result_code']) && $result['result_code'] === 'SUCCESS') { // 提现成功 } else { // 提现失败 } ``` ```php [ 'return_code' => 'SUCCESS', 'return_msg' => NULL, 'mch_appid' => 'wxb80ec74221f8a9ff', 'mchid' => '1538483281', 'nonce_str' => '60af3d9658162', 'result_code' => 'SUCCESS', 'partner_trade_no' => 'TX202105271435025469', 'payment_no' => '10101052430722105279091545815496', 'payment_time' => '2021-05-27 14:34:59', ] ``` #### 4. 提现失败返回值 (常见场景) --- **开启检验用户名并且验证失败时** ``` [ 'return_code' => 'SUCCESS', 'return_msg' => '参数错误:没有找到对应校验用户姓名选项.', 'result_code' => 'FAIL', 'err_code' => 'PARAM_ERROR', 'err_code_des' => '参数错误:没有找到对应校验用户姓名选项.', ] ``` **提现金额小于 0.3 元** ```php [ 'return_code' => 'SUCCESS' 'return_msg' => '支付失败' 'mch_appid' => 'wxb80ec74221f8a9ff' 'mchid' => '1538483281' 'result_code' => 'FAIL' 'err_code' => 'AMOUNT_LIMIT' 'err_code_des' => '付款金额超出限制。低于最小金额0.30元或累计超过5000.00元。' ] ```