=== 微信支付V3通用接口测试 ==="; // ============================================ // 测试1: POST请求 - 使用相对路径创建订单 // ============================================ echo "

测试1: POST请求 - 创建JSAPI支付订单(相对路径)

"; try { $result = $payment->callApi( '/v3/pay/transactions/jsapi', [ 'appid' => $config['appid'], 'mchid' => $config['mch_id'], 'description' => '测试商品', 'out_trade_no' => (string)time(), 'notify_url' => 'https://your-domain.com/notify.php', 'payer' => [ 'openid' => 'o38gpszoJoC9oJYz3UHHf6bEp0Lo', // 请替换为实际的openid ], 'amount' => [ 'total' => 1, 'currency' => 'CNY' ], ], 'POST', false // 不验证响应签名 ); echo '
';
        var_export($result);
        echo '
'; } catch (Exception $e) { echo "错误: " . $e->getMessage() . PHP_EOL; } // ============================================ // 测试2: GET请求 - 查询订单(完整URL) // ============================================ echo "

测试2: GET请求 - 查询订单(完整URL)

"; try { $outTradeNo = time() - 3600; // 使用一个可能存在的订单号 $result = $payment->callApi( "https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no/{$outTradeNo}?mchid={$config['mch_id']}", '', // GET请求数据为空 'GET', false // 不验证响应签名 ); echo '
';
        var_export($result);
        echo '
'; } catch (Exception $e) { echo "错误: " . $e->getMessage() . PHP_EOL; } // ============================================ // 测试3: POST请求 - 创建H5支付订单 // ============================================ echo "

测试3: POST请求 - 创建H5支付订单

"; try { $result = $payment->callApi( '/v3/pay/transactions/h5', [ 'appid' => $config['appid'], 'mchid' => $config['mch_id'], 'description' => '测试商品', 'out_trade_no' => (string)(time() + 1), 'notify_url' => 'https://your-domain.com/notify.php', 'amount' => [ 'total' => 1, 'currency' => 'CNY' ], 'scene_info' => [ 'h5_info' => [ 'type' => 'Wap' ], 'payer_client_ip' => '127.0.0.1', ], ], 'POST', false // 不验证响应签名 ); echo '
';
        var_export($result);
        echo '
'; } catch (Exception $e) { echo "错误: " . $e->getMessage() . PHP_EOL; } // ============================================ // 测试4: POST请求 - 创建退款(需要证书) // ============================================ echo "

测试4: POST请求 - 创建退款

"; echo "

注意:此测试需要有效的订单号

"; try { $result = $payment->callApi( '/v3/refund/domestic/refunds', [ 'out_trade_no' => (string)(time() - 3600), 'out_refund_no' => (string)time(), 'amount' => [ 'refund' => 1, 'total' => 1, 'currency' => 'CNY' ], ], 'POST', false // 不验证响应签名 ); echo '
';
        var_export($result);
        echo '
'; } catch (Exception $e) { echo "错误: " . $e->getMessage() . PHP_EOL; echo "

这是正常的,因为退款需要有效的订单号

"; } // ============================================ // 测试5: GET请求 - 查询退款 // ============================================ echo "

测试5: GET请求 - 查询退款

"; try { $outRefundNo = time() - 3600; $result = $payment->callApi( "/v3/refund/domestic/refunds/{$outRefundNo}", '', 'GET', false // 不验证响应签名 ); echo '
';
        var_export($result);
        echo '
'; } catch (Exception $e) { echo "错误: " . $e->getMessage() . PHP_EOL; } // ============================================ // 测试6: POST请求 - 使用数组数据(自动JSON编码) // ============================================ echo "

测试6: POST请求 - 使用数组数据(自动JSON编码)

"; try { $data = [ 'appid' => $config['appid'], 'mchid' => $config['mch_id'], 'description' => '测试商品', 'out_trade_no' => (string)(time() + 2), 'notify_url' => 'https://your-domain.com/notify.php', 'amount' => [ 'total' => 1, 'currency' => 'CNY' ], ]; // callApi会自动将数组转为JSON $result = $payment->callApi( '/v3/pay/transactions/jsapi', $data, 'POST' ); echo '
';
        var_export($result);
        echo '
'; } catch (Exception $e) { echo "错误: " . $e->getMessage() . PHP_EOL; } echo "

=== 所有测试完成 ===

"; } catch (Exception $e) { // 出错啦,处理下吧 echo "

错误: " . $e->getMessage() . "

"; echo "
" . $e->getTraceAsString() . "
"; }