微信支付相关js
import $ from "jquery" /*支付功能开始*/
let ip="";
let nonceStr;
let appId;
let mchId;
let APISecret;
let userOpenId="";
let notifyUrl="";
let wx_url = urlWay.host;
let hex_chr = "0123456789abcdefghijklmnopqrstuvwxyz";
let _this_obj = ''; export default function (obj) {
_this_obj = obj; return {
paycall : paycall
}
}
//openID
function getUserId() {
$.ajax({
url: wx_url + 'wx/getOpenId.action',
cache:false,
async:false,
data:{action:"openId"},
success:function(result) {
userOpenId=result.openId;
//alert(userOpenId + '1');
},
error: function (x) {
//alert('1'+JSON.stringify(x));
}
});
return userOpenId;
}
//获取openid结束 2015-7-18 17:06:56----------------------------------------------------------------------------------------------------- function getTimeStamp(){
let timestamp=new Date().getTime();
let timestampstring = timestamp.toString();//一定要转换字符串
return timestampstring;
}
//获取精确到毫秒的时间字符串----------------------------------------------------------------------------------------------------------------- function getNonceStr(){
let $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
let maxPos = $chars.length;
let noceStr = "";
for (let i = 0; i < 32; i++) {
noceStr += $chars.charAt(Math.floor(Math.random() * maxPos));
}
return noceStr;
}
//获取32位随机字符串------------------------------------------------------------------------------------------------------------------------- function getRemoteIp() {
let remoteIp="";
$.ajax({
url:wx_url+'wx/configManage.action', // 跳转到 action
data:{action:"getRemoteIp"},
cache:false,
async:false,
success:function(result) {
remoteIp=result.ip;
//alert(remoteIp+'2');
},
error:function(x, textStatus, errorThrown) {
//alert('2'+JSON.stringify(x));
}
});
return remoteIp;
}
//获取到ip地址----------------------------------------------------------------------------------------------------------------------------- function getAppId() {
let appId="";
$.ajax({
url:wx_url+'wx/configManage.action', // 跳转到 action
data:{action:"getProperty", propertyName:"corpIdFamilyDoctor"},
cache:false,
async:false,
success:function(result) {
appId=result.propertyValue;
//alert(appId+'3');
},
error:function(x, textStatus, errorThrown) {
//alert("3"+JSON.stringify(x));
}
});
return appId;
}
//获取到appid--------------------------------------------------------------------------------------------------------------------------------- function getMchId() {
let mchId="";
$.ajax({
url:wx_url+'wx/configManage.action', // 跳转到 action
data:{action:"getProperty", propertyName:"mchIdFamilyDoctor"},
cache:false,
async:false,
success:function(result) {
mchId=result.propertyValue;
//alert(mchId+'4'); }, error:function(x, textStatus, errorThrown) { //alert('4'+JSON.stringify(x)); } }); return mchId;}//获取到微信支付的商户号-------------------------------------------------------------------------------------------------------------------------------function getAPISecret() { let APISecret=""; $.ajax({ url:wx_url+'wx/configManage.action', // 跳转到 action data:{action:"getProperty", propertyName:"corpSecretFamilyDoctor"}, cache:false, async:false, success:function(result) { APISecret=result.propertyValue; //alert(APISecret+'5'); }, error:function(x, textStatus, errorThrown) { //alert('5'+JSON.stringify(x)); } }); return APISecret;}//获取到微信支付应用密匙---------------------------------------------------------------------------------------------------------------------------------//下面开始获取notifyUrl------------------------------------------------------------------------------------------------------------------------------function getNotifyUrl(){ $.ajax({ type:'post', url:wx_url+'wx/configManage.action', data:{action:"getProperty", propertyName:"notify_url"}, cache:false, async:false, success:function(result){ notifyUrl=result.propertyValue; //alert(notifyUrl+'6'); }, error: function (x) { //alert('6'+JSON.stringify(x)); } }); return notifyUrl;}//调用微信支付-----------------------------------------------------------------------------------------------------------------------------------------function paycall(orderDesc, orderNum, orderAmount) { userOpenId=getUserId(); ip=getRemoteIp(); nonceStr=getNonceStr(); appId = getAppId(); mchId = getMchId(); APISecret = getAPISecret(); if (typeof WeixinJSBridge == "undefined"){ if( document.addEventListener ){ document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false); }else if (document.attachEvent){ document.attachEvent('WeixinJSBridgeReady', onBridgeReady); document.attachEvent('onWeixinJSBridgeReady', onBridgeReady); } }else{ onBridgeReady(orderDesc, orderNum, orderAmount); }}function onBridgeReady(orderDesc, orderNum, orderAmount){ let prepId = getPrePayId(orderDesc,orderNum,orderAmount); let timeStr = getTimeStamp(); let nonStr = getNonceStr(); let signStringforPay="appId="+appId+"&nonceStr="+nonStr+"&package=prepay_id="+prepId+"&signType=MD5&timeStamp="+timeStr+"&key="+APISecret; signStringforPay=MD5(signStringforPay); signStringforPay=signStringforPay.toUpperCase(); appId=appId+""; timeStr=timeStr+""; nonStr=nonStr+""; signStringforPay=signStringforPay+""; // alert(signStringforPay); WeixinJSBridge.invoke( 'getBrandWCPayRequest', { "appId":appId, //公众号名称,由商户传入 "timeStamp":timeStr, //时间戳,自1970年以来的秒数 "nonceStr":nonStr, //随机串 "package":"prepay_id=" + prepId, "signType":"MD5", //微信签名方式: "paySign":signStringforPay //微信签名 }, function(res){ _this_obj.whetherToPay(res); } );}function getPrePayId(orderDesc,orderNum,orderAmount) { let prepayId=""; let orderNumCopy=orderNum; notifyUrl=getNotifyUrl(); let signString="appid="+ appId +"&body="+orderDesc+"&mch_id=" + mchId + "&nonce_str="+nonceStr+"¬ify_url="+notifyUrl+"&openid="+userOpenId+"&out_trade_no="+orderNumCopy+"&spbill_create_ip="+ip+"&total_fee="+orderAmount+"&trade_type=JSAPI&key="+APISecret; // alert("signString=="+signString);//测试 signString=MD5(signString); signString=signString.toUpperCase(); //alert(signString); $.ajax({ url:wx_url+'wx/getPrepayId.action', // 跳转到 action data:{action:"getPrepayId",mchId:mchId,tradeNo:orderNum,remoteIp:ip,nonceStr:nonceStr,signStr:signString,userOpenId:userOpenId,body:orderDesc,totalFee:orderAmount}, cache:false, async:false, success:function(result) { let resultXml=result.result; prepayId= resultXml.substring(resultXml.indexOf("<prepay_id>")+20,resultXml.indexOf("</prepay_id>")-3); //alert('1'+JSON.stringify(result)); //alert('2'+JSON.stringify(prepayId)); }, error:function(XMLHttpRequest, textStatus, errorThrown) { //alert('7'+JSON.stringify(XMLHttpRequest)); } }); return prepayId;}//加密function rhex(num) { let str = ""; for (let j = 0; j <= 3; j++) { str += hex_chr.charAt((num >> (j * 8 + 4)) & 15) + hex_chr.charAt((num >> (j * 8)) & 15); } return str;}function str2blks_MD5(str) { let nblk = ((str.length + 8) >> 6) + 1; let blks = new Array(nblk * 16); for (let i = 0; i < nblk * 16; i++) { blks[i] = 0; } let j; for (j = 0; j < str.length; j++) { blks[j >> 2] |= str.charCodeAt(j) << ((j % 4) * 8); } blks[j >> 2] |= 128 << ((j % 4) * 8); blks[nblk * 16 - 2] = str.length * 8; return blks;}function add(x, y) { let lsw = (x & 65535) + (y & 65535); let msw = (x >> 16) + (y >> 16) + (lsw >> 16); return (msw << 16) | (lsw & 65535);}function rol(num, cnt) { return (num << cnt) | (num >>> (32 - cnt));}function cmn(q, a, b, x, s, t) { return add(rol(add(add(a, q), add(x, t)), s), b);}function ff(a, b, c, d, x, s, t) { return cmn((b & c) | ((~b) & d), a, b, x, s, t);}function gg(a, b, c, d, x, s, t) { return cmn((b & d) | (c & (~d)), a, b, x, s, t);}function hh(a, b, c, d, x, s, t) { return cmn(b ^ c ^ d, a, b, x, s, t);}function ii(a, b, c, d, x, s, t) { return cmn(c ^ (b | (~d)), a, b, x, s, t);}function MD5(str) { let x = str2blks_MD5(str); let a = 1732584193; let b = -271733879; let c = -1732584194; let d = 271733878; for (let i = 0; i < x.length; i += 16) { let olda = a; let oldb = b; let oldc = c; let oldd = d; a = ff(a, b, c, d, x[i + 0], 7, -680876936); d = ff(d, a, b, c, x[i + 1], 12, -389564586); c = ff(c, d, a, b, x[i + 2], 17, 606105819); b = ff(b, c, d, a, x[i + 3], 22, -1044525330); a = ff(a, b, c, d, x[i + 4], 7, -176418897); d = ff(d, a, b, c, x[i + 5], 12, 1200080426); c = ff(c, d, a, b, x[i + 6], 17, -1473231341); b = ff(b, c, d, a, x[i + 7], 22, -45705983); a = ff(a, b, c, d, x[i + 8], 7, 1770035416); d = ff(d, a, b, c, x[i + 9], 12, -1958414417); c = ff(c, d, a, b, x[i + 10], 17, -42063); b = ff(b, c, d, a, x[i + 11], 22, -1990404162); a = ff(a, b, c, d, x[i + 12], 7, 1804603682); d = ff(d, a, b, c, x[i + 13], 12, -40341101); c = ff(c, d, a, b, x[i + 14], 17, -1502002290); b = ff(b, c, d, a, x[i + 15], 22, 1236535329); a = gg(a, b, c, d, x[i + 1], 5, -165796510); d = gg(d, a, b, c, x[i + 6], 9, -1069501632); c = gg(c, d, a, b, x[i + 11], 14, 643717713); b = gg(b, c, d, a, x[i + 0], 20, -373897302); a = gg(a, b, c, d, x[i + 5], 5, -701558691); d = gg(d, a, b, c, x[i + 10], 9, 38016083); c = gg(c, d, a, b, x[i + 15], 14, -660478335); b = gg(b, c, d, a, x[i + 4], 20, -405537848); a = gg(a, b, c, d, x[i + 9], 5, 568446438); d = gg(d, a, b, c, x[i + 14], 9, -1019803690); c = gg(c, d, a, b, x[i + 3], 14, -187363961); b = gg(b, c, d, a, x[i + 8], 20, 1163531501); a = gg(a, b, c, d, x[i + 13], 5, -1444681467); d = gg(d, a, b, c, x[i + 2], 9, -51403784); c = gg(c, d, a, b, x[i + 7], 14, 1735328473); b = gg(b, c, d, a, x[i + 12], 20, -1926607734); a = hh(a, b, c, d, x[i + 5], 4, -378558); d = hh(d, a, b, c, x[i + 8], 11, -2022574463); c = hh(c, d, a, b, x[i + 11], 16, 1839030562); b = hh(b, c, d, a, x[i + 14], 23, -35309556); a = hh(a, b, c, d, x[i + 1], 4, -1530992060); d = hh(d, a, b, c, x[i + 4], 11, 1272893353); c = hh(c, d, a, b, x[i + 7], 16, -155497632); b = hh(b, c, d, a, x[i + 10], 23, -1094730640); a = hh(a, b, c, d, x[i + 13], 4, 681279174); d = hh(d, a, b, c, x[i + 0], 11, -358537222); c = hh(c, d, a, b, x[i + 3], 16, -722521979); b = hh(b, c, d, a, x[i + 6], 23, 76029189); a = hh(a, b, c, d, x[i + 9], 4, -640364487); d = hh(d, a, b, c, x[i + 12], 11, -421815835); c = hh(c, d, a, b, x[i + 15], 16, 530742520); b = hh(b, c, d, a, x[i + 2], 23, -995338651); a = ii(a, b, c, d, x[i + 0], 6, -198630844); d = ii(d, a, b, c, x[i + 7], 10, 1126891415); c = ii(c, d, a, b, x[i + 14], 15, -1416354905); b = ii(b, c, d, a, x[i + 5], 21, -57434055); a = ii(a, b, c, d, x[i + 12], 6, 1700485571); d = ii(d, a, b, c, x[i + 3], 10, -1894986606); c = ii(c, d, a, b, x[i + 10], 15, -1051523); b = ii(b, c, d, a, x[i + 1], 21, -2054922799); a = ii(a, b, c, d, x[i + 8], 6, 1873313359); d = ii(d, a, b, c, x[i + 15], 10, -30611744); c = ii(c, d, a, b, x[i + 6], 15, -1560198380); b = ii(b, c, d, a, x[i + 13], 21, 1309151649); a = ii(a, b, c, d, x[i + 4], 6, -145523070); d = ii(d, a, b, c, x[i + 11], 10, -1120210379); c = ii(c, d, a, b, x[i + 2], 15, 718787259); b = ii(b, c, d, a, x[i + 9], 21, -343485551); a = add(a, olda); b = add(b, oldb); c = add(c, oldc); d = add(d, oldd); } return rhex(a) + rhex(b) + rhex(c) + rhex(d);}
微信支付相关js的更多相关文章
- .NET接入微信支付(一)JS API接入 V3
前段时间刚接完银联支付,完事后又接了微信支付,前段时间一直急着上线,微信的接入一直没有时间处理,今天我们就来整理一下微信支付的接入方法和要点. 配置: 首先呢微信支付需要通过审核,审核啥的准备工作我就 ...
- 微信支付相关,如何获取API证书
参考腾讯官方文档: http://kf.qq.com/faq/161222NneAJf161222U7fARv.html?pass_ticket=4K97qCCjgTaO4WwN1x%2BCdKEqL ...
- 微信JS支付代码_前端调用微信支付接口
转自:http://dditblog.com/itshare_553.html 跟大家分享一段微信支付的js代码片段.V3版的微信支付没有paySignKey参数.基本上是直接复制就可以使用了.改一改 ...
- 微信支付JS API使用心得
微信的接口真的很坑爹,只返回成功或失败,从来不会告诉你为什么失败.这个微信支付的js接口也是调了一个下午才成功,期间踩了不少坑,在这里总结一下,而且把支付接口封装成了一个js文件,这样以后调用就很方便 ...
- PHP微信支付开发实例
这篇文章主要为大家详细介绍了PHP微信支付开发过程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 PHP微信支付开发过程,分享给大家,供大家参考,具体内容如下 1.开发环境 Thinkphp 3. ...
- 微信支付开发-Senparc.Weixin.MP详解
年底了,反而工作更忙了,我从15年11月开始写<1024伐木累>系列小说和爆笑对白,得到了很多身边的技术好友的支持,现在爆笑对白已经有越来越多的朋友一起帮着写段子,整理,包括小说内容的编辑 ...
- 微信支付开发(1) 微信支付URL配置
由于微信支付接口更新,本文档已过期,请查看新版微信支付教程.地址 http://www.cnblogs.com/txw1958/category/624506.html 本文介绍微信支付申请时如何设置 ...
- C#微信支付
回归主题,16年1月初我对微信开发比较好奇,由于自己是一个比较喜欢钱的人,所以对支付功能颇为冲动,就用公司信息在微信平台申请了一个服务号,还给腾讯打赏了300大洋做了下认证,抽空看了下微信支付官方的文 ...
- 微信支付v2开发(1) 微信支付URL配置
本文介绍微信支付申请时如何设置授权目录及URL. 在申请微信支付时,第一项就会碰到下图的配置. 下面就对这一设置进行讲解! 一.选择支付类型 目前有两种支付类型 JS API网页支付 Native原生 ...
随机推荐
- echarts tooltip 自定义提示信息添加圆点
tooltip自定义时,给文字前加圆点 tooltip: { formatter: '{b}<br /><span style="display:inline-block; ...
- ujquery.fancybox api开发文档中文翻译版
2016年11月17日11:57:14 基础使用 http://fancybox.net/howto 1. 首先,请确保您使用的是有效的DOCTYPE这是FancyBox看起来和功能正确需要. 2. ...
- 泡泡一分钟:Exploiting Points and Lines in Regression Forests for RGB-D Camera Relocalization
Exploiting Points and Lines in Regression Forests for RGB-D Camera Relocalization 利用回归森林中的点和线进行RGB-D ...
- 关于tomcat服务器
如果遇到jsp代码反复运行不成功,并且不报错 而且代码也重复检查过,正确无误了 那么 就不要把精力放在代码上了 有可能是服务器的问题 重启下服务器试试 ……不要问我尽经历过什么
- SMB服务简介
1.Samba简介 Samba是种自由软件,用来让UNIX系列的操作系统与微软Windows操作系统的SMB/CIFS(Server Message Block/Common Internet F ...
- ubuntu下pig报错ERROR 2999: Unexpected internal error. Failed to create DataStorage的解决
2019-03-04 00:10:03,998 [main] ERROR org.apache.pig.Main - ERROR 2999: Unexpected internal error. Fa ...
- shell之使用cut切割文本文件
我们知道可以通过工具grep或egrep按行筛选记录,这里我们可以通过cut工具对文本按列进行切分,它可以指定定界符,linux下制表符是默认的定界符. #cut -f 2,3 textfile 这个 ...
- cocos2dx 粒子系统
参考文献: 1.http://blog.csdn.net/aa4790139/article/details/8126525 2.https://code.google.com/p/cocos2d-w ...
- JQPRINT-不错的jquery打印插件
1.首先引用Jquery和jqprint-0.3.js(依赖于Jquery的) <script language="javascript" src="jquery- ...
- 【Python全栈-jQuery】jQuery基础知识
前端学习之jQuery 一. jQuery是什么? <1> jQuery由美国人John Resig创建,至今已吸引了来自世界各地的众多 javascript高手加入其team. < ...