微信支付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.mzph.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技术逐步在企业园区网得到应用。 基于铜线…