摘要:微信支付的接入,如果不使用成熟的開發(fā)包,將是巨大的工作量。回調(diào)處理請見下文教程分鐘實現(xiàn)小程序微信支付接入下回調(diào)發(fā)貨邏輯已知異常如果你不添加,可能會報容器找不到這個應(yīng)用的報錯。
微信支付的接入,如果不使用成熟的開發(fā)包,將是巨大的工作量。
依賴 EasyWechat先在 laravel 項目中依賴 easywechat 這個包
composer require "overtrue/laravel-wechat":"^4.0"
配置
在 .env 中添加微信支付的 key 配置
WECHAT_PAYMENT_SANDBOX=false WECHAT_PAYMENT_APPID=wx64c*** WECHAT_PAYMENT_MCH_ID=150*** WECHAT_PAYMENT_KEY=ZZDDD*** WECHAT_PAYMENT_CERT_PATH=/home/secret/apiclient_cert.pem WECHAT_PAYMENT_KEY_PATH=/home/secret/apiclient_key.pem WECHAT_PAYMENT_NOTIFY_URL=https://www.mysite.com/gateway/wxpay/callback
如果你需要額外的配置,可以運行 php artisan vendor:publish --provider="OvertrueLaravelWeChatServiceProvider" ,然后在 config/wechat.php 中可以看到 easywecaht 可以支持的全部配置。
編寫接口邏輯新建一個 App/Repositories/PayRepository.php
wxpay = app("easywechat.payment"); $unify = $this->wxpay->order->unify([ "body" => $this->transfer->name . " " . $this->tickets->count() . "張票", "out_trade_no" => "訂單號", "total_fee" => bcmul("價格:單位元", 100), "trade_type" => "JSAPI", "openid" => $user->openid, // 用戶的openid ]); if ($unify["return_code"] === "SUCCESS" && !isset($unify["err_code"])) { $pay = [ "appId" => config("wechat.payment.default.app_id"), "timeStamp" => (string) time(), "nonceStr" => $unify["nonce_str"], "package" => "prepay_id=" . $unify["prepay_id"], "signType" => "MD5", ]; $pay["paySign"] = generate_sign($pay, config("wechat.payment.default.key")); return $pay; } else { $unify["return_code"] = "FAIL"; return $unify; } } }
新建一個 App/Http/Controllers/PayController.php
pay_repository = $pay_repository; } /** * 微信支付 * * @return Response */ public function pay() { $user = auth()->user(); $pay = $this->pay_repository->pay($user); return Response::success(["pay" => $pay]); } }
綁定路由 routes/api.php
name("pay");編寫JS邏輯
在頁面 JS 里面編輯支付邏輯
onPay: function (e) { wx.request({ url: "/api/buy/pay", method: "POST", success: (res) => { if (res.data.pay.result_code != "SUCCESS") { return wx.showModal({ content: res.data.pay.return_msg + res.data.pay.err_code_des, showCancel: false }); } res.data.pay.success = (res) => { wx.showModal({ content: "您已成功支付", showCancel: false }); }; res.data.pay.fail = (res) => { if (res.errMsg == "requestPayment:fail cancel") { return wx.showToast({ icon: "none", title: "用戶取消支付", }); } }; wx.requestPayment(res.data.pay); } }); },
在頁面按鈕上調(diào)用
效果 支付成功回調(diào)關(guān)于回調(diào)處理請期待下一篇文章。~
回調(diào)處理請見下文:Laravel教程: 3分鐘實現(xiàn)小程序微信支付接入(下)——回調(diào)發(fā)貨邏輯
如果你不添加.env,可能會報容器找不到這個應(yīng)用的報錯。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/29337.html
摘要:接上文教程分鐘實現(xiàn)小程序微信支付接入上喚起支付編碼綁定回調(diào)路由注意前一篇文章的添加與此處路由的要保持一致。 接上文: Laravel教程: 3分鐘實現(xiàn)小程序微信支付接入(上)——喚起支付 編碼 綁定回調(diào)路由 routes/api.php Route::any(/gateway/wxpay/callback, PayController@callback)->name(pay.callb...
摘要:本文是淺析微信支付系列文章的第二篇,主要講解一下普通商戶接入的支付方式以及其中的不同之處。淺析微信支付前篇大綱微信支付是集成在微信客戶端的支付功能,用戶可以通過手機(jī)完成快速的支付流程。目前微信支付支持手機(jī)系統(tǒng)有蘋果安卓和。 本文是【淺析微信支付】系列文章的第二篇,主要講解一下普通商戶接入的支付方式以及其中的不同之處。 上篇文章講了本系列的大綱,沒有看過的朋友們可以看一下。 淺析微信支...
摘要:淺析微信支付前篇大綱本文是淺析微信支付系列文章的第一篇,主要會介紹一下為何寫下這個系列以及對于微信支付的一點小經(jīng)驗,與君共勉。下面講一下我是如何去學(xué)習(xí)微信支付的。 淺析微信支付:前篇大綱 本文是【淺析微信支付】系列文章的第一篇,主要會介紹一下為何寫下這個系列以及對于微信支付的一點小經(jīng)驗,與君共勉。 以下會分幾個步驟講一下我學(xué)習(xí)微信支付的過程,也是一部辛酸史,也是希望朋友們不要再次跌進(jìn)...
摘要:快應(yīng)用微信支付首先是服務(wù)端完成支付服務(wù)端的接入,接入完成以后,服務(wù)器要完成的工作是接收來自客戶端的支付請求,然后生成一個訂單,之后把訂單傳給微信的服務(wù)器,微信會返回一個,服務(wù)器需要把這個返回給客戶端完成一個中間跳轉(zhuǎn)頁面,中間頁需要在加載 快應(yīng)用微信H5支付 1.首先是服務(wù)端完成支付服務(wù)端的接入,接入完成以后,服務(wù)器要完成的工作是接收來自客戶端的支付請求,然后生成一個訂單,之后把訂單傳給...
閱讀 2082·2019-08-30 15:53
閱讀 3076·2019-08-30 15:44
閱讀 2927·2019-08-30 14:11
閱讀 2923·2019-08-30 14:01
閱讀 2710·2019-08-29 15:16
閱讀 3762·2019-08-29 13:10
閱讀 1255·2019-08-29 10:56
閱讀 2539·2019-08-26 13:58