thinkphp5 的微信支付整合
下載地址:連結: https://pan.baidu.com/s/1eRUkvtC 密碼: eu98
原作者的:連結: https://pan.baidu.com/s/1dFyE4t7 密碼: s9a7
下載後直接解壓至extend目錄下
然後去公共函式庫common寫一個函式:
//微信支付函式 function wxpay($body,$total_fee,$out_trade_no){ //傳入支付引數 //$out_trade_no = date('Ymd').time().mt_rand(); $params = [ 'body' => $body, 'out_trade_no' => $out_trade_no, 'total_fee' => $total_fee, 'product_id' => $out_trade_no, 'notify_url' => 'http://'.$_SERVER['HTTP_HOST'].'/index/user/notifyPay', ]; $result = \wxpay\NativePay::getPayImage($params,300,300); return $result; }
這個$result返回的是一個封裝好的img標籤包含處理好的二維碼
在這裡貼出上面使用的getPayIamge方法
<?php namespace wxpay; use think\Loader; Loader::import('wxpay.lib.WxPayNativePay'); /** * 掃碼支付 * * 用法: * 呼叫 \wxpay\NativePay::getPayImage($params) 即可 * */ class NativePay extends WxPayBase { /** * 獲取掃碼支付的二維碼圖片 * * @param array $params 訂單資訊 * @param string $params['body'] 商品簡單描述 * @param string $params['out_trade_no'] 商戶訂單號, 要保證唯一性 * @param string $params['total_fee'] 標價金額, 請注意, 單位為分!!!!! * @param string $params['product_id'] 商品ID * * @param string $width 二維碼寬 * @param string $height 二維碼長 * * @return string img標籤 */ public static function getPayImage($params, $width=250, $height=250) { // 1.校檢引數 $that = new self(); $that->checkParams($params); if(empty($params['product_id'])) { throw new \WxPayException('商品ID(product_id)商品ID必須'); } // 2.組裝引數 $input = $that->getPostData($params); // 3.進行請求 $tools = new \WxPayNativePay(); $result = $tools->GetPayUrl($input); // 4.進行結果檢驗 $that->checkResult($result); // 5.返回支付二維碼圖片 $url = urlencode($result["code_url"]); $payImage = "<img alt='掃碼支付' src='http://paysdk.weixin.qq.com/example/qrcode.php?data={$url}' style='width:{$width}px;height:{$height}px;'/>"; return $payImage; } // 組裝請求引數 private function getPostData($params) { $input = new \WxPayUnifiedOrder(); $input->SetBody($params['body']); $input->SetOut_trade_no($params['out_trade_no']); $input->SetTotal_fee($params['total_fee']); // $input->SetGoods_tag("test"); $input->SetNotify_url($params['notify_url']); $input->SetTrade_type("NATIVE"); $input->SetProduct_id($params['product_id']); return $input; } }
非同步查詢控制方法,是利用js'的ajax方法請求
//ajax實時請求微信支付結果
public function notifypay($out_trade_no)
{
$result = \wxpay\Query::exec($out_trade_no);
if($result['trade_state'] == 'SUCCESS'){
return 1;
}else{
return 0;
}
}
在這裡依然貼出上面呼叫的Query方法
在這裡貼出處理訂單的判斷及方法<?php namespace wxpay; use think\Loader; require_once 'lib/WxPayException.php'; Loader::import('wxpay.lib.WxPayApi'); /** * 訂單查詢 * * 用法: * 呼叫 \wxpay\Query::exec($query_no) 即可 * */ class Query { // 商戶訂單號(out_trade_no) or 微信訂單號(transaction_id) 二選一, 建議優先使用微信訂單號 const QUERY_TYPE = 'out_trade_no'; /** * 執行請求 * * @param string $query_no 微信訂單號或者商戶訂單號, 二選一 * @return array 訂單資訊 */ public static function exec($query_no) { // 1.組裝請求陣列 $input = new \WxPayOrderQuery(); if (self::QUERY_TYPE == 'transaction_id') { $input->SetTransaction_id($query_no); } else { $input->SetOut_trade_no($query_no); } // 2.進行請求 $result = \WxPayApi::orderQuery($input); return $result; } }
//如果支付成功,跳轉頁面,開始處理訂單狀態
public function doorder($oid)
{
//通過訂單號向微信查詢改訂單狀態資料集
$data = \wxpay\Query::exec($oid);
if(!array_key_exists("transaction_id", $data)){
$this->success('不存在的訂單號','commend/commendStore');
}
//獲取該訂單號資料
$order = OrderModel::get(['oid'=>$oid]);
if(!$order->oid) {
$this->success('不存在的訂單號','commend/commendStore');
}
if($order->status == 2){
$this->success('訂單已經被處理過','commend/commendStore');
}
//獲取訂單號中優惠卡的資料
$card = Card::get($order->card_id);
//獲取平臺財務資料
$m = Finance::get(1);
//設定分潤,earn為平臺提成,money為平臺剩餘商戶餘額
$earn = $card->promotion_price * ($m->commission / 100);
$money = $card->promotion_price - $earn;
//保持小數點後兩位,累加到平臺餘額
$m->money = $m->money + round($money,2);
$m->earn = $m->earn + round($earn,2);
// 啟動事務
Db::startTrans();
try{
//修改訂單狀態和儲存平臺財務資料
OrderModel::where('oid',$oid)->update(['status'=>2]);
$m->save();
// 提交事務
Db::commit();
} catch (\Exception $e) {
// 回滾事務
Db::rollback();
$this->success('訂單處理失敗,請聯絡運營方','commend/commendStore');
}
$this->success('付款成功','commend/commendStore');
}
在最後貼出掃描二維碼頁面的js
$(function(){
setInterval(function(){check()} , 10000); //每隔三秒執行一次 ajax
function check(){
var out_trade_no = $('#oid').html();
$.ajax({
type: "post",
url: '{:url("store/order/notifypay")}', //請求函式
async: false,
data: {'out_trade_no':out_trade_no},
dataType: "json",
success: function (data) {
if (data == 1) {
location.href="/store/order/doorder/oid/"+out_trade_no;
}else{
result = false;
}
}
});
}
})
相關推薦
thinkphp5 的微信支付整合
下載地址:連結: https://pan.baidu.com/s/1eRUkvtC 密碼: eu98 原作者的:連結: https://pan.baidu.com/s/1dFyE4t7 密碼: s9a7 下載後直接解壓至extend目錄下 然後去公共函式庫common寫一個
ThinkPHP5微信支付擴展庫(超級簡單, 超級超好用!)
微信支付 thinkphp5 ThinkPHP5 微信支付擴展庫(2017年9月24日)歡迎到Github查看最新代碼https://github.com/dream2023/ThinkPHP5-wxpay掃碼支付調用\wxpay\NativePay::getPayImage($params)即可小程
React Native (IOS和Android) 支付寶和微信支付整合實戰(支付寶Android篇)
序言:React Native無論是在社群和應用程度上,在國內外是十分廣泛和普及的。而支付寶和微信在支付模組上都有或多或少的支援,雖然沒有完整的Demo,不過在我做過一個相關整合的專案後,在此我把相關的步驟和方法總結出來和大家分享,希望能夠幫助大家少走彎路,快速整合。 支付
.NET微信支付整合例項
轉自https://blog.csdn.net/u013385913/article/details/46509631 微信端HTML頁面下單事件: document.getElementById('btn-wxpay')addEventListener('tap', function (e
React Native (IOS和Android) 支付寶和微信支付整合實戰(微信IOS篇)
序言:React Native無論是在社群和應用程度上,在國內外是十分廣泛和普及的。而支付寶和微信在支付模組上都有或多或少的支援,雖然沒有完整的Demo,不過在我做過一個相關整合的專案後,在此我把相關的步驟和方法總結出來和大家分享,希望能夠幫助大家少走彎路,快速整合。 微信
Spring Boot入門教程(四十):微信支付整合-刷卡支付
一:準備工作 使用微信支付需要先開通服務號,然後還要開通微信支付,最後還要配置一些開發引數,過程比較多。 二:支付方式 刷卡支付(MICROPAY) :刷卡支付是使用者展示微信錢包內的“刷卡條碼/二維碼”給商戶系統掃描後直接完成支付的模式。主要應
ThinkPHP5微信支付擴充套件庫(超級簡單, 超級超好用!)
ThinkPHP5微信支付最新擴充套件庫(2017年9月24日). 我的想法很簡單,就是隻需要呼叫一個靜態方法就可以完成支付,查詢,退款,查賬等等, 無需重複造輪子, 專注自己業務!歡迎到Github檢視最新程式碼https://github.com/dream2023/T
Android學習之 移動應用微信支付整合小結
微信支付現在主要整合在:1、移動應用開發 2、網站應用開發 3、公眾賬號開發 本篇主要針對移動應用App整合微信支付,實際專案坑點分享! 一、既予之、與共之:平臺資源 3、微信支付指引和資源中心:微信支付接入指南和資源下載中心<強
Android微信支付整合和踩過的坑
近公司需要微信支付,所以不得不去看看微信支付文件。但是你懂得,那文件寫的真帶勁,看不懂。我直接放棄,開始整合。但是調起微信支付的時候:結果碼為-1,心裡一驚,肯定哪裡錯了,就開始找坑。所以把自己解決的過程分享給大家,讓整合微信支付成為很容易的一件事。 2、我們需要的資源
iOS 微信支付整合
1. 準備微信平臺分為微信公眾平臺和微信開放平臺,公眾平臺是運營微信公眾號的管理系統,開放平臺主要針對app、網站開發,提供登入、分享、支付等功能。註冊開放平臺之後,新建應用,填寫應用資訊(Android、iOS等資訊),建立之後需要等待稽核(這個稽核很快的,幾個小時就通過了
Android 支付寶和微信支付整合
場景 隨著移動支付的興起,在我們的app中,會經常有整合支付的需求.這時候一般都會採用微信和支付寶的sdk 來整合 支付寶支付 在使用支付寶支付的過程中,我們是在伺服器端生成訂單,客戶端訪問介面,得到訂單資訊.然後調起支付,支付成功後支付寶會分別 非同步呼叫伺服器端
Android 微信支付整合重點(已經看過官方開發文件)
整合微信支付重點,適用於有整合經驗並且已經看過開發文件的同學 1.申請開通 按照官方文件步驟 (註冊平臺賬號——認證(300 如果失敗3次需再付300認證,資訊提前確認)——建立應用稽核(簽名用微信的提取工具)——開通支付功能——整合) 2.整合
React Native (IOS和Android) 支付寶和微信支付整合實戰(微信支付服務端篇)
序言:React Native無論是在社群和應用程度上,在國內外是十分廣泛和普及的。而支付寶和微信在支付模組上都有或多或少的支援,雖然沒有完整的Demo,不過在我做過一個相關整合的專案後,在此我把相關的步驟和方法總結出來和大家分享,希望能夠幫助大家少走彎路,快速整合。 微信
基於HTML5之APP微信支付整合實現(轉載)
一 摘要商戶系統和微信支付系統主要互動說明:步驟1:使用者在商戶APP中選擇商品,提交訂單,選擇微信支付。 步驟2:商戶後臺收到使用者支付單,呼叫微信支付統一下單介面。參見統一下單API。 步驟3:統一下單介面返回正常的prepay_id,再按簽名規範重新生成簽名後,將資料傳
第三方整合---微信支付整合與使用
先來一波微信支付的流程圖 商戶系統和微信支付系統主要互動說明: 步驟1:使用者在商戶APP中選擇商品,提交訂單,選擇微信支付。 步驟2:商戶後臺收到使用者支付單,呼叫微信支付統一下單介面。 步驟3:統一下單介面返回正常的prepay_id,再按簽名規範重新生成簽名
React Native (IOS和Android) 支付寶和微信支付整合實戰(支付寶服務端篇)
序言:React Native無論是在社群和應用程度上,在國內外是十分廣泛和普及的。而支付寶和微信在支付模組上都有或多或少的支援,雖然沒有完整的Demo,不過在我做過一個相關整合的專案後,在此我把相關的步驟和方法總結出來和大家分享,希望能夠幫助大家少走彎路,快速整合。 支
Android微信支付整合流程及其常見錯誤
[支付寶整合傳送門:http://blog.csdn.net/hx7013/article/details/61476320] 一、你需要關心的東西 1.申請與認證 2.上傳金鑰(商戶KEY),包名和簽名的修改 3.服務端整合 4
ThinkPHP5微信掃碼支付
values ade oca location ood 二維碼 隱藏 目的 tint 1.把微信官網下載的demo放在根目錄/vendor/目錄下,這裏我的是/vendor/wxpay_pc目錄 2.把cert裏面的文件替換成自己項目的證書(登陸微信商戶平臺,賬戶中心,
java實現沙箱測試環境支付寶支付(demo)和整合微信支付和支付寶支付到ssm
mar 文件 fun Go examples IT === throws 由於 文章有不當之處,歡迎指正,如果喜歡微信閱讀,你也可以關註我的微信公眾號:好好學java,獲取優質學習資源。 一、支付寶測試環境代碼測試 1.下載電腦網站的官方demo: 下載地址:https:
Androd整合微信支付和支付寶支付
文章目錄 前言 微信支付 支付寶支付 前言 我們在做App的時候,可能需要接入支付功能,常見的支付有微信支付和支付寶支付。這裡只說明下前端的程式碼邏輯。 微信支付 微信支付開發