微信JSSDK支付
var appId,timeStamp,nonceStr,package,signType,paySign;
function goumai(){
$.confirm({
title: '确认购买',
text: '<div class="comfirm-tip">确认购买?</div>',
onOK: function () {
$('#rechargeHalf').removeClass('weui-popup__container--visible');
$('#rechargeHalf').hide();
var price = ($("#monid").text() * 100).toFixed(0);
mui.ajax(wxshop.serverUrl+"/wxUserCenter/gotozhifu",{
type:'post',
data:{
code:wxshop.getUrlParam("code"),
price:price,
},
dataType:'json',
success:function(data){
if(data.ret == 1){
appId=data.payMap.appId;
timeStamp=data.payMap.timeStamp;
nonceStr=data.payMap.nonceStr;
package=data.payMap.package;
signType=data.payMap.signType;
paySign=data.payMap.paySign;
callpay();
}
if(data.ret == 2){
wxshop.getOpenId(data.appid);
return;
}
if(data.ret == 0){
alert(data.msg);
}
}
});
},
onCancel: function () {
$('#rechargeHalf').removeClass('weui-popup__container--visible');
$('#rechargeHalf').hide();
}
});
function callpay(){
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();
}
}
function onBridgeReady(){
WeixinJSBridge.invoke( 'getBrandWCPayRequest', {
"appId":appId, //公众号名称,由商户传入
"timeStamp":timeStamp, //时间戳,自1970年以来的秒数
"nonceStr":nonceStr, //随机串
"package":package,
"signType":signType, //微信签名方式:
"paySign":paySign //微信签名
},
function(res){
if(res.err_msg == "get_brand_wcpay_request:ok" ) {
console.log('支付成功');
}else if(res.err_msg == "get_brand_wcpay_request:cancel"){
console.log('支付取消');
}else if(res.err_msg == "get_brand_wcpay_request:fail"){
console.log('支付失败');
WeixinJSBridge.call('closeWindow');
}
});
}
}
public class PayUtil {
/**
* 微信jssdk支付
* @param request
* @param response
* @param fee
* @return
*/
public static Map pay(HttpServletRequest request, HttpServletResponse response, String fee) {
Map preData = new HashMap();
Map<String, String> payMap = new HashMap<String, String>();
try {
String openid = null;
WsMember member = WsUtils.getMember(request, response);
if (member != null) {
openid = member.getOpenId();
}
WxAccount account = WsUtils.getAccount();
preData.put("appid", account.getAccountAppid());
preData.put("mch_id", account.getMchId());
preData.put("nonce_str", WXPayUtil.generateNonceStr());
String body = utf8Utils.toUTF8("微信支付");
preData.put("body", body);
Random random = new Random();
String out_trade_no = "";
for (int i = 0; i < 30; i++) {
out_trade_no += random.nextInt(10);
}
// preData.put("out_trade_no", WXPayUtil.generateNonceStr());
preData.put("total_fee", fee);
preData.put("spbill_create_ip", request.getLocalAddr());
preData.put("notify_url", "xxx.com/bpphone/index.html");
preData.put("openid", openid);
preData.put("trade_type", "JSAPI");
String sign = WXPayUtil.generateSignature(preData, account.getPayKey());
preData.put("sign", sign);
String xml = WXPayUtil.mapToXml(preData);
String unifiedorder_url = "https://api.mch.weixin.qq.com/pay/unifiedorder";
String xmlStr = httpUtils.post(unifiedorder_url, xml);
System.out.println("xmlStr============="+xmlStr);
String prepay_id = "";
if (xmlStr.indexOf("SUCCESS") != -1) {
Map<String, String> map = WXPayUtil.xmlToMap(xmlStr);
prepay_id = (String) map.get("prepay_id");
}
payMap.put("appId", account.getAccountAppid());
payMap.put("timeStamp", WXPayUtil.getCurrentTimestamp() + "");
payMap.put("nonceStr", WXPayUtil.generateNonceStr());
payMap.put("package", "prepay_id=" + prepay_id);
payMap.put("signType", "MD5");
String paySign = WXPayUtil.generateSignature(payMap, account.getPayKey());
payMap.put("paySign", paySign);
} catch (Exception e) {
payMap.put("ret", InterConstant.RET_WX);
payMap.put("appid", WsUtils.getAccount().getAccountAppid());
e.printStackTrace();
}
return payMap;
}
}
}
微信JSSDK支付的更多相关文章
- 微信JSSDK支付接口-安卓机无法正常调起接口
今天碰到个问题,是项目调起微信支付接口,苹果机都没有什么问题,但是安卓机的情况就是支付接口出现一下就消失了 试了将error反馈信息弹出来,也就是显示choosewxpay fail 找了半天不知道什 ...
- 微信jssdk支付坑
1.使用easywechat开发的时候,由于没有注意,配置文件中默认的请求地址是 https://api.weixin.qq.com/结果调试了半天,一直报错“40066” 这也是怪自己粗心,结果去分 ...
- C#开发微信门户及应用(39)--使用微信JSSDK实现签到的功能
随着微信开逐步开放更多JSSDK的接口,我们可以利用自定义网页的方式来调用更多微信的接口,实现我们更加丰富的界面功能和效果,例如我们可以在页面中调用各种手机的硬件来获取信息,如摄像头拍照,GPS信息. ...
- 微信JS-SDK坐标位置转换为百度地图坐标
微信JS-SDK开发过程中,使用getLocation获取坐标位置,如何将微信获取的坐标直接应用到百度地图中,显示以下效果: 说明:红色图标是从微信转换过来的位置,蓝色图标是周边位置.首先从微信开发流 ...
- 前端工程师如何快速的开发一个微信JSSDK应用
亲们,订阅号出来已经很久了,作为一个前端工程师或者全栈工程师,你是不是错过了什么?大概许多攻城狮同砚还没有反应过来订阅号怎么回事,就马上要被微信的应用号秀一脸了.在应用号还没有正式出来之前,我们赶紧一 ...
- 微信公众平台开发 微信JSSDK开发
根据微信开发文档步骤如下: 1.先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”. JS接口安全域名设置 mi.com(前面不用带www/http,域名必须备案过) 2.引 ...
- 微信JS-SDK
<div class="lbox_close wxapi_form"> <h3 id="menu-basic">基础接口</h3& ...
- 微信公开课发布微信官方教程:教你用好微信JS-SDK接口
微信公众平台开放JS-SDK(微信内网页开发工具包),说明文档已经有相关使用方法和示例了,很多同学觉得不是很直观,为此微信公开课发布微信官方教程:教你用好微信JS-SDK接口. 1.分享类接口:支持获 ...
- 官方教程:教你用好微信JS-SDK接口
微信开放JS-SDK接口,开发者和行业用户可谓是欢欣鼓舞.奔走相告,目测将激起一大波第三方开发商的创新产品!真真是H5开发者的利好!但也有用户表示,还不了解JS-SDK接口到底是啥,究竟怎么用.现在, ...
随机推荐
- 第一个Spring程序(DI的实现)
一,依赖注入:Dependency Injection(DI)与控制反转(IoC),不同角度但是同一个概念.首先我们理解一点在传统方式中我们使用new的方式来创建一个对象,这会造成对象与被实例化的对象 ...
- mybatis返回list很智能很简答的,只需要配置resultmap进行类型转换,你dao方法直接写返回值list<对应的object>就行了啊
mybatis返回list很智能很简答的,只需要配置resultmap进行类型转换,你dao方法直接写返回值list<对应的object>就行了啊 dao方法 public List< ...
- "Simple Factory" vs "Factory Method" vs "Abstract Factory" vs "Reflect"
ref: http://www.cnblogs.com/zhangchenliang/p/3700820.html 1. "Simple Factory" package torv ...
- Python标准库:内置函数tuple([iterable])
本函数实现从可迭代对象生成一个元组对象返回.元组对象是一个不可改动的列表对象. 样例: #tuple() print(tuple([1, 2, 3])) print(tuple((1, 2, 3))) ...
- Centos系统备份
使用root用户切换到根目录 然后,使用下面的命令备份完整的系统: tar cvpzf backup.tgz / --exclude=/proc --exclude=/lost+found --exc ...
- 关于Windows 8使用WMP播放音乐时WUDFHost跑CPU和硬盘的问题解决
Windows 8使用Windows Media Player播放音乐的时候.事实上有一个这种情况,WMP和某个什么名字看起来非常屌的进程跑CPU非常高,这个跑非常高视你插入的SD卡内的文件数或者移动 ...
- 通讯编程入门--WEBSOCKET
C#通讯编程入门--WEBSOCKET WebSocket服务端 C#示例代码 using System; using System.Collections.Generic; using System ...
- Linux Shell參数扩展(Parameter Expansion)
本文主要參考:http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_02 其它资料:ht ...
- POJ 1159 Palindrome(字符串变回文:LCS)
POJ 1159 Palindrome(字符串变回文:LCS) id=1159">http://poj.org/problem? id=1159 题意: 给你一个字符串, 问你做少须要 ...
- Linux 编译C++ 与 设置 Vim
1. Linux 下编译c++ vim test.cpp // 创建文件 g++ test.cpp // 编译文件 ./a.out // 执行文件 g++ test.cpp ...