angularjs 微信授权登录 微信支付
最近做一个项目,用angular 一个单页应用,打算打包成 跨平台移动App 以及在微信里面使用。给大家一个案例
首先,熟悉一下微信授权部分的源代码,如下所示:
javascript 前端代码;
var app = angular.module("myApp", []);
app.controller('myCtrl', ['$scope', '$location', '$http', function($scope, $location, $http) {
//调取获取ping++支付凭证接口
$scope.userid = userid;
$scope.orderNum = $location.search().orderNum;
$scope.orderId = $location.search().orderId;
$scope.openid = $location.search().openid;
//订单详情
$scope.url = url + '';
$http({
method: 'GET',
url: $scope.url,
params: {
'userid': userid,
'orderId': $scope.orderId,
'orderNum': $scope.orderNum
}
}).success(function(result) {
if(result.status == 200) {
$scope.orderInfo = result.data.orderInfo;
}
});
$scope.slectPayType = function(paymentType, orderId, orderNum, userid) {
$scope.url = url + '';
window.location.href = $scope.url + "?orderId=" + orderId + "&orderNum=" + orderNum + "&userid=" + userid;
}
console.log($scope.userid)
console.log($scope.orderNum)
console.log($scope.orderId)
console.log($scope.openid)
if($scope.openid != undefined || $scope.openid) {
$scope.paytype = 'wx_pub';
$scope.url = url + '';
$http({
method: 'GET',
url: $scope.url,
params: {
'userid': userid,
'orderNum': $scope.orderNum,
'orderid': $scope.orderId,
'openid': $scope.openid,
'channel': $scope.paytype
}
}).success(function(result) {
if(result.status == 200) {
$scope.charge = result.data;
pingpp.createPayment($scope.charge, function(result, error) {
if(result == "success") {
showMsg("支付成功");
// 只有微信公众账号 wx_pub 支付成功的结果会在这里返回,其他的支付结果都会跳转到 extra 中对应的 URL。
} else if(result == "fail") {
showMsg("支付失败");
// charge 不正确或者微信公众账号支付失败时会在此处返回
} else if(result == "cancel") {
// 微信公众账号支付取消支付
showMsg("已取消支付");
}
});
}
});
}
}]);
页面部分;
<li ng-click="slectPayType('wx_pub',orderInfo.id, orderInfo.orderid,userid)"><i class="weixin"></i><span>微信</span></li>
<li ng-click="slectPayType('alipay_wap', orderInfo.id, orderInfo.orderid,userid)"><i class="alipay"></i><span>支付宝</span></li>
我在做微信支付的过程中出现了一个比较麻烦的问题,耗费了我半天的时间才解决的,就是在支付过程中回调通知地址的URL不规则,导致虽然支付成功了,但获取不到订单信息以及对订单信息的处理。微信支付要求回调通知URL必须不能带参数,如:“https://你的域名/index.php/home/WxJsAPI/notify/”。因为我用的是Thinkphp的路由模式3,此路由带了参数,如:“https://你的域名/index.php?s=/home”。(凡是URL里带有“?”的,都算是带了参数)
当然,如果你是第一次做,肯定会遇到各种问题,如果你是新手,遇到的问题都不知道为什么,即使你做过了再做我相信还是可能由于细节上的疏忽会出现问题的,不过不要烦躁,耐心的去发现问题,耐心的去调试,最后一定可以解决的。
angularjs 微信授权登录 微信支付的更多相关文章
- 微信授权登录-微信公众号和PC端网站
https://blog.csdn.net/qq_34664239/article/details/79107529 一.微信公众号授权登录——微信公众平台 微信授权登录,并调用后台接口,获取用户信息 ...
- [转] Android:微信授权登录与微信分享全解析
https://wohugb.gitbooks.io/wechat/content/qrconnent/refresh_token.html http://blog.csdn.net/xiong_it ...
- 微信公众平台开发——微信授权登录(OAuth2.0)
1.OAuth2.0简介 OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. 允许用户 ...
- 微信授权登录(PHP)
微信授权登录(PHP) 微信授权 OAuth2.0授权 微信网页授权 主要是在项目中遇到网页授权登录这个需求,就对此做些总结记录. OAuth2.0授权 OAuth是一个开放协议,允许用户让第三方应用 ...
- 【第二十一篇】手C# MVC 微信授权登录 OAuth2.0授权登录
首先一定要熟读,最起码过一遍微信开发者文档 微信开发者文档 文档写的很清楚 授权登录四步走 在正文开始前,我得讲清楚一个事情 敲黑板,划重点:微信一共有两个 access_token 一个是7200就 ...
- .net core identity集成微信授权登录
最快的方式是直接nuget安装AspNetCore.Authentication.WeChat包. 想要知道是如何实现的,可以看下面github上面的源码. 源码在这里:https://github. ...
- 微信授权登录mock(在没有真实微信账号的情况下测试大量微信账户授权登录的情况)
场景介绍 对于构建在微信公众号的系统,帐号体系往往使用微信授权登录(如各类微信商城应用系统). 这样操作不仅可以实现静默注册,对用户几乎是无感的,同时也达到了区分用户,获取用户基本信息(头像,昵称等) ...
- wap2app(五)-- 微信授权登录以及踩过的坑
应用场景是:用Hbuilder打包app,在app中点击微信授权登录或者某一操作,调起微信授权登录,用户授权后拿到用户信息. 一.登录插件配置 先配置微信登录参数 appid和appsecret,在m ...
- VUE开发SPA之微信授权登录
SPA单页应用中微信授权登录的一点思路 单页应用应该如何解决微信授权登录的尴尬跳转?后退无法返回?主要遇到的问题就是 先进入单页应用,一边渲染页面一边判断用户有没有登录,当判断到没有登录时异步数据请求 ...
随机推荐
- 用live()方法给新增节点绑定事件
jQuery 给所有匹配的元素附加一个事件处理函数,即使这个元素是以后再添加进来的也有效. 这个方法是基本是的 .bind() 方法的一个变体.使用 .bind() 时,选择器匹配的元素会附加一个事件 ...
- iOS中产生随机数的方法
利用arc4random_uniform()产生随机数 Objective-C 中有个arc4random()函数用来生成随机数且不需要种子,但是这个函数生成的随机数范围比较大,需要用取模的算法对随机 ...
- HDU5533(水不水?)
Dancing Stars on Me Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Ot ...
- 会话技术: Cookie 和 Session
会话技术 会话技术:从浏览器开始访问服务器,到关闭浏览器,这期间发生了许多次请求和响应,这个过程就叫做一次会话. Cookie 和 Session 都是处理会话技术的两种具体实现,Cookie将数据保 ...
- Caused by: java.io.IOException: Filesystem closed的处理
org.apache.hadoop.hive.ql.metadata.HiveException: Unable to rename output from: hdfs://nameservice/u ...
- java中String字符串的替换函数:replace与replaceAll的区别
例如有如下x的字符串 String x = "[kllkklk\\kk\\kllkk]";要将里面的“kk”替换为++,可以使用两种方法得到相同的结果 replace(CharSe ...
- [LeetCode] 4. Median of Two Sorted Arrays ☆☆☆☆☆
There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the two ...
- 【C++对象模型】第四章 Function 语意学
1.Member的各种调用方式 1.1 Nonstatic Member Functions 实际上编译器是将member function被内化为nonmember的形式,经过下面转化步骤: 1.给 ...
- pythonweb框架
https://www.cnblogs.com/sss4/p/8097653.html
- 【转】Android - Binder机制
以下几篇文章是分析binder机制里讲得还算清楚的 目录 1. Android - Binder机制 - ServiceManager 2. Android - Binder机制 - 普通servic ...