求助TP框架微信公众号支付 failjsApi支付的时候fail

提供主流cms教程
提供数据库教程和设计
提供各种常见网页js代码
提供常用的JS特效代码及在线演示
提供jQuery插件教程及插件下载
提供服务器常见问题及教程
提供站长技术、站长资讯等内容
提供常用开发手册和开发工具
您现在的位置:& >
ThinkPHP微信支付接口开发完整例子
导读:微信支付接口开发很简单我们只需要在官方申请权限然后参考官方的文章即可实现支付开发了,下面来看一个简单的例子,具体如下。最近有个微商...
微信支付接口开发很简单我们只需要在官方申请权限然后参考官方的文章即可实现支付开发了,下面来看一个简单的例子,具体如下。
最近有个微商城做了微信支付的接口,现在整理一下发上来。
首先是需要有已开通微信支付接口的公众号,这个相信大家都知道,开通之后微信会发一封邮件到你的邮箱,邮件的内容就是开发需要用到的一些接口信息了(包含账号密码之类的东西)。
一、进入公众号平台,先设置几个参数,包括绑定域名、设置回调地址等等。
1、在设置 -& 公众号设置 -& 功能设置 -& 设置JS接口安全域名
2、在微信支付 -& 开发配置 -& 配置你的js支付接口,回调地址等等,正式目录和测试目录都可以写上,测试目录需要把个人微信号先添加到白名单才能使用(提醒:用TP框架的小伙伴们在填写支付授权目录时可以这样填写:域名/index.php/控制器/,经测试是可以通过的,微信一样能检测到,之前看到网上有人说这样不行,可能是现在升级了吧,呵呵,还有一个就是域名一定要是已经备过案的才行,如果是在本地进行测试的小伙伴们可以使用花生壳,我不是在打广告,个人觉得还是挺好用的)
3、在开发者中心把&网页授权获取用户基本信息&的域名写上自己的域名,微信登陆时需要用到的;
二、到上面一大步设置完成后就可以开始我们的开发工作了;
1、用TP的小伙伴们可以用下面的包放到tp的扩展里,也可以自行到官网下载sdk包,具体目录:ThinkPHP\Library\Vendor\,其它就可以不用管啦;
2、打开包里的WxPayPubConfig.php文件,填写上你的微信支付的接口信息就好啦;
三、上面二大步都是配置,这一步就是写支付类了,其实也没什么的,复制粘贴就好了;
1、新建Wxpay控制器,当然你也可以自己命名,访问的名称要跟你在微信上配置的授权目录一样就好了;点击这里下载Wxpay
2、代码的地方就不多说了,下面直接上代码;
namespace&Home\C
use&Think\C
class&WxpayController&extends&Controller&{
&&&&public&function&js_api_call()&{
&&&&&&&&$order_sn&=&I('get.order_sn',&'');
&&&&&&&&if&(empty($order_sn))&{
&&&&&&&&&&&&header('location:'.__ROOT__.'/');
&&&&&&&&vendor('Weixinpay.WxPayPubHelper');
&&&&&&&&$jsApi&=&new&\JsApi_pub();
&&&&&&&&if&(!isset($_GET['code'])){
&&&&&&&&&&&&
&&&&&&&&&&&&$url&=&$jsApi-&createOauthUrlForCode('域名/Wxpay/js_api_call?order_sn='.$order_sn);
&&&&&&&&&&&&
&&&&&&&&&&&&Header(&Location:&$url&);&
&&&&&&&&}else{
&&&&&&&&&&&&
&&&&&&&&&&&&$code&=&$_GET['code'];
&&&&&&&&&&&&$jsApi-&setCode($code);
&&&&&&&&&&&&$openid&=&$jsApi-&getOpenId();
&&&&&&&&$res&=&array(
&&&&&&&&&&&&'order_sn'&=&&'22',
&&&&&&&&&&&&'order_amount'&=&&255
&&&&&&&&);
&&&&&&&&$unifiedOrder&=&new&\UnifiedOrder_pub();
&&&&&&&&$total_fee&=&$res['order_amount']*100;
&&&&&&&&$body&=&&订单支付{$res['order_sn']}&;
&&&&&&&&$unifiedOrder-&setParameter(&openid&,&&$openid&);
&&&&&&&&$unifiedOrder-&setParameter(&body&,&$body);
&&&&&&&&$out_trade_no&=&$res['order_sn'];
&&&&&&&&$unifiedOrder-&setParameter(&out_trade_no&,&$out_trade_no);
&&&&&&&&$unifiedOrder-&setParameter(&total_fee&,&$total_fee);
&&&&&&&&$unifiedOrder-&setParameter(&notify_url&,&\WxPayConf_pub::NOTIFY_URL);
&&&&&&&&$unifiedOrder-&setParameter(&trade_type&,&&JSAPI&);
&&&&&&&&$prepay_id&=&$unifiedOrder-&getPrepayId();
&&&&&&&&$jsApi-&setPrepayId($prepay_id);
&&&&&&&&$jsApiParameters&=&$jsApi-&getParameters();
&&&&&&&&$wxconf&=&json_decode($jsApiParameters,&true);
&&&&&&&&if&($wxconf['package']&==&'prepay_id=')&{
&&&&&&&&&&&&$this-&error('当前订单存在异常,不能使用支付');
&&&&&&&&$this-&assign('res',&$res);
&&&&&&&&$this-&assign('jsApiParameters',&$jsApiParameters);
&&&&&&&&$this-&display('jsapi');
&&&&public&function&notify_url()&{
&&&&&&&&vendor('Weixinpay.WxPayPubHelper');
&&&&&&&&$notify&=&new&\Notify_pub();
&&&&&&&&$xml&=&$GLOBALS['HTTP_RAW_POST_DATA'];&&&&
&&&&&&&&$notify-&saveData($xml);
&&&&&&&&if($notify-&checkSign()&==&FALSE){
&&&&&&&&&&&&$notify-&setReturnParameter(&return_code&,&&FAIL&);
&&&&&&&&&&&&$notify-&setReturnParameter(&return_msg&,&&签名失败&);
&&&&&&&&}else{
&&&&&&&&&&&&$notify-&setReturnParameter(&return_code&,&&SUCCESS&);
&&&&&&&&$returnXml&=&$notify-&returnXml();
&&&&&&&&$parameter&=&$notify-&xmlToArray($xml);
&&&&&&&&if($notify-&checkSign()&==&TRUE){
&&&&&&&&&&&&if&($notify-&data[&return_code&]&==&&FAIL&)&{
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&echo&'error';
&&&&&&&&&&&&}
&&&&&&&&&&&&else&if($notify-&data[&result_code&]&==&&FAIL&){
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&echo&'error';
&&&&&&&&&&&&}
&&&&&&&&&&&&else{
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&if&($this-&process($parameter))&{
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&echo&'success';
&&&&&&&&&&&&&&&&}else&{
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&echo&'error';
&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&}
&&&&private&function&process($parameter)&{
&&&&&&&&&&&&
&&&&&&&&&&&&
&&&&&&&&&&&&
&&&&&&&&return&
四、以上就是微信支付的整个流程了,扫码支付的应该都差不多,我没去弄了,用过的朋友也可以分享下,^_^;来上几张支付的截图
转载请注明(B5教程网)原文链接:
网友评论:tp3.2中微信支付中将调用支付处简单封装 - tianjingang1的博客 - CSDN博客
tp3.2中微信支付中将调用支付处简单封装
前提:微信公众平台 微信支付商户平台要配置好.
第一步:将目录WxpayAPI放入项目Vendor目录下,里面有这些文件如下图:
第二步:将目录Weixin放入项目如下图Common/Libs所示目录:
第三步:在Util目录里新建Wxpay.class.php文件:
第四步:Wxpay.class.php里面内容为:
namespace Org\U
import('Common.Libs.Weixin.WechatAuth');//JSSDK 需要用到accessToken
import('Common.Libs.Weixin.JSSDK');//JSSDK
import('Common.Pay');//红包与企业支付
class Wxpay
&public function pay($ocode,$money,$openid,$notify){
&&&&&&&&&&&&&&& $http=$_SERVER['HTTP_HOST'];
&&&&&&&&&&&&&&& import('Common.Libs.Weixin.JSAPI');
&&&&&&&&&&&&&&& $tools = new \JsApiPay();
&&&&&&&&&&&&&&& $Out_trade_no&& = $
&&&&&&&&&&&&&&& $Body&&&&&&&&&& = '订单号:'.$Out_trade_
&&&&&&&&&&&&&&& $Total_fee&&&&& = $money* 100;
&&&&&&&&&&&&&&& //设置支付
&&&&&&&&&&&&&&& $input = new \WxPayUnifiedOrder();
&&&&&&&&&&&&&&& $input-&SetBody($Body);
&&&&&&&&&&&&&&& $input-&SetOut_trade_no($Out_trade_no);
&&&&&&&&&&&&&&& $input-&SetTotal_fee($Total_fee);
&&&&&&&&&&&&&&& $input-&SetNotify_url($http.$notify);
&&&&&&&&&&&&&&& $input-&SetTrade_type(&JSAPI&);
&&&&&&&&&&&&&&& $input-&SetOpenid($openid);
&&&&&&&&&&&&&&& $order = \WxPayApi::unifiedOrder($input);
&&&&&&&&&&&&&&& $this-&jsApiParameters = $tools-&GetJsApiParameters($order);
第五步:控制器里:
上面引入:use Org\Util\W
方法recharge里面为:
&public function recharge()
&&&&&&& { &
&&&&&&&&&&& $http=$_SERVER['HTTP_HOST'];
&&&&&&&&&&& $notify='/Weixin/Notify/index';
&&&&&&&&&&& $ocode=$_POST['ordercode'];//商户订单号
&&&&&&&&&&& $money=$_POST['money'];//总金额
&&&&&&&&&&& $pmethod=$_POST['pay-method'];
&&&&&&&&&&& if($pmethod==1)
&&&&&&&&&&& {& &
&&&&&&&&&&&&&&& $usermobile=$_SESSION['usermobile'];//当前登录者用户手机号
&&&&&&&&&&&&&&& $user=M('user');
&&&&&&&&&&&&&&& $userdata=$user-&where(array('tellphone'=&$usermobile))-&find();
&&&&&&&&&&&&&&& $user_id=$userdata['id'];
&&&&&&&&&&&&&&& $yue_before=$userdata['zbqianbao'];
&&&&&&&&&&&&&&& $yue_after=$yue_before+$
&&&&&&&&&&&&&&& //支付前生成预订单
&&&&&&&&&&&&&&& $data=[
&&&&&&&&&&&&&&&&&&& &user_id&=&$user_id,
&&&&&&&&&&&&&&&&&&& &change&=&$money,
&&&&&&&&&&&&&&&&&&& &ctype&=&2,
&&&&&&&&&&&&&&&&&&& &cmethod&=&3,
&&&&&&&&&&&&&&&&&&& &yue_before&=&$yue_before,
&&&&&&&&&&&&&&&&&&& &yue_after&=&$yue_after,
&&&&&&&&&&&&&&&&&&& &changetime&=&time(),
&&&&&&&&&&&&&&&&&&& &ocode&=&$ocode,
&&&&&&&&&&&&&&&&&&& &status&=&0,
&&&&&&&&&&&&&&& ];
&&&&&&&&&&&&&&& $addlog=M('log')-&add($data);
&&&&&&&&&&&&&&& $fans=M('fans');
&&&&&&&&&&&&&&& $fansdata=$fans-&where(array('uid'=&$user_id))-&find();
&&&&&&&&&&&&&&& $openid=$fansdata['openid'];
&&&&&&&&&&&&&& Wxpay::pay($ocode,$money,$openid,$notify);
&&&&&&&&&&&&&&& $this-&display('Person/anzhuo');
&&&&&&&&&&&&&&&
&&&&&&&&&&&& }
&&&&&&&&&& &
第六步:在视图目录Person里新建anzhuo.html文件,里面内容为:
&!DOCTYPE html&
&html&&head&
&meta http-equiv=&Content-Type& content=&text/ charset=UTF-8&&
&meta charset=&UTF-8&&
&meta name=&viewport& content=&width=device-width&&
&title&微信支付&/title&
&meta name=&Keywords& content=&&&
&meta name=&Description& content=&&&
&meta name=&viewport& content=&initial-scale=1.0, maximum-scale=1.0, user-scalable=0&&
&meta name=&format-detection& content=&telephone=no&/&
&script src=&__ROOT__/Application/Weixin/Public/bootstrap/js/jquery.min.js&&&/script&
&style type=&text/css&&
&& &&& &margin: 0;
&& &&& &padding: 0;
&& &&& &max-width: 640
&& &&& &padding: 10
&& &&& &background: #0072E3;
&& &&& &line-height: 3
&& &&& &font-size: 1
&& &&& &color: #
&& &&& &text-align:
&script type=&text/javascript&&
&& &//JS api 支付
&& &function jsApiCall()
&& &&& &WeixinJSBridge.invoke(
&& &&& &&& &'getBrandWCPayRequest',
&& &&& &&& &{$jsApiParameters},
&& &&& &&& &function(res){
&& &&& &&& &&& &WeixinJSBridge.log(res.err_msg);
&& &&& &&& &&& &if(res.err_msg == 'get_brand_wcpay_request:cancel') {
&& &&& &&& &&& &&& &alert(&您已取消了此次支付&);
&& &&& &&& &&& &&& &
&& &&& &&& &&& &} else if(res.err_msg == 'get_brand_wcpay_request:fail') {
alert(res.err_code);&&//如果此处弹出错误码3,则微信支付授权目录路径写的不对(极可能是最后少一个参数)
&& &&& &&& &&& &&& &alert(&支付失败&);
&& &&& &&& &&& &&& &
&& &&& &&& &&& &} else if(res.err_msg == 'get_brand_wcpay_request:ok') {
&& &&& &&& &&& &&& &//alert(&支付成功!&);
&& &&& &&& &&& &&& &location.href=&{:U('index/index')}&;
&& &&& &&& &&& &} else {
&& &&& &&& &&& &&& &alert(&未知错误&+res.error_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();
&& &setTimeout(function(){callpay()},1000);
我的热门文章在 SegmentFault,解决技术问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
一线的工程师、著名开源项目的作者们,都在这里:
获取验证码
已有账号?
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
在微信支付里通过JSAPI发起支付请求的时候,返回了fail_invalid_appid这个错误,文档上对这个错误没有说明,网上也没有找到答案。公众号已经开通了微信支付,获取prepay_id也是成功的。请问各位这个问题应该是什么原因导致的,谢谢!
来源: 微信开放平台问答
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
其实仅仅为了微信支付不需要引用jssdk,返回了fail_invalid_appid这个错误,我今天上午刚碰到,原因很简单,应该是你写的授权支付目录不全对,我的授权目录是我是用thinkphp架构开发的那么我的操作页面是但我的引用方式需要加入参数id那么实际的路径是这样问题就出现了,微信认为我的这个页面的所在目录就不是解决办法:参数形式改用“?”这样问题解决
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
不仔细看啊步骤三:通过config接口注入权限验证配置
javascriptwx.config({
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: '', // 必填,公众号的唯一标识 ##########[**在这里, 看到了没有**]
timestamp: , // 必填,生成签名的时间戳
nonceStr: '', // 必填,生成签名的随机串
signature: '',// 必填,签名,见附录1
jsApiList: [] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。&>&TP框架整合各种微信支付
TP框架整合各种微信支付
上传大小:1.09MB
微信支付整合到TP框架,配置自己的信息即可使用。
综合评分:0(0位用户评分)
所需积分/C币:
下载个数:43
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var q = $("#form1").serializeArray();
console.log(q);
var res_area_r = $.trim($(".res_area_r").val());
if (res_area_r == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
var mess = $(".res_area_r").val();
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, _username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click",'.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
$(".res_area_r").val($.trim($(".res_area").val()));
评论共有0条
审核通过送C币
8套PHP视频精选教程
创建者:love
PHP学习电子书
[资源优选]第十七期:20个热门的PHP相关源码
创建者:nigelyq
上传者其他资源上传者专辑
Think php整合支付宝
ecshop开发教程大全
ecshop供货商插件源代码开源供货商后台管理
QuickCHM工具
开发技术热门标签
VIP会员动态
下载频道用户反馈专区
下载频道积分规则调整V1710.18
开通VIP,海量IT资源任性下载
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
CSDN&VIP年卡&4000万程序员的必选
为了良好体验,不建议使用迅雷下载
TP框架整合各种微信支付
会员到期时间:
剩余下载个数:
剩余C币:593
剩余积分:0
为了良好体验,不建议使用迅雷下载
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
(仅够下载10个资源)
全站1200个资源免积分下载
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
全站600个资源免积分下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
全站1200个资源免积分下载
为了良好体验,不建议使用迅雷下载
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
TP框架整合各种微信支付}

我要回帖

更多关于 微信指纹支付xp框架 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信