php微信支付
PHP微信支付详细描述
使用场景
在现今的移动互联网时代,微信已经成为人们日常生活中的重要工具之一。在微信中,用户可以通过消息或扫描二维码打开网页进行各种操作。其中一个非常重要的功能就是微信支付。商户已有H5商城网站,可以利用微信内置浏览器的优势,让用户在微信内直接完成下单购买。
说明
1. 用户打开图文消息或者扫描二维码,在微信内置浏览器打开网页进行的支付:当用户收到商户发送的图文消息或扫描二维码时,会自动在微信内置浏览器中打开网页。这个过程中,用户可以直接在微信内完成下单购买。
2. 商户提供H5商城网站:商户需要准备一个H5商城网站,这个网站需要支持微信支付功能。这样,当用户在微信内打开网页时,可以直接进行支付。
PHP微信支付流程
1. 用户点击图文消息或扫描二维码:用户收到商户发送的图文消息或扫描二维码后,会自动在微信内置浏览器中打开网页。
2. 微信内置浏览器打开网页:微信内置浏览器打开网页后,用户可以直接在网页上进行下单购买。
3. 用户选择商品并添加到购物车:用户在网页上选择需要购买的商品,并将其添加到购物车中。
4. 用户点击结算按钮:用户点击结算按钮后,系统会自动跳转到微信支付页面。
5. 微信支付页面显示:微信支付页面显示给用户,用户可以在此页面选择支付方式(如微信余额、银行卡等)。
6. 用户完成支付:用户完成支付后,系统会自动返回商户的H5商城网站,并显示支付成功信息。
PHP微信支付接口
1. 统一下单接口:这个接口用于生成预付款订单,需要传入相关参数,如商户ID、商品名称、金额等。
2. 查询订单状态接口:这个接口用于查询订单的状态,需要传入相关参数,如商户ID、订单号等。
3. 关闭订单接口:这个接口用于关闭订单,需要传入相关参数,如商户ID、订单号等。
PHP微信支付示例代码
```php
$url = ' $data = array(
'appid' => $params['appid'],
'mch_id' => $params['mch_id'],
'nonce_str' => $params['nonce_str'],
'body' => $params['body'],
'total_fee' => $params['total_fee'],
'trade_type' => $params['trade_type']
);
$data = json_encode($data);
$sign = sign($data, $params['key']);
$data .= '&sign=' . $sign;
$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, $data);
$response = curl_exec($ch);
curl_close($ch);
return json_decode($response, true);
}
//查询订单状态接口function orderQuery($params) {
$url = ' $data = array(
'appid' => $params['appid'],
'mch_id' => $params['mch_id'],
'nonce_str' => $params['nonce_str'],
'out_trade_no' => $params['out_trade_no']
);
$data = json_encode($data);
$sign = sign($data, $params['key']);
$data .= '&sign=' . $sign;
$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, $data);
$response = curl_exec($ch);
curl_close($ch);
return json_decode($response, true);
}
//关闭订单接口function closeOrder($params) {
$url = ' $data = array(
'appid' => $params['appid'],
'mch_id' => $params['mch_id'],
'nonce_str' => $params['nonce_str'],
'out_trade_no' => $params['out_trade_no']
);
$data = json_encode($data);
$sign = sign($data, $params['key']);
$data .= '&sign=' . $sign;
$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, $data);
$response = curl_exec($ch);
curl_close($ch);
return json_decode($response, true);
}
//签名函数function sign($data, $key) {
$sign = '';
foreach (explode('&', $data)) {
if (!empty($sign)) {
$sign .= '&';
}
$sign .= explode('=', explode('=', explode('=', $GLOBALS['HTTP_RAW_POST_DATA'])[0])[0])[1];
}
return md5($key . $sign);
}
?>
```
以上是PHP微信支付的详细描述和示例代码。