php微信v3 app支付
时间: 2023-07-31 17:11:48 浏览: 143
以下是使用 PHP 进行微信支付 V3 版本 App 支付的示例代码:
```php
<?php
// 设置请求参数
$url = 'https://api.mch.weixin.qq.com/v3/pay/transactions/app';
$merchant_id = 'your_merchant_id';
$serial_no = 'your_serial_no';
$private_key = 'your_private_key';
$appid = 'your_appid';
$out_trade_no = 'your_out_trade_no';
$description = 'your_description';
$total = 'your_total_amount';
$notify_url = 'your_notify_url';
// 生成签名
$time = time();
$nonce_str = uniqid();
$payload = array(
'mchid' => $merchant_id,
'appid' => $appid,
'description' => $description,
'out_trade_no' => $out_trade_no,
'notify_url' => $notify_url,
'amount' => array(
'total' => $total,
'currency' => 'CNY'
),
'time_expire' => date('c', strtotime('+2 hours')),
'nonce_str' => $nonce_str
);
$payload_json = json_encode($payload, JSON_UNESCAPED_UNICODE);
$sign_str = "POST\n/pay/transactions/app\n$time\n$nonce_str\n$payload_json\n";
$signature = openssl_sign($sign_str, $signature_raw, $private_key, OPENSSL_ALGO_SHA256);
$signature_base64 = base64_encode($signature_raw);
$header = array(
'User-Agent: Mozilla/5.0',
'Content-Type: application/json',
'Accept: application/json',
'Authorization: WECHATPAY2-SHA256-RSA2048 mchid="' . $merchant_id . '",serial_no="' . $serial_no . '",nonce_str="' . $nonce_str . '",timestamp="' . $time . '",signature="' . $signature_base64 . '"'
);
// 发送请求
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload_json);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
$response = curl_exec($ch);
$http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
// 处理响应
if ($http_status == 200) {
$response_data = json_decode($response, true);
// 处理响应数据
} else {
// 处理错误
}
```
在上述示例代码中,您需要将 $merchant_id、$serial_no、$private_key、$appid、$out_trade_no、$description、$total 和 $notify_url 替换为您自己的值。此外,您还需要根据微信支付的要求生成签名并将其添加到请求头中。
在处理响应时,您可以根据 API 的返回格式来处理 $response_data。如果请求失败,您可以根据 $http_status 处理错误。
阅读全文