久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx

PHP如何接入微信掃碼支付-創新互聯

這篇文章主要介紹了PHP如何接入微信掃碼支付,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

創新互聯是一家專注于網站制作、做網站與策劃設計,玉樹網站建設哪家好?創新互聯做網站,專注于網站建設十年,網設計領域的專業建站公司;建站業務涵蓋:玉樹等地區。玉樹做網站價格咨詢:18980820575

示例

PHP如何接入微信掃碼支付

PHP如何接入微信掃碼支付

PHP如何接入微信掃碼支付

PHP如何接入微信掃碼支付

PHP如何接入微信掃碼支付

微信掃碼支付分為兩種模式,

模式一比較復雜,需要公眾號配置回調地址。

模式二比較簡單,只需要在代碼中配置回調地址就可以了。

我這次使用的是模式二。

需要配置參數,

const APPID = 'xxx';
const MCHID = 'xxx';
const KEY = 'xxx';
const APPSECRET = 'xxx';

配置公眾號的appid,appsecret。以及微信支付的mchid與key。

生成二維碼,這個頁面需要自己去美化,不像支付寶那樣自帶效果。

require_once "./phpcms/plugin/weixinpay/lib/WxPay.Api.php";
require_once "./phpcms/plugin/weixinpay/example/WxPay.NativePay.php";
require_once './phpcms/plugin/weixinpay/example/log.php';
$input = new WxPayUnifiedOrder();
$input->SetBody('預訂'.$product_info['name'].'訂單');
$input->SetAttach('預訂'.$product_info['name'].'訂單');
$input->SetOut_trade_no($order_info['orderno']);
$input->SetTotal_fee($order_info['payprice'] * 100);
$input->SetTime_start(date("YmdHis"));
$input->SetTime_expire(date("YmdHis", time() + 600));
$input->SetGoods_tag("");
$input->SetNotify_url("http://www.ayuanduanzu.com/wxpay/notify.php"); // 地址是外網能訪問的,且不能包含參數
$input->SetTrade_type("NATIVE");
$input->SetProduct_id($product_info['id']);
$notify = new NativePay();
$result = $notify->GetPayUrl($input);
$code_url = $result["code_url"];
<img alt="掃碼支付" src="http://paysdk.weixin.qq.com/example/qrcode.php?data={urlencode($code_url)}" />

這里的回調地址很有講究,掃碼支付成功后,微信會自動調用這個地址。這個地址不能包含任何參數,否則調用失敗。啥都看不到!

微信調用的時候,會傳遞xml類型的參數。

include_once "../phpcms/base.php";
// 處理回調數據
error_reporting(E_ERROR);
require_once "../phpcms/plugin/weixinpay/lib/WxPay.Api.php";
require_once '../phpcms/plugin/weixinpay/lib/WxPay.Notify.php';
require_once '../phpcms/plugin/weixinpay/example/log.php';
//初始化日志
$logHandler= new CLogFileHandler("../logs/".date('Y-m-d').'.log');
$log = Log::Init($logHandler, 15);
class PayNotifyCallBack extends WxPayNotify
//查詢訂單
public function Queryorder($transaction_id)
{
$input = new WxPayOrderQuery();
$input->SetTransaction_id($transaction_id);
$result = WxPayApi::orderQuery($input);
Log::DEBUG("query:" . json_encode($result));
if(array_key_exists("return_code", $result)
&& array_key_exists("result_code", $result)
&& $result["return_code"] == "SUCCESS"
&& $result["result_code"] == "SUCCESS")
{
return true;
}
return false;
}
//重寫回調處理函數
public function NotifyProcess($data, &$msg)
{
Log::DEBUG("call back:" . json_encode($data));
$notfiyOutput = array();
if(!array_key_exists("transaction_id", $data)){
$msg = "輸入參數不正確";
return false;
}
//查詢訂單,判斷訂單真實性
if(!$this->Queryorder($data["transaction_id"])){
$msg = "訂單查詢失敗";
return false;
}
return true;
}
Log::DEBUG("begin notify");
$notify = new PayNotifyCallBack();
$ilog_db = pc_base::load_model('ilog_model');
$order_db = pc_base::load_model('order_model');
$postXml = $GLOBALS["HTTP_RAW_POST_DATA"];
$postArr = xmlToArray($postXml);
// 查詢是否支付成功
$r = $notify->Queryorder($postArr['transaction_id']);
if ($r) {
// 獲取訂單信息
$order_info = $order_db->get_one(array('orderno'=>$postArr['out_trade_no']));
if ($order_info['pay_status'] != '1') {
$data['pay_status'] = '1';
$data['pay_type'] = 'weixinpay';
$data['pay_code'] = $postArr['transaction_id'];
$data['paytime'] = time();
$data['order_status']= 3; // 已支付
$order_db->update($data,array('orderno'=>$postArr['out_trade_no']));
}
?>

通過

$GLOBALS["HTTP_RAW_POST_DATA"];

可以獲取微信端傳入的參數

{
"appid": "wxed7996e9ad58345d",
"attach": "u9884u8ba2u5bbfu8fc1u00b7u592au53e4u91ccu7f8eu5f0fu5957u623fu8ba2u5355",
"bank_type": "CFT",
"cash_fee": "1",
"fee_type": "CNY",
"is_subscribe": "Y",
"mch_id": "1283301801",
"nonce_str": "20xn5e0lbk2u1u6pes2uonape2sdyfs4",
"openid": "oR8C7wsknwVELIRrzTlZX2eONWeY",
"out_trade_no": "2016091455521024608",
"result_code": "SUCCESS",
"return_code": "SUCCESS",
"sign": "95C2C532D095E7BF7588522C579758C4",
"time_end": "20160914135518",
"total_fee": "1",
"trade_type": "NATIVE",
"transaction_id": "4009602001201609143926590576"
}

查詢是否已支付,支付完成的話,進行訂單數據處理。

這里的一切都是異步的,二維碼頁面啥都看不到。

只能通過異步獲取訂單狀態來判斷是否操作成功。

// 檢測是否支付成功
$(document).ready(function () {
setInterval("ajaxstatus()", 3000); 

function ajaxstatus() {
var orderno = $("#out_trade_no").val();
if (orderno != 0) {
$.ajax({
url: "?m=home&c=order&a=ajax",
type: "GET",
dataType:"json",
data: {
todo: 'ajaxCheckWxPay',
orderno: orderno,
},
success: function (json) {
if (json.status == 1) { //訂單狀態為1表示支付成功
layer.msg('支付成功',{icon:1,time: 2000},function(){
window.location.href = "?m=home&c=order&a=payDone&orderno="+json.info['orderno'];
});
// window.location.href = "wxScanSuccessUrl.action"; //頁面跳轉
}
}
});
}
}

三秒執行一次,如果成功,進行跳轉處理。

贈送函數

* 作用:array轉xml
*/
function arrayToXml($arr)
$xml = "<xml>";
foreach ($arr as $key=>$val)
{
if (is_numeric($val))
{
$xml.="<".$key.">".$val."</".$key.">"; 
}
else
$xml.="<".$key."><![CDATA[".$val."]]></".$key.">"; 
}
$xml.="</xml>";
return $xml; 

* 作用:將xml轉為array
*/
function xmlToArray($xml)
{ 
//將XML轉為array 
$array_data = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true); 
return $array_data;
}

贈送小竅門

對于異步的調用,如果看不到效果。可以建一個日志表,把操作的數據記錄在表中。便于測試。支付回調都是異步的,可以通過日志表中的數據來判斷是否支付成功,是否調用了回調,調用了幾次。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“PHP如何接入微信掃碼支付”這篇文章對大家有幫助,同時也希望大家多多支持創新互聯網站建設公司,,關注創新互聯行業資訊頻道,更多相關知識等著你來學習!

新聞名稱:PHP如何接入微信掃碼支付-創新互聯
新聞來源:http://www.js-pz168.com/article12/dhpjdc.html

成都網站建設公司_創新互聯,為您提供企業網站制作品牌網站建設網站設計App開發網站改版企業建站

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都網站建設公司
久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx
国产精品对白交换视频| 午夜久久福利影院| 免费视频最近日韩| 懂色av一区二区三区免费观看| 国产激情视频一区二区在线观看| 鬼打鬼之黄金道士1992林正英| 日韩亚洲视频| 日韩午夜电影在线观看| 亚洲视频网在线直播| 久久国产精品免费| 国产精品制服诱惑| 91成人免费在线视频| 精品91自产拍在线观看一区| 亚洲午夜激情av| 国产成a人无v码亚洲福利| 欧美精品七区| 欧美一级二级三级乱码| 亚洲精品欧美二区三区中文字幕| 国产一区二区三区精品欧美日韩一区二区三区 | 成人18视频日本| 日韩在线电影一区| 欧美成人bangbros| 亚洲图片欧美综合| 99视频一区二区| 一区二区三区|亚洲午夜| 久久久久久黄色| 免费黄网站欧美| 国产综合欧美在线看| 欧美精品精品一区| 亚洲精品成a人| 成人av一区二区三区| 伊人久久av导航| 中文无字幕一区二区三区| 久久99精品一区二区三区| 国产在线一区二| 日韩小视频在线观看专区| 亚洲午夜电影在线观看| 91高跟黑色丝袜呻吟在线观看| 在线观看欧美黄色| 亚洲视频在线一区| av亚洲产国偷v产偷v自拍| 日本精品视频一区二区| 成人欧美一区二区三区小说| 国产成人一区在线| 一区二区免费在线视频| 国产精品久久久久7777按摩| 国产乱子轮精品视频| 亚洲欧洲精品在线观看| 欧美国产激情二区三区| 国产精品影视在线观看| 亚洲欧洲日韩综合二区| 国产精品国产精品国产专区不片| 国产成人在线影院| 色国产综合视频| 亚洲免费观看高清完整版在线 | 欧美一级生活片| 天天操天天干天天综合网| 国产日韩欧美二区| 精品国产欧美一区二区| 久久精品国产亚洲高清剧情介绍| 欧美高清视频一区| 国产日产亚洲精品系列| 国产精品资源在线看| 在线一区亚洲| 亚洲综合丝袜美腿| 国产日韩在线一区二区三区| 欧美videossexotv100| 极品少妇xxxx精品少妇| 一区二区三区我不卡| 中文字幕中文字幕一区二区| 91小视频免费观看| 日韩欧美在线不卡| 精品一区二区免费| 色综合天天综合色综合av | 26uuu国产在线精品一区二区| 麻豆精品新av中文字幕| 亚洲 国产 日韩 综合一区| 中文字幕亚洲一区二区va在线| 91蜜桃视频在线| 日韩一区二区在线观看视频| 另类小说综合欧美亚洲| 亚洲三区四区| 亚洲综合在线免费观看| 久久久久资源| 国产精品久久久久久久蜜臀| 97人人模人人爽人人喊38tv| 精品国产1区二区| 成人久久久精品乱码一区二区三区| 欧美男生操女生| 激情六月婷婷久久| 欧美日韩一区久久| 六月丁香综合在线视频| 在线免费观看日本欧美| 免费成人在线视频观看| 色婷婷av一区二区三区软件| 五月天久久比比资源色| 日韩高清av| 亚洲午夜精品在线| 神马欧美一区二区| 亚洲福利电影网| 亚洲精品不卡| 日韩精品一级中文字幕精品视频免费观看| 神马影院我不卡午夜| 亚洲va天堂va国产va久| 一区二区免费在线视频| 日本亚洲天堂网| 91国产精品成人| 久久99精品国产麻豆婷婷| 欧美视频一二三区| 国产一区二区三区黄视频| 这里只有精品电影| 岛国av在线一区| 久久综合久久99| 国产精品久久久久久久久婷婷| 国产精品天美传媒沈樵| 久久riav| 亚洲一区电影777| 中文字幕一区综合| 极品美女销魂一区二区三区免费| 欧美久久一二区| www.在线成人| 欧美激情在线看| 欧美精品成人一区二区在线观看| 亚洲综合图片区| 在线亚洲一区二区| 国产精品系列在线播放| 亚洲精品在线观看视频| av成人综合网| 亚洲人快播电影网| 亚洲欧洲另类精品久久综合| 蜜桃一区二区三区在线观看| 在线不卡的av| 91av免费看| 亚洲欧美日韩国产手机在线| 先锋影音亚洲资源| 久久99蜜桃精品| 精品免费视频.| 国产欧美在线一区二区| 亚洲国产日韩精品| 精品视频一区三区九区| 成人激情黄色小说| 国产精品久久久久影视| 日韩一区免费观看| 精品一区二区精品| 久久影院视频免费| 久久精品国产理论片免费| 水蜜桃久久夜色精品一区的特点| 欧美日韩国产成人在线91 | 日韩美女主播在线视频一区二区三区 | 成人爽a毛片一区二区免费| 欧美高清在线精品一区| 日韩国产欧美一区| 国产一区二区在线看| 久久久综合视频| 日本一区二区久久精品| 久久99国产乱子伦精品免费| 精品国产乱码久久久久久夜甘婷婷| 国产女人水真多18毛片18精品| 亚洲国产精品久久久久婷婷884| 欧美日韩久久久一区| 91福利视频导航| 亚洲二区视频在线| 3d动漫精品啪啪一区二区竹菊| 国产福利久久精品| 天天综合天天综合色| 日韩精品中午字幕| 欧美精品尤物在线| 精品系列免费在线观看| 欧美国产精品一区| 一本久道中文字幕精品亚洲嫩| 成人三级在线视频| 一区二区三区中文字幕| 91精品国产综合久久精品麻豆 | 欧美亚洲日本一区| 97久久人人超碰caoprom欧美| 亚洲国产精品久久人人爱| 欧美一区二区三区不卡| 久久精品aaaaaa毛片| 国产自产2019最新不卡| 国产精品久久久久久亚洲毛片 | 色女人综合av| 成人一级片网址| 一区二区久久久久久| 欧美一区二区三区四区高清| 就去色蜜桃综合| 国产综合色精品一区二区三区| 国产精品另类一区| 欧美日韩一级片在线观看| 国产日韩欧美一区二区三区四区| 久久99精品网久久| 亚洲欧洲在线观看av| 欧美精品日韩一区| 农村寡妇一区二区三区| 国产91综合一区在线观看| 一区二区三区**美女毛片| 欧美大片在线观看一区二区| 婷婷久久青草热一区二区 | 精品国产91九色蝌蚪| 中文字幕中文字幕一区三区| 91超碰在线免费观看|