對於呼叫微信支付,微信提供了 JS SDK 來幫助我們實現在微信裡面呼叫微信支付的功能。以下是具體的實現步驟,
第一步、安裝實現微信支付所需的包
我們依然使用Omnipay Wechat Pay這個包來幫助我們實現微信支付,其實和之前的原生掃碼支付方式是類似的,只不過使用的介面不同罷了。下面是我開發的微信網站中使用的函式庫。其中前兩者不用說了,很明顯是微信支付所用的 Omnipay 庫,Wordpress Dispatcher 是一個 WordPress Router 系統,用來實現自訂 URL,Valitron 主要用來驗證用戶提交資料。
"require": { "omnipay/omnipay": "~2.0", "lokielse/omnipay-wechatpay": "^1.0", "thefold/wordpress-dispatcher": "^1.0", "vlucas/valitron": "^1.2", },
執行composer install指令安裝完成後,在主題或外掛程式中引入自動載入檔案。
require_once( get_template_directory() . '/vendor/autoload.php' );
前端實作:設定微信JS SDK,並實作微信支付
這裡的jssdk.php 是微信官方提供的,用來實作為初始化微信JS SDK提供簽名包。在需要實作微信支付的頁面引入這個文件,然後初始化 JSSDK 類別即可。
require_once( get_template_directory() . '/inc/jssdk.php' ); $jssdk = new JSSDK( "xxxxx", "xxxxxxxxxxxxxxxx" ); $signPackage = $jssdk->GetSignPackage();
初始化微信JS sdk, 呼叫微信支付方法實作微信支付
首先、確保在頁面的head 因為了微信JS SDK 的JavaScript 檔案:jweixin-1.0 .0.js。根據上面取得的 $signPackage,我們在下面程式碼中完成了以下幾個操作。
使用 wx.config 初始化 js sdk使用 wx.ready 偵測 js sdk 是否初始化成功,如果初始化成功,我們就可以使用微信 js sdk 提供的介面進行操作了。點選付款按鈕時,發送一個 Ajax 請求到伺服器,取得微信訂單,然後使用 wx.chooseWXPay 發起微信支付,就是我們在微信裡面看到的彈出輸入微信密碼的介面。
jQuery(document).ready(function ($) { // 配置 js sdk wx.config({ debug: false, appId: '<?php echo $signPackage[ "appId" ];?>', timestamp: <?php echo $signPackage[ "timestamp" ];?>, nonceStr: '<?php echo $signPackage[ "nonceStr" ];?>', signature: '<?php echo $signPackage[ "signature" ];?>', jsApiList: ['chooseWXPay'] // 这里的 jsApiList 需要什么就填写什么 }); // 一定要检查 js sdk 是否已经准备好了 wx.ready(function () { $("#topay").click(function () { $.ajax({ url: '/order/', type: 'POST', dataType: 'json', data: $("#wepay").serialize(), success: function (order) { var params = { 'timestamp': order.timeStamp, 'nonceStr': order.nonceStr, 'package': order.package, 'signType': order.signType, 'paySign': order.paySign }; wx.chooseWXPay(params); }, error: function (order) { c-alert(order.message); } }); return false; }); });});
支付窗口閃一下消失有以下幾種情況
在微信上測試微信支付的時候,經常會遇到微信支付窗口閃一下就消失了,看不到輸入支付密碼的介面,可能的原因有以下幾點,仔細檢查一下。
jssdk 沒有配置,檢查上面程式碼中的wx.config 和 wx.readyAjax 回傳的資料有錯誤,檢查Ajax 請求的回傳資料安全網域設定錯誤,檢查在微信管理後台中,是否把測試網域加入到了安全域名中
後端實作:驗證並發送訂單資料
#後端實作很簡單,就是接收上面Ajax 提交過來的數據,然後處理微信支付所需的Json 數據,同時保存訂單到站點的資料庫中,以供後續查詢和後面的通知回調中使用。
// 获取微信支付网关的函数function get_wechat_gateway() { $gateway = Omnipay::create( 'WechatPay_Js' ); $gateway->setAppId( ' xxxxxxxx' ); $gateway->setMchId( 'xxxxxxxx' ); $gateway->setApiKey( 'xxxxxxxx' ); //注意这里的 ApiKey 是我们在微信商户后台设置的一个32位的随机字符串,和微信公众号里面的 App Secrit 不是一回事。 return $gateway;}/** * 处理订单信息, 跳转到微信支付 */new Dispatch( [ 'wepay/order' => function ( $request ) { // 检查用户提交的数据是否有错,如果有错误,返回错误信息 $v = new Validator( $_POST ); $v->rule( 'required', [ 'count', 'buyer_name', 'buyer_phone', 'buyer_address' ] ); if ( ! $v->validate() ) { $msg = [ 'success' => '0', 'message' => '下单失败, 请检查所有必填项。', ]; wp_send_json( $msg ); } $user = wp_get_current_user(); $req = Request::createFromGlobals(); $pid = $req->get( 'pid' ); $count = $req->get( 'count' ); $open_id = $req->cookies->get( 'open_id' ); $prod = get_post( $pid ); $price = get_post_meta( $pid, '_prod_price', true ); $total_fee = $price * $count * 100; $tn = date( 'YmdHis' ) . mt_rand( 1000, 9999 ); // 在实际开发过程中,我们需要把用户提交的订单数据保存到数据库一份 // 订单参数 $order = [ 'body' => $prod->post_title', 'out_trade_no' => $tn, 'total_fee' => $total_fee, 'spbill_create_ip' => wizhi_get_real_ip(), 'fee_type' => 'CNY', 'open_id' => $open_id, ]; // 发送支付请求到微信并获取返回信息 $gateway = get_wechat_gateway(); $gateway->setNotifyUrl( 'https://www.wpzhiku.com/order/return' ); $response = $gateway->purchase( $order )->send(); $wechat_return = $response->getJsOrderData(); wp_send_json( $wechat_return ); },] );
接受微信支付成功通知,實現自動完成訂單或自動充值
支付完成後,微信會返回一個支付成功的通知到我們提供的通知URL,我們可以根據返回的內容,進行自動完成訂單或自動儲值等操作。這裡有兩點要注意。
通知 URL 一定要能訪問,如果不能訪問,微信不會發送通知。要和支付URL在一個目錄下
微信官方提供的SDK 和接口數據非常不規範,在使用的時候一定要代碼中的注意大小寫,出現了問題,仔細和微信官方提供的開發文件相對照,如果你使用的語言或開發框架提供了微信開發所用到庫,建議直接使用這些庫進行開發,這些庫可以幫助我們繞過微信為我們挖下的各種大坑小坑,減少調試難度、加快開發速度。
更多wordpress相關技術文章,請造訪wordpress教學欄位進行學習!
以上是wordpress如何實現微信支付的詳細內容。更多資訊請關注PHP中文網其他相關文章!

在 WordPress 網站上啟用評論功能,可以為訪客提供參與討論和分享反饋的平台。為此,請按照以下步驟操作:啟用評論:在儀錶盤中,導航至“設置”>“討論”,並選中“允許評論”複選框。創建評論表單:在編輯器中,單擊“添加塊”並蒐索“評論”塊,將其添加到內容中。自定義評論表單:通過設置標題、標籤、佔位符和按鈕文本來定制評論塊。保存更改:單擊“更新”以保存評論框並將其添加到頁面或文章中。

如何復制 WordPress 子站?步驟:在主站創建子站。在主站克隆子站。將克隆導入目標位置。更新域名(可選)。分開插件和主題。

在WordPress中創建自定義頁頭的步驟如下:編輯主題文件“header.php”。添加您的網站名稱和描述。創建導航菜單。添加搜索欄。保存更改並查看您的自定義頁頭。

WordPress 網站中啟用評論功能:1. 登錄管理面板,轉到 "設置"-"討論",勾選 "允許評論";2. 選擇顯示評論的位置;3. 自定義評論表單;4. 管理評論,批准、拒絕或刪除;5. 使用 <?php comments_template(); ?> 標籤顯示評論;6. 啟用嵌套評論;7. 調整評論外形;8. 使用插件和驗證碼防止垃圾評論;9. 鼓勵用戶使用 Gravatar 頭像;10. 創建評論指

可以通過 WordPress 安裝 FTP 插件,配置 FTP 連接,然後使用文件管理器上傳源碼。步驟包括:安裝 FTP 插件、配置連接、瀏覽上傳位置、上傳文件、檢查上傳成功。

如何復制 WordPress 代碼?從管理界面複製:登錄 WordPress 網站,導航到目標位置,選擇代碼並按 Ctrl C (Windows)/Command C (Mac) 複製代碼。從文件複製:使用 SSH 或 FTP 連接到服務器,導航到主題或插件文件,選擇代碼並按 Ctrl C (Windows)/Command C (Mac) 複製代碼。

WordPress 錯誤解決指南:500 內部服務器錯誤:禁用插件或檢查服務器錯誤日誌。 404 未找到頁面:檢查 permalink 並確保頁面鏈接正確。白屏死機:增加服務器 PHP 內存限制。數據庫連接錯誤:檢查數據庫服務器狀態和 WordPress 配置。其他技巧:啟用調試模式、檢查錯誤日誌和尋求支持。預防錯誤:定期更新 WordPress、僅安裝必要插件、定期備份網站和優化網站性能。

如何在 WordPress 中關閉評論?特定文章或頁面:在編輯器中取消選中“討論”下的“允許評論”。整個網站:在“設置”->“討論”中取消選中“允許發表評論”。使用插件:安裝 Disable Comments 等插件禁用評論。編輯主題文件:通過編輯 comments.php 文件移除評論表單。自定義代碼:使用 add_filter() 函數禁用評論。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。