微信支付是一种基于微信公众号、小程序或扫码支付的移动支付方式,它的实现需要使用到微信支付的 API 和相关的 PHP 库。
下面是一个简单的微信支付功能的 PHP 代码示例,它使用了微信支付官方提供的 PHP SDK:
<?php require_once "lib/WxPay.Api.php"; require_once "lib/WxPay.Notify.php"; require_once "lib/WxPay.JsApiPay.php"; require_once "example/WxPay.Config.php"; // 初始化微信支付配置 $config = new WxPayConfig(); // 获取用户的 openid $tools = new JsApiPay(); $openid = $tools->GetOpenid(); // 设置订单信息 $input = new WxPayUnifiedOrder(); $input->SetBody("商品名称"); $input->SetAttach("附加信息"); $input->SetOut_trade_no(WxPayConfig::MCHID.date("YmdHis")); $input->SetTotal_fee("1"); $input->SetTime_start(date("YmdHis")); $input->SetTime_expire(date("YmdHis", time() + 600)); $input->SetGoods_tag("商品标记"); $input->SetNotify_url("http://www.example.com/pay_notify.php"); $input->SetTrade_type("JSAPI"); $input->SetOpenid($openid); // 调用统一下单 API $order = WxPayApi::unifiedOrder($config, $input); // 获取支付参数 $jsApiParameters = $tools->GetJsApiParameters($order); // 输出支付按钮 echo '<button type="button" onclick="callpay()">立即支付</button>'; // 输出支付参数 echo '<script> function callpay() { WeixinJSBridge.invoke( "getBrandWCPayRequest", '.$jsApiParameters.', function(res){ if(res.err_msg == "get_brand_wcpay_request:ok"){ // 支付成功,跳转到支付成功页面 window.location.href = "http://www.example.com/pay_success.php"; }else{ // 支付失败,跳转到支付失败页面 window.location.href = "http://www.example.com/pay_fail.php"; } } ); } </script>'; ?>
这段代码实现了一个简单的微信支付功能,具体实现过程如下:
- 首先,包含微信支付 SDK 和配置文件,创建一个微信支付配置对象。
- 然后,使用
JsApiPay
类获取用户的 openid,用于发起支付。 - 接着,设置订单信息,包括商品名称、订单号、总金额、支付过期时间、通知回调 URL 等等。
- 调用
WxPayApi::unifiedOrder()
函数发起统一下单 API 请求,获取支付参数。 - 输出一个支付按钮,并使用
GetJsApiParameters()
函数将支付参数转换为 JSON 格式,用于 JS 调用微信支付 API。 - 当用户点击支付按钮时,调用
WeixinJSBridge.invoke()
函数调起微信支付页面,处理支付结果,并跳转到相应的页面。 在使用这段代码之前,需要先配置好微信支付的相关参数,包括公众号或小程序的 AppID 和 AppSecret、商户号和支付密钥等等。此外,还需要在微信支付后台设置回调 URL,用于接收支付结果通知。
评论