隨著微信支付的普及,越來越多的網站需要整合微信支付功能。在這篇文章中,我們將討論如何在PHP中實現微信支付的發起和查詢。
在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中實現微信支付的發起與查詢的詳細內容。更多資訊請關注PHP中文網其他相關文章!