微信php支付功能代码实现

微信支付是一种基于微信公众号、小程序或扫码支付的移动支付方式,它的实现需要使用到微信支付的 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>';
?>

这段代码实现了一个简单的微信支付功能,具体实现过程如下:

  1. 首先,包含微信支付 SDK 和配置文件,创建一个微信支付配置对象。
  2. 然后,使用 JsApiPay 类获取用户的 openid,用于发起支付。
  3. 接着,设置订单信息,包括商品名称、订单号、总金额、支付过期时间、通知回调 URL 等等。
  4. 调用 WxPayApi::unifiedOrder() 函数发起统一下单 API 请求,获取支付参数。
  5. 输出一个支付按钮,并使用 GetJsApiParameters() 函数将支付参数转换为 JSON 格式,用于 JS 调用微信支付 API。
  6. 当用户点击支付按钮时,调用 WeixinJSBridge.invoke() 函数调起微信支付页面,处理支付结果,并跳转到相应的页面。 在使用这段代码之前,需要先配置好微信支付的相关参数,包括公众号或小程序的 AppID 和 AppSecret、商户号和支付密钥等等。此外,还需要在微信支付后台设置回调 URL,用于接收支付结果通知。