=== 微信支付V2通用接口测试 ==="; // ============================================ // 测试1: POST请求 - 统一下单(自动签名) // ============================================ echo "

测试1: POST请求 - 统一下单(自动签名)

"; try { $result = $pay->callApi( 'https://api.mch.weixin.qq.com/pay/unifiedorder', [ 'body' => '测试商品', 'out_trade_no' => time(), 'total_fee' => '1', 'openid' => 'o38gpszoJoC9oJYz3UHHf6bEp0Lo', // 请替换为实际的openid 'trade_type' => 'JSAPI', 'notify_url' => 'https://your-domain.com/notify.php', 'spbill_create_ip' => '127.0.0.1', ], 'POST', false, // 不需要证书 'MD5' // 签名类型:MD5 ); echo '
';
        var_export($result);
        echo '
'; } catch (Exception $e) { echo "错误: " . $e->getMessage() . PHP_EOL; } // ============================================ // 测试2: GET请求 - 查询订单(不自动签名) // ============================================ echo "

测试2: GET请求 - 查询订单(不自动签名)

"; try { $result = $pay->callApi( 'https://api.mch.weixin.qq.com/pay/orderquery', [ 'out_trade_no' => time() - 3600, // 使用一个可能存在的订单号 ], 'GET' ); echo '
';
        var_export($result);
        echo '
'; } catch (Exception $e) { echo "错误: " . $e->getMessage() . PHP_EOL; } // ============================================ // 测试3: POST请求 - 使用HMAC-SHA256签名 // ============================================ echo "

测试3: POST请求 - 使用HMAC-SHA256签名

"; try { $result = $pay->callApi( 'https://api.mch.weixin.qq.com/pay/unifiedorder', [ 'body' => '测试商品', 'out_trade_no' => time() + 1, 'total_fee' => '1', 'openid' => 'o38gpszoJoC9oJYz3UHHf6bEp0Lo', 'trade_type' => 'JSAPI', 'notify_url' => 'https://your-domain.com/notify.php', 'spbill_create_ip' => '127.0.0.1', ], 'POST', false, // 不需要证书 'HMAC-SHA256' // 使用HMAC-SHA256签名 ); echo '
';
        var_export($result);
        echo '
'; } catch (Exception $e) { echo "错误: " . $e->getMessage() . PHP_EOL; } // ============================================ // 测试4: POST请求 - 需要证书的接口(如退款) // ============================================ echo "

测试4: POST请求 - 需要证书的接口(如退款)

"; echo "

注意:此测试需要配置证书,如果未配置证书会报错

"; try { $result = $pay->callApi( 'https://api.mch.weixin.qq.com/secapi/pay/refund', [ 'out_trade_no' => time() - 3600, 'out_refund_no' => time(), 'total_fee' => '1', 'refund_fee' => '1', ], 'POST', true, // 需要证书 'MD5' // 签名类型:MD5 ); echo '
';
        var_export($result);
        echo '
'; } catch (Exception $e) { echo "错误: " . $e->getMessage() . PHP_EOL; echo "

这是正常的,因为退款接口需要证书且需要有效的订单号

"; } // ============================================ // 测试5: POST请求 - 不自动签名(手动处理) // ============================================ echo "

测试5: POST请求 - 不自动签名(手动处理签名)

"; try { // 手动构建参数和签名 $data = [ 'body' => '测试商品', 'out_trade_no' => time() + 2, 'total_fee' => '1', 'openid' => 'o38gpszoJoC9oJYz3UHHf6bEp0Lo', 'trade_type' => 'JSAPI', 'notify_url' => 'https://your-domain.com/notify.php', 'spbill_create_ip' => '127.0.0.1', ]; // 手动添加签名 $data['sign'] = $pay->getPaySign($data, 'MD5'); // 注意:手动签名后,callApi仍会自动签名,所以此示例需要调整 // 实际使用中,如果已经手动签名,应该直接使用 Tools::post 发送 echo '
注意:手动签名后,callApi仍会自动签名,建议直接使用 Tools::post 发送
'; echo '
';
        var_export($result);
        echo '
'; } catch (Exception $e) { echo "错误: " . $e->getMessage() . PHP_EOL; } echo "

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

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

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

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