• h5页面调起微信支付


    //先判断是否支持所需接口

    //声明所需变量

    var timestamp;
    var appId;
    var signature;
    var nonceStr;
    var url = location.href;

    //发送ajax


    $.ajax({
    type: "get",
    url: "/public/vipreg/js/jssdk.php",
    data: {
    url: url
    },
    dataType: "jsonp",
    jsonp: "callback",
    jsonpCallback: "success_jsonpCallback",
    success: function(data) {
    timestamp = data.timestamp;
    appId = data.appId;
    signature = data.signature;
    nonceStr = data.nonceStr;
    wx.config({
    debug: false,
    appId: data.appId,
    timestamp: data.timestamp,
    nonceStr: data.nonceStr,
    signature: data.signature,
    jsApiList: [
    'checkJsApi',
    'onMenuShareTimeline',
    'onMenuShareAppMessage',
    'onMenuShareQQ',
    'onMenuShareWeibo',
    'hideMenuItems',
    'showMenuItems',
    'hideAllNonBaseMenuItem',
    'showAllNonBaseMenuItem',
    'translateVoice',
    'startRecord',
    'stopRecord',
    'onRecordEnd',
    'playVoice',
    'pauseVoice',
    'stopVoice',
    'uploadVoice',
    'downloadVoice',
    'chooseImage',
    'previewImage',
    'uploadImage',
    'downloadImage',
    'getNetworkType',
    'openLocation',
    'getLocation',
    'hideOptionMenu',
    'showOptionMenu',
    'closeWindow',
    'scanQRCode',
    'chooseWXPay',
    'openProductSpecificView',
    'addCard',
    'chooseCard',
    'openCard'
    ]
    });

    },
    error: function(data) {
    console.log(data)
    }

    });

    wx.ready(function() {

    // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
    });

    wx.error(function(res) {
    // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
    });

    //点击按钮调起支付

    $('.pay_btn').click(function() {

    var newopenid = getCookie('openid');

    $.ajax({

    url: "/user/chongzhi",

    data: {

    uid: params.uid,
    token: params.token,
    type: 4,
    money_type: 1,
    price: '398',
    openid: newopenid,
    tradetype: 'JSAPI'

    },

    dataType: "JSON",

    type: "post",

    success: function(data) {

    timestamp = data.jsapi.timeStamp;

    nonceStr = data.jsapi.nonceStr;

    package = data.jsapi.package;

    paySign = data.jsapi.paySign;

    wx.chooseWXPay({

    appId: appId,

    timestamp: timestamp, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符

    nonceStr: nonceStr, // 支付签名随机串,不长于 32 位

    package: package, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***)

    signType: 'MD5', // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'

    paySign: paySign, // 支付签名

    success: function(res) {
    //成功后的回调,一般支付成功后,都需要给后台发送收货人,支付金额等信息

    var addid=getCookie('addid');

    $.ajax({

    url: "/ZeroBuy/userOrderPay",

    data: {

    uid:params.uid,
    address_id:addid,
    token:params.token

    },

    dataType: "JSON",

    type: "post",

    success: function(data) {

    },

    error: function(data) {


    }

    });

    $('.chenggong').removeClass('cgnone');
    $('.chenggong').addClass('cgblock');

    }
    });

    },
    error: function(data) {

    }

    });

    })

    总结:其实逻辑并不难,但是需要传的数据很多,其中大多数都是后台生成传给前端再传回去,上面的代码复制粘贴改一改接口和命名基本就能用了

  • 相关阅读:
    C 标准库
    C 标准库
    C 标准库
    C 标准库
    Chrome内核保存为mhtml(单网页)
    C 标准库
    C 标准库
    【转】AOP
    [转]控制反转与依赖注入模式
    [转]乐观锁、悲观锁、死锁的区别
  • 原文地址:https://www.cnblogs.com/ydam/p/9209325.html
Copyright © 2020-2023  润新知