微信支付相关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原生 ...
随机推荐
- MySQL的JDBC驱动源码解析
原文: MySQL的JDBC驱动源码解析 大家都知道JDBC是Java访问数据库的一套规范,具体访问数据库的细节有各个数据库厂商自己实现 Java数据库连接(JDBC)由一组用 Java 编程语言 ...
- python面向对象:类方法
类的方法包括以下几种: 构造方法 :__init__(self,) 析构方法 :__del__(self) 类方法@classmethod.实例方法.静态方法@staticmethod 一.构造方法 ...
- es6/ts for in/ for of
for in 是es6之前就有的循环下标的方式 for of 是typescript的循环对象或者数组中值的方式,但是不能循环普通的对象,需要通过和Object.keys()搭配使用,如果循环普通对象 ...
- bc https://en.wikipedia.org/wiki/Gossip_protocol
分布式容错性:分布式网络极其鲁棒,能够容忍部分节点的异常状态: 不可篡改性:一致提交后的数据会一直存在,不可被销毁或修改: 隐私保护性:密码学保证了数据隐私,即便数据泄露,也无法解析. 随之带来的业务 ...
- 查找->动态查找表->二叉排序树
文字描述 二叉排序树的定义 又称二叉查找树,英文名为Binary Sort Tree, 简称BST.它是这样一棵树:或者是一棵空树:或者是具有下列性质的二叉树:(1)若它的左子树不空,则左子树上所有结 ...
- WIN7环境变量path误删(windows找不到文件‘%windir%\systempropertiesadvanced.exe’)的解决办法
一.进入安全模式 1.通过Ctrl+R打开运行窗口,输入Msconfig 2.如上图,选择安全引导,点击确定.重启计算机进入安全模式. 二.在安全模式下,设置环境变量 1.C:\Windows\Sys ...
- SSL连接分为两个阶段:握手和数据传输阶段
一.SSL概述SSL连接分为两个阶段:握手和数据传输阶段.握手阶段对服务器进行认证并确立用于保护数据传输的加密密钥,必须在传输任何应用数据之前完成握手.一旦握手完成,数据就被分成一系列经过保护的记录进 ...
- jvm的调优
首先我们要知道jvm的调优,主要是对那些部分的优化.通过jvm内存模型我们可以,首先是分析遇到的问题,然后通过一些工具或者手段找到问题所在,然后通过一定的措施解决问题,下面我们也将按着这个思路来给出具 ...
- Docker 架构(四)
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程 API 来管理和创建 Docker 容器. Docker 容器通过 Docker 镜像来创建. 容器与镜像的关系类似于面向对象编程中的 ...
- load和initialize
load: 当类被引用进项目的时候(类文件加载到系统中)就会执行load函数(在main函数开始执行之前),与这个类是否被用到无关,每个类的load函数只会自动调用一次.由于load函数是系统自动加载 ...