随着微信支付的普及,越来越多的网站需要集成微信支付功能。在这篇文章中,我们将讨论如何在PHP中实现微信支付的发起和查询。
- 调用统一下单API
在PHP中发起微信支付,第一步是调用微信支付的统一下单API来生成预支付订单。该API需要传递一些必要的参数,包括商户的ID、支付金额、订单号、回调URL等。以下是一个示例代码:
<?php
require_once('WxPayApi.php');
require_once('WxPayUnifiedOrder.php');
$order = new WxPayUnifiedOrder();
$order->SetBody('商品描述');
$order->SetOut_trade_no('订单号');
$order->SetTotal_fee('支付金额');
$order->SetNotify_url('回调URL');
$order->SetTrade_type('JSAPI');
$order->SetOpenid('用户OpenID');
$result = WxPayApi::unifiedOrder($order);
- 获取预支付订单信息
调用统一下单API后,我们需要获取预支付订单的信息,包括预支付交易会话标识(prepay_id)和其他必要的参数。以下是一个示例代码:
<?php
require_once('WxPayApi.php');
require_once('WxPayData.php');
$input = new WxPayData();
$input->SetBody('商品描述');
$input->SetOut_trade_no('订单号');
$input->SetTotal_fee('支付金额');
$input->SetNotify_url('回调URL');
$input->SetTrade_type('JSAPI');
$input->SetOpenid('用户OpenID');
$result = WxPayApi::unifiedOrder($input);
$prepay_id = $result['prepay_id'];
$params = [
'appId' => $result['appid'],
'timeStamp' => time(),
'nonceStr' => $result['nonce_str'],
'package' => "prepay_id={$prepay_id}",
'signType' => 'MD5'
];
$params['paySign'] = WxPayApi::getSign($params);
- 跳转至支付页面
获取预支付订单信息后,我们可以将获取到的参数传递给前端,让用户在微信客户端中发起支付。以下是一个示例代码:
<?php
echo '<script language="javascript">';
echo 'WeixinJSBridge.invoke("getBrandWCPayRequest", {
"appId":"'.$params['appId'].'",
"timeStamp":"'.$params['timeStamp'].'",
"nonceStr":"'.$params['nonceStr'].'",
"package":"'.$params['package'].'",
"signType":"'.$params['signType'].'",
"paySign":"'.$params['paySign'].'"
}, function(res){
if(res.err_msg == "get_brand_wcpay_request:ok" ){
alert("支付成功");
}else{
alert("支付失败");
}
});';
echo '</script>';
- 查询支付结果
支付完成后,我们需要查询支付结果以确保交易已成功完成。以下是一个示例代码:
<?php
require_once('WxPayApi.php');
$input = new WxPayOrderQuery();
$input->SetOut_trade_no('订单号');
$result = WxpayApi::orderQuery($input);
if ($result['trade_state'] == 'SUCCESS') {
echo '支付成功';
} else {
echo '支付失败';
}
总结:
以上就是在PHP中实现微信支付的发起和查询的全部过程。当我们需要在网站上集成微信支付时,可以按照以上步骤进行操作。建议使用官方提供的SDK进行开发,可以节省很多时间和精力。
以上就是在PHP中实现微信支付的发起和查询的详细内容,更多请关注编程网其它相关文章!