PHP 微信支付V3
微信支付V3 PHP 接口
微信支付V3 是微信支付平台提供的第三代支付接口,支持多种支付方式和场景。下面是关于微信支付V3 PHP 接口的详细描述。
1. 支付接口概述
微信支付V3 支持以下支付接口:
* 统一下单接口:用于生成预付款订单,支持多种支付方式。
* 付款接口:用于完成支付,支持多种支付方式。
* 退款接口:用于退还用户的支付金额。
2. 支付接口参数
以下是微信支付V3 支付接口所需参数:
统一下单接口
| 参数名称 | 必须 | 类型 |说明 |
| --- | --- | --- | --- |
| `appid` | 是 | string | 公众号或小程序的 appid |
| `mch_id` | 是 | string | 商户 ID |
| `nonce_str` | 是 | string | 随机字符串,32 位 |
| `body` | 是 | string | 商品描述 |
| `notify_url` | 是 | string | 回调 URL |
| `trade_type` | 是 | string | 支付类型(JSAPI、NATIVE、APP) |
| `spbill_create_ip` | 是 | string | IP 地址 |
| `total_fee` | 是 | int |金额,分 |
| `openid` | 否 | string | 用户 openid |
付款接口
| 参数名称 | 必须 | 类型 |说明 |
| --- | --- | --- | --- |
| `appid` | 是 | string | 公众号或小程序的 appid |
| `mch_id` | 是 | string | 商户 ID |
| `nonce_str` | 是 | string | 随机字符串,32 位 |
| `body` | 是 | string | 商品描述 |
| `notify_url` | 是 | string | 回调 URL |
| `trade_type` | 是 | string | 支付类型(JSAPI、NATIVE、APP) |
| `spbill_create_ip` | 是 | string | IP 地址 |
| `total_fee` | 是 | int |金额,分 |
| `openid` | 否 | string | 用户 openid |
退款接口
| 参数名称 | 必须 | 类型 |说明 |
| --- | --- | --- | --- |
| `appid` | 是 | string | 公众号或小程序的 appid |
| `mch_id` | 是 | string | 商户 ID |
| `nonce_str` | 是 | string | 随机字符串,32 位 |
| `out_trade_no` | 是 | string |交易单号 |
| `refund_fee` | 是 | int |退款金额,分 |
| `op_user_id` | 否 | string | 操作员 ID |
3. 支付接口返回
以下是微信支付V3 支付接口返回的数据:
统一下单接口
| 参数名称 | 类型 |说明 |
| --- | --- | --- |
| `appid` | string | 公众号或小程序的 appid |
| `mch_id` | string | 商户 ID |
| `nonce_str` | string | 随机字符串,32 位 |
| `prepay_id` | string | 预支付交易会话ID |
| `package` | string | 包名 |
| `sign` | string | 签名 |
付款接口
| 参数名称 | 类型 |说明 |
| --- | --- | --- |
| `appid` | string | 公众号或小程序的 appid |
| `mch_id` | string | 商户 ID |
| `nonce_str` | string | 随机字符串,32 位 |
| `prepay_id` | string | 预支付交易会话ID |
| `package` | string | 包名 |
| `sign` | string | 签名 |
退款接口
| 参数名称 | 类型 |说明 |
| --- | --- | --- |
| `appid` | string | 公众号或小程序的 appid |
| `mch_id` | string | 商户 ID |
| `nonce_str` | string | 随机字符串,32 位 |
| `refund_fee` | int |退款金额,分 |
| `return_code` | string | 返回状态码 |
| `return_msg` | string | 返回信息 |
4. 支付接口示例
以下是微信支付V3 支付接口的示例:
统一下单接口
```php
// 商户 ID$mch_id = 'your_mch_id';
// 随机字符串,32 位$nonce_str = uniqid('', true);
// 商品描述$body = '测试商品';
// 回调 URL$notify_url = ' 支付类型(JSAPI、NATIVE、APP)
$trade_type = 'JSAPI';
// IP 地址$spbill_create_ip = $_SERVER['REMOTE_ADDR'];
//金额,分$total_fee =100;
// 用户 openid$openid = 'your_openid';
// 统一下单接口 URL$url = ' 请求参数$params = [
'appid' => $appid,
'mch_id' => $mch_id,
'nonce_str' => $nonce_str,
'body' => $body,
'notify_url' => $notify_url,
'trade_type' => $trade_type,
'spbill_create_ip' => $spbill_create_ip,
'total_fee' => $total_fee,
'openid' => $openid,
];
// 请求接口$response = $params);
// 输出结果print_r($response);
function $data)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, curl_setopt($ch, CURLOPT_HEADER,0);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/x-www-form-urlencoded',
]);
$output = curl_exec($ch);
curl_close($ch);
return json_decode($output, true);
}
?>
```
付款接口
```php
// 商户 ID$mch_id = 'your_mch_id';
// 随机字符串,32 位$nonce_str = uniqid('', true);
// 商品描述$body = '测试商品';
// 回调 URL$notify_url = ' 支付类型(JSAPI、NATIVE、APP)
$trade_type = 'JSAPI';
// IP 地址$spbill_create_ip = $_SERVER['REMOTE_ADDR'];
//金额,分$total_fee =100;
// 用户 openid$openid = 'your_openid';
//付款接口 URL$url = ' 请求参数$params = [
'appid' => $appid,
'mch_id' => $mch_id,
'nonce_str' => $nonce_str,
'body' => $body,
'notify_url' => $notify_url,
'trade_type' => $trade_type,
'spbill_create_ip' => $spbill_create_ip,
'total_fee' => $total_fee,
'openid' => $openid,
];
// 请求接口$response = $params);
// 输出结果print_r($response);
function $data)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, curl_setopt($ch, CURLOPT_HEADER,0);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/x-www-form-urlencoded',
]);
$output = curl_exec($ch);
curl_close($ch);
return json_decode($output, true);
}
?>
```
退款接口
```php
// 商户 ID$mch_id = 'your_mch_id';
// 随机字符串,32 位$nonce_str = uniqid('', true);
//交易单号$out_trade_no = 'your_out_trade_no';
//退款金额,分$refund_fee =100;
//退款接口 URL$url = '