微信支付JsAPI

https://pay.weixin.qq.com/wiki/doc/api/download/WxpayAPI_php_v3.zip
下載獲取微信支付demo壓縮包打開壓縮包,并將其中 WxpayAPI_php_v3\example下的
jsapi.php
log.php
WxPay.JsApiPay.php
WxPay.MicroPay.php
WxPay.NativePay.php
解壓縮到根目錄 tellingtent/打開
WxPay.JsApiPay.php
WxPay.MicroPay.php
WxPay.NativePay.php
將其中涉及調用
../lib/......
路徑的改成
lib/......然后即可將微信支付demo壓縮包中WxpayAPI_php_v3下的lib文件夾也解壓縮到根目錄 tellingtent/修改 tellingtent/lib/WxPay.Config.php 以下內容
const APPID = 'wx6385582ec2cc9108';//wx426b3015555a46be
const MCHID = '1226119502';//1900009851
const KEY = '8eujY70kmgkseu274980kH9e0uri78kd';//8934e7d15453e97507ef794cf7b0519d
const APPSECRET = '7813490da6f1265e4901ffb80afaa36f';//7813490da6f1265e4901ffb80afaa36f
這些內容從公眾號中獲取然后登陸公眾號,設置支付授權目錄,這里是
http://anting.imagchina.com/tellingtent/
tellingtent/即是存放支付文件的根目錄并且在設置支付授權目錄中下載一個MP_verify_2YfIdHkI4jOcQ30B.txt文件,存放到根目錄 tellingtent/ 中打開jsapi.php
將其中獲取openid的
$tools->GetOpenid();
換成已獲取的openid,這里是
osKoBjx_vTKa67vgoJjH4Dg81tRk
在這里暫時不借用官方的獲取openid方法在微信中打開
http://anting.imagchina.com/tellingtent/jsapi.php
即可進行支付jsapi.php里的支付回調單號SetOut_trade_no自定義賦值,但不能重復,在支付成功后,微信會回調jsapi.php里SetNotify_url設定的路徑,回調信息中有對應付款成功的out_trade_no單號最好在調用微信支付的js方法callpay()之前,先創建本地的訂單信息,保存out_trade_no單號,并且設定支付狀態為未支付
在設定好的回調頁面中根據支付成功的out_trade_no單號修改數據庫中對應訂單的付款狀態為支付成功支付成功后回調頁面內容
PHP非以傳統$_GET$_POST方式獲取微信回調內容,以 file_get_contents('php://input'); 獲取
例
<?php
//$postStr獲取到的是格式化字符串內容
$postStr = file_get_contents('php://input');
?><xml>
<appid><![CDATA[wx6385582ec2cc9108]]></appid> <attach><![CDATA[嘉亭薈移動故事屋]]></attach>
<bank_type><![CDATA[CMB_DEBIT]]></bank_type> <cash_fee><![CDATA[8000]]></cash_fee>
<fee_type><![CDATA[CNY]]></fee_type> <is_subscribe><![CDATA[Y]]></is_subscribe>
<mch_id><![CDATA[1226119502]]></mch_id> <nonce_str><![CDATA[d0hh1c3m1ynd52qhajgsk6jwqcvkez0p]]></nonce_str>
<openid><![CDATA[osKoBj2iVkFtf8-MBcHXyWkaXT4k]]></openid> <out_trade_no><![CDATA[122611950220160923172852]]></out_trade_no>
<result_code><![CDATA[SUCCESS]]></result_code> <return_code><![CDATA[SUCCESS]]></return_code>
<sign><![CDATA[D4F31510A3EED6F54AB0B4A02D772C98]]></sign> <time_end><![CDATA[20160923173254]]></time_end>
<total_fee>8000</total_fee> <trade_type><![CDATA[JSAPI]]></trade_type> <transaction_id><![CDATA[4006602001201609234721061954]]></transaction_id>
</xml>需要手動截取獲取其中想要信息值
如想要out_trade_no與transaction_id的值
例
<?php
$postStr = file_get_contents('php://input');$trade_noarr = explode ( "out_trade_no><![CDATA[", $postStr );
$trade_noarr = explode ( "]]></out_trade_no", $trade_noarr [1] );
$out_trade_no = $trade_noarr [0];$arr = explode ( "transaction_id><![CDATA[", $postStr );
$arr = explode ( "]]></transaction_id", $arr [1] );
$transaction_id = $arr [0];// 即可根據返回的訂單號修改數據庫中對應訂單信息
?>微信成功后同一單號會多次回調信息內容,一般三次設定的支付路徑是根目錄 tellingtent/ 不變可以把之前的
jsapi.php
log.php
WxPay.JsApiPay.php
WxPay.MicroPay.php
WxPay.NativePay.php
lib文件夾
單獨放到某個目錄下面
例如這里放到根目錄下的
tellingtent/testpay
文件夾里
把支付樣例jsapi.php文件中的html部分代碼提取出來單獨存放在根目錄下的某個文件內,這里是
tellingtent/testpay.php
代碼內容
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<script type="text/javascript" src="./testpay/jquery.min.js"></script>
<title>微信支付樣例-支付</title>
<script type="text/javascript">var jsApiParameters = '';$.post("./testpay/jsapi.php",{},function(data){jsApiParameters = data;alert(jsApiParameters);},"json")//調用微信JS api 支付function jsApiCall(){if(jsApiParameters){WeixinJSBridge.invoke('getBrandWCPayRequest',jsApiParameters,function(res){WeixinJSBridge.log(res.err_msg);alert(res.err_code+res.err_desc+res.err_msg);});}}function callpay(){if (typeof WeixinJSBridge == "undefined"){if( document.addEventListener ){document.addEventListener('WeixinJSBridgeReady', jsApiCall, false);}else if (document.attachEvent){document.attachEvent('WeixinJSBridgeReady', jsApiCall); document.attachEvent('onWeixinJSBridgeReady', jsApiCall);}}else{jsApiCall();}}</script>
</head>
<body><br /><font color="#9ACD32"><b>該筆訂單支付金額為<spanstyle="color: #f00; font-size: 50px">1分</span></b></font><br /><br /><div align="center"><buttonstyle="width: 210px; height: 50px; border-radius: 15px; background-color: #FE6714; border: 0px #FE6714 solid; cursor: pointer; color: white; font-size: 16px;"type="button" οnclick="callpay()">立即支付</button></div>
</body>
</html>原頁面直接通過php獲取的jsApiParameters,改為通過ajax獲取
這樣tellingtent/testpay文件夾內的原文件jsapi.php里只剩下之前的php代碼
<?php 
ini_set('date.timezone','Asia/Shanghai');
//error_reporting(E_ALL);
require_once "lib/WxPay.Api.php";
require_once "WxPay.JsApiPay.php";
require_once 'log.php';
//初始化日志
$logHandler= new CLogFileHandler("../logs/".date('Y-m-d').'.log');
$log = Log::Init($logHandler, 15);//打印輸出數組信息
function printf_info($data)
{foreach($data as $key=>$value){//echo "<font color='#00ff55;'>$key</font> : $value <br/>";
    }
}//①、獲取用戶openid
$tools = new JsApiPay();
$openId = 'osKoBjx_vTKa67vgoJjH4Dg81tRk';//$tools->GetOpenid();//②、統一下單
$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("JSAPI");
$input->SetOpenid($openId);
$order = WxPayApi::unifiedOrder($input);
//echo '<font color="#f00"><b>統一下單支付單信息</b></font><br/>';
printf_info($order);
$jsApiParameters = $tools->GetJsApiParameters($order);echo $jsApiParameters;exit;//獲取共享收貨地址js函數參數
//$editAddress = $tools->GetEditAddressParameters();//③、在支持成功回調通知中處理成功之后的事宜,見 notify.php
/*** 注意:* 1、當你的回調地址不可訪問的時候,回調通知會失敗,可以通過查詢訂單來確認支付是否成功* 2、jsapi支付時需要填入用戶openid,WxPay.JsApiPay.php中有獲取openid流程 (文檔可以參考微信公眾平臺“網頁授權接口”,* 參考http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html)*/
?>如此微信中訪問
http://anting.imagchina.com/tellingtent/testpay.php
也可以進行支付
只要支付調用js的文件在支付授權指定目錄中即可

?

轉載于:https://www.cnblogs.com/dreamhome/p/6230782.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/394279.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/394279.shtml
英文地址,請注明出處:http://en.pswp.cn/news/394279.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mysql 多數據源訪問_通過Spring Boot配置動態數據源訪問多個數據庫的實現代碼

之前寫過一篇博客《SpringMybatisMysql搭建分布式數據庫訪問框架》描述如何通過SpringMybatis配置動態數據源訪問多個數據庫。但是之前的方案有一些限制(原博客中也描述了)&#xff1a;只適用于數據庫數量不多且固定的情況。針對數據庫動態增加的情況無能為力。下面講的方案能支…

我如何將Google I / O 2018的興奮帶給尼日利亞沃里的115個人

Google Developer Group Warri的第一個I / O擴展事件的故事 (A tale of Google Developer Group Warri’s first I/O Extended event) Google I/O is one of the largest developer festivals in the tech ecosystem. I am the lead organizer for the Google Developer Group …

菜鳥postman接口測試_postman 接口測試(轉)

本文轉載自testerhome&#xff1b;作者&#xff1a;xinxi1990 &#xff1b;原文鏈接&#xff1a;https://testerhome.com/topics/18719&#xff1b;轉載以分享知識為目的&#xff0c;著作權歸原作者所有&#xff0c;如有侵權&#xff0c;請聯系刪除。postman使用創建用例集啟動…

求絕對值最小的數

題目 有一個升序排列的數組&#xff0c;數組中可能有正數&#xff0c;負數或0. 求數組中元素的絕對值最小的數. 例如 數組{-10&#xff0c; 05&#xff0c; 02 &#xff0c;7&#xff0c;15&#xff0c;50} 絕對值最小的是-2 解答 #include <bits/stdc.h> using namespac…

leetcode面試題 04.02. 最小高度樹(深度優先搜索)

給定一個有序整數數組&#xff0c;元素各不相同且按升序排列&#xff0c;編寫一個算法&#xff0c;創建一棵高度最小的二叉搜索樹。 public TreeNode sortedArrayToBST(int[] nums) {if(nums.length0) return null;return BST(nums,0,nums.length-1);}public TreeNode BST(int[…

IT團隊如何贏得尊重?

本文講的是IT團隊如何贏得尊重,在傳統觀念中&#xff0c;作為企業的IT人&#xff0c;似乎都有一種揮之不去的消極情緒&#xff1a;能夠為企業帶來直接利益的業務部門才是企業核心&#xff0c;而作為技術支撐的IT部門&#xff0c;則是作為附屬而存在。 我們經常也會聽到一些企業…

mysql 官方鏡像_運行官方mysql 鏡像

//目前最新的為mysql 8sudo docker run -itd --restart unless-stopped --nethost --name mysql -p3306:3306 -e MYSQL_ROOT_PASSWORDroot mysqlmysql 官方docker 需要重新設置密碼&#xff0c;否則無法遠程連接step1 : docker exec -it [容器id] /bin/bashstep2 : 登陸mysql &…

我如何使用React,Redux-Saga和Styled Components構建NBA球員資料獲取器

by Jonathan Puc喬納森普克(Jonathan Puc) 我如何使用React&#xff0c;Redux-Saga和Styled Components構建NBA球員資料獲取器 (How I built an NBA player profile fetcher with React, Redux-Saga, and Styled Components) Hello, all! It’s been a while since I built so…

vb 數組屬性_VB中菜單編輯器的使用講解及實際應用

大家好&#xff0c;今天我們共同來學習VB中菜單方面的知識。VB中菜單的基本作用有兩個&#xff1a;1、提供人機對話的界面&#xff0c;以便讓使用者選擇應用系統的各種功能&#xff1b;2、管理應用系統&#xff0c;控制各種功能模塊的運行。在實際應用中&#xff0c;菜單可分為…

《JAVA程序設計》_第七周學習總結

一、學習內容 1.String類——8,1知識 Java專門提供了用來處理字符序列的String類。String類在java.lang包中&#xff0c;由于java.lang包中的類被默認引入&#xff0c;因此程序可以直接使用String類。需要注意的是Java把String類聲明為final類&#xff0c;因此用戶不能擴展Stri…

leetcode109. 有序鏈表轉換二叉搜索樹(深度優先搜索/快慢指針)

給定一個單鏈表&#xff0c;其中的元素按升序排序&#xff0c;將其轉換為高度平衡的二叉搜索樹。 本題中&#xff0c;一個高度平衡二叉樹是指一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。 解題思路 先將鏈表轉換成數組&#xff0c;再構造二叉搜索樹 代碼 …

NeHe OpenGL教程 第三十七課:卡通映射

轉自【翻譯】NeHe OpenGL 教程 前言 聲明&#xff0c;此 NeHe OpenGL教程系列文章由51博客yarin翻譯&#xff08;2010-08-19&#xff09;&#xff0c;本博客為轉載并稍加整理與修改。對NeHe的OpenGL管線教程的編寫&#xff0c;以及yarn的翻譯整理表示感謝。 NeHe OpenGL第三十七…

SDN交換機在云計算網絡中的應用場景

SDN的技術已經發展了好幾年了&#xff0c;而云計算的歷史更長&#xff0c;兩者的結合更是作為SDN的一個殺手級應用在近兩年炒得火熱&#xff0c;一些知名咨詢公司的關于SDN逐年增加的市場份額的論斷&#xff0c;也主要是指SDN在云計算網絡中的應用。 關于SDN在云計算網絡中的應…

sql server 里面怎么支持數字使用雙引號_國查:用中文編寫SQL

這兩天被 文言(wenyan-lang)刷屏了&#xff0c;這個項目在于使用文言文進行編程&#xff0c;我打算蹭個熱度&#xff0c;把年初的作品再撈一撈&#xff0c;即中文SQL。1. 文言Wenyan&#xff1a;吾有一數。曰三。名之曰「甲」。為是「甲」遍。吾有一言。曰「「問天地好在。」」…

七日掌握設計配色基礎_掌握正確的基礎知識:如何設計網站的導航,搜索和首頁...

七日掌握設計配色基礎by Anant Jain通過Anant Jain 掌握正確的基礎知識&#xff1a;如何設計網站的導航&#xff0c;搜索和首頁 (Get the basics right: how to design your site’s navigation, search, and homepage) 一個7分鐘的指南&#xff0c;使這三個基礎組件正確無誤。…

python渲染光線_python模板渲染配置文件

python的mako、jinja2模板庫&#xff0c;確實好用&#xff01;這里做個筆記&#xff0c;好記性不如爛筆頭。#!/usr/bin/env python#encodingutf-8import sys,yaml # 配置文件使用yaml格式from mako.template import Template # 加載mako庫的Templat…

leetcode114. 二叉樹展開為鏈表(深度優先搜索)

給定一個二叉樹&#xff0c;原地將它展開為一個單鏈表。例如&#xff0c;給定二叉樹1/ \2 5/ \ \ 3 4 6 將其展開為&#xff1a;1\2\3\4\5\6代碼 class Solution {public void flatten(TreeNode root) {flat(root);}public TreeNode flat(TreeNode root) {if(rootnull)…

eclipse新建web項目

需要點擊File—>New—>Other…在Web文件夾下找到Dynamic Web Project—>Next修改server端口可以在啟動項目后訪問地址是端口號項目名轉載于:https://juejin.im/post/5cb4999df265da037b610545

idea tips

AltInsert 自動出現generate ,,里面有構造方法&#xff0c;getter,setter... CtrlO,重寫方法 CtrlI...自動出現接口的方法 轉載于:https://www.cnblogs.com/bin-lin/p/6247538.html

革新以太網交換機架構 全光網絡的風刮進園區

全光網絡的風正在刮進園區網&#xff0c;眾所周知&#xff0c;光纖入戶發展迅速&#xff0c;隨著PON&#xff08;無源光纖網絡&#xff09;技術在運營商通信網絡的大規模使用&#xff0c;PON相關產業鏈逐步成熟&#xff0c;這也使得PON技術逐步在企業園區網得到應用。 基于銅線…