微信支付—— 掃碼支付
個人認為掃碼支付比Jsapi支付從開發和使用上要順心的多。掃碼支付不用擔心是PC端還是行動瀏覽器還是微信客戶端存取的問題,產生一個二維碼,掃描付款即可。
一些設定和程式碼SDK以及SDK存在的錯誤可以參考上一篇 微信支付的文章
微信支付 —— 公眾號支付代碼詳解
友情提示以下內容實在簡陋 - -# 如果你跑通了 Jsapi支付,那麼掃碼支付其實沒什麼太特別的。
掃碼支付發起支付的文件在 example SDK 中的 native.php 檔案中
掃碼支付有兩種支付方式,在使用掃碼支付之前必須配置 支付回呼URL具體配置 參考
微信開發者文件 http://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_3
兩種支付方式的介紹
模式1:http://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_4
模式2:http://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_5
其實模式2 不需要設定回呼URL 但是一旦你修改了支付配置,而且要使用掃碼支付就必須勾選Native原生支付,此時回呼URL也就是必填項了
但我只想用模式2 ,模式2 用不到回呼URL,只好胡亂寫了個以後使用模式1可能使用的URL了。
程式碼分析:
掃碼支付模式1
$notify = new NativePay(); $url1 = $notify->GetPrePayUrl("123456789");
$input = new WxPayUnifiedOrder(); $input->SetBody("test"); $input->SetAttach("test"); $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("test"); $input->SetNotify_url("http://paysdk.weixin.qq.com/example/notify.php"); $input->SetTrade_type("NATIVE"); $input->SetProduct_id("123456789"); $result = $notify->GetPayUrl($input); $url2 = $result["code_url"];
QR 圖碼:
<img alt="模式二扫码支付" src="http://paysdk.weixin.qq.com/example/qrcode.php?data=<?php echo urlencode($url2);?>" style="width:150px;height:150px;"/>
函數定義在 example/Wxpay.NativePay.php 檔案中
public function GetPayUrl($input) { if($input->GetTrade_type() == "NATIVE") { $result = WxPayApi::unifiedOrder($input); return $result; } }
$result = WxPayApi::unifiedOrder($input);
if($inputObj->GetTrade_type() == "JSAPI" && !$inputObj->IsOpenidSet()){ throw new WxPayException("统一支付接口中,缺少必填参数openid!trade_type为JSAPI时,openid为必填参数!"); } if($inputObj->GetTrade_type() == "NATIVE" && !$inputObj->IsProduct_idSet()){ throw new WxPayException("统一支付接口中,缺少必填参数product_id!trade_type为JSAPI时,product_id为必填参数!"); }
判斷付款方式,如果是 JsApi 方式需要Openid
Native 方式必須需要product_id , 順便再吐槽一下,判斷是否是Native 支付方式,缺少product_id 提示的 後面竟然是 JSAPI 必填product_id ,
唉,真是不能再馬虎了,SDK都可以這麼馬虎的寫寫也沒sei了
在之後就是呼叫統一下單一介面流程了。
函數執行完畢會返回一個 weixin:// 開頭的鏈接,然後再呼叫phpqrcode 程式產生二維碼即可。
支付結果處理頁面仍使用notify.php 檔案中的處理邏輯就可以了。
延伸閱讀:
微信支付之掃碼支付(java版 native原生支付)
微信支付發展流程
微信支付JS-SDK最新版,從0開始
iOS-關於微信支付
以上就介紹了微信支付—— 掃碼支付,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

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

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。 什麼是元音? 元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫: a, e, i, o, u 示例 1 輸入:字符串 = "Tutorialspoint" 輸出:6 解釋 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元

PHP的魔法方法有哪些? PHP的魔法方法包括:1.\_\_construct,用於初始化對象;2.\_\_destruct,用於清理資源;3.\_\_call,處理不存在的方法調用;4.\_\_get,實現動態屬性訪問;5.\_\_set,實現動態屬性設置。這些方法在特定情況下自動調用,提升代碼的靈活性和效率。

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP仍然具有活力,其在現代編程領域中依然佔據重要地位。 1)PHP的簡單易學和強大社區支持使其在Web開發中廣泛應用;2)其靈活性和穩定性使其在處理Web表單、數據庫操作和文件處理等方面表現出色;3)PHP不斷進化和優化,適用於初學者和經驗豐富的開發者。
