首頁 >後端開發 >php教程 >在PHP中實現微信支付的發起與查詢

在PHP中實現微信支付的發起與查詢

WBOY
WBOY原創
2023-05-13 22:31:341233瀏覽

隨著微信支付的普及,越來越多的網站需要整合微信支付功能。在這篇文章中,我們將討論如何在PHP中實現微信支付的發起和查詢。

  1. 呼叫統一下單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);
  1. 取得預付訂單資訊

#呼叫統一下單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);
  1. 跳轉至付款頁面

#取得預付訂單資訊後,我們可以將取得到的參數傳遞給前端,讓用戶在微信客戶端發起付款。以下是一個範例程式碼:

<?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>';
  1. 查詢付款結果

支付完成後,我們需要查詢付款結果以確保交易已成功完成。以下是一個範例程式碼:

<?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中實現微信支付的發起與查詢的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn