随着微信支付的普及,越来越多的网站需要集成微信支付功能。在这篇文章中,我们将讨论如何在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中实现微信支付的发起和查询的文章就分享到这,如果对你有帮助欢迎继续关注我们哦
本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/263605.html
如有侵犯您的合法权益请发邮件951076433@qq.com联系删除