微信小程序支付-非常详细

首先在我们提交订单的时候,先创建订单

//提交订单
    submitOrder() {
        // console.log(this.data.goodsid);
        if(!this.data.hasDefaultAddress){
            wx.showToast({
              title: '请您先设置地址',
              icon:"error"
            })
        }else{
            //调取创建订单方法
            this.createOrder();
            this.setData({
                //支付弹出层
                playshow: true
            })
        }
        
    },

生成订单

//生成订单,注意这里有直播,根据需求看需要传什么参数来创建订单
    createOrder() {
        var that = this;
        let usercode = wx.getStorageSync('');//用户code
        let zhiId = wx.getStorageSync('LiveID');
        // console.log(zhiId);
        let goodid = that.data.goodsid; //商品id
        let sukid = that.data.skuid; //规格skuid
        let goodnum = that.data.nums //商品数量
        let ptOrderCode = that.data.ptOrderCode; //收获id
        let Remark = ''; //签名
        let ZbjCode = zhiId; //直播佳丽id
        let jialiid = that.data.jialiid
        console.log(jialiid);
        //如果收货地址为空
        if (ptOrderCode == '') {
            wx.showToast({
                title: '请选择收货地址',
                icon: 'none',
            })
            return false;
        }
        let data = {
            UsersCode: usercode,
            GoodsIds: goodid,
            Nums: goodnum,
            ReceiptId: ptOrderCode,
            ParaIds: sukid,
            Remark: Remark,
            ZbjCode: ZbjCode,
            JialiId:jialiid
        }
        console.log(data);
        “http请求”(data).then(res => {
            console.log(res);
            if (res.data.code == 1) {
                //订单号
                let orderCode = res.data.OrderCode;
                this.setData({
                    palyorder: orderCode
                })
            } else {
                wx.showToast({
                    title: res.message,
                    icon: 'none',
                })
            }
        }, function (res) {
            wx.showToast({
                title: '加载数据失败',
                icon: 'none',
            })
        })
    },

获取code,也就是微信给我们返回的一个标识

  //获取code
    getcode() {
        let that = this
        wx.login({
            success: function (res) {
                console.log(res)
                if (res.code) {
                    that.setData({
                        code: res.code
                    })
                    // 获取code成功后 获取OpenId,AccessToken
                    that.getOpenid();
                } else {
                    // console.log('获取用户登录态失败!' + res.errMsg)
                    wx.showToast({
                        title: '获取用户登录态失败!',
                        icon: 'none',
                    })
                }
            }
        });
    },

然后我们拿着code来,获取OpenID

  //获取openid
    getOpenid() {
        let that = this
        //获取openid接口
        let codesss = {
            code: this.data.code
        }
        // console.log(that);
        "http请求"(codesss).then((res) => {
            console.log(res);
            /*   console.log(res.data.openid);
              console.log(res.data.session_key); */
            if (res.data.code == 1) {
                that.setData({
                    //获取到openid
                    openid: res.data.openid
                })
                //调取微信预支付
                // console.log(that);
                that.wxPayment();
            } else {
                wx.showToast({
                    title: res.message,
                    icon: 'none',
                })
            }
        })
    },

然后吊起微信支付wx.requestPayment

 //获取微信支付
    wxPayment() {
        let that = this;
        let body = "购买商品" //根据需求传递参数
        let openid = this.data.openid;
        let payMoney = this.data.payMoney; //商品价格
        let order = this.data.palyorder //商品订单
        let datas = {
            OpenId: openid,
            total_fee: payMoney,
            body: body,
            out_trade_no: order
        }
        “发送http请求”(datas).then((res) => {
            // console.log("222:" + res.data.result);
            if (res.data.result == 0) {
                console.log(res);
                // console.log("111:" + res.data.noncestr);
                wx.requestPayment({
                    nonceStr: res.data.noncestr,
                    package: 'prepay_id=' + res.data.prepayid,
                    paySign: res.data.sign,
                    timeStamp: res.data.timestamp,
                    signType: 'MD5',
                    success(res) {
                        wx.showToast({
                            title: '支付成功!',
                            icon: 'none',
                            duration: 2000,
                            success: function () {
                                that.getUserInfo();
                                that.setData({
                                    rechargeMoney: '',
                                    payResult: '0'
                                })
                            }
                        })
                        //支付成功后让他返回当前订单页面
                        wx.navigateTo({
                            url: '../myorder/myorder',
                        })
                    },
                    fail(res) {
                        wx.showToast({
                            title: '支付失败',
                            icon: 'none',
                        })
                    }
                })
            }
        })
    },

最后搞定,关注小生快乐一生!!!

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
老规矩,先看本节效果图我们实现这个支付功能完全是借助小程序云开发实现的,不用搭建自己的服务器,不用买域名,不用备案域名,不用支持https。只需要一个简单的云函数,就可以轻松的实现微信小程序支付功能。核心代码就下面这些一,创建一个云开发小程序关于如何创建云开发小程序,这里我就不再做具体讲解。不知道怎么创建云开发小程序的同学,可以去翻看我之前的文章,或者看下我录制的视频:https://edu.csdn.net/course/play/9604/204528创建云开发小程序有几点注意的1,一定不要忘记在app.js里初始化云开发环境。2,创建完云函数后,一定要记得上传二, 创建支付的云函数1,创建云函数pay三,引入三方依赖tenpay我们这里引入三方依赖的目的,是创建我们支付时需要的一些参数。我们安装依赖是使用里npm 而npm必须安装node,关于如何安装node,我这里不做讲解,百度一下,网上一大堆。1,首先右键pay,然后选择在终端中打开2,我们使用npm来安装这个依赖。在命令行里执行 npm i tenpay安装完成后,我们的pay云函数会多出一个package.json 文件到这里我们的tenpay依赖就安装好了。四,编写云函数pay完整代码如下//云开发实现支付 const cloud = require('wx-server-sdk')cloud.init() //1,引入支付的三方依赖 const tenpay = require('tenpay'); //2,配置支付信息 const config = ;exports.main = async(event, context) => 一定要注意把appid,mchid,partnerKey换成你自己的。到这里我们获取小程序支付所需参数的云函数代码就编写完成了。不要忘记上传这个云函数。出现下图就代表上传成功五,写一个简单的页面,用来提交订单,调用pay云函数。这个页面很简单,1,自己随便编写一个订单号(这个订单号要大于6位)2,自己随便填写一个订单价(单位是分)3,点击按钮,调用pay云函数。获取支付所需参数。下图是官方支付api所需要的一些必须参数。下图是我们调用pay云函数获取的参数,和上图所需要的是不是一样。六,调用wx.requestPayment实现支付下图是官方的示例代码这里不在做具体讲解了,完整的可以看视频。实现效果1,调起支付键盘2,支付完成3,log日志,可以看出不同支付状态的回调上图是支付成功的回调,我们可以在支付成功回调时,改变订单支付状态。下图是支付失败的回调,下图是支付完成的状态。到这里我们就轻松的实现了微信小程序支付功能了。是不是很简单啊,完整的讲解可以看视频。
实现微信小程序web-view跳转商城,支付的时候的跳转微信小程序支付,需要进行以下步骤: 1. 在微信公众平台注册小程序,并获取AppID。 2. 在小程序后台开启支付功能,并设置支付相关的参数,例如商户号、密钥等。 3. 在商城的页面中,使用微信JS-SDK中的`chooseWXPay`方法调起微信支付。 以下是调用微信支付的代码示例: ```javascript // 调用微信支付 function pay() { wx.chooseWXPay({ timestamp: '', // 支付的时间戳 nonceStr: '', // 支付的随机字符串 package: '', // 统一下单接口返回的 prepay_id 参数值 signType: '', // 签名算法,暂支持 MD5 paySign: '', // 签名 success: function (res) { // 支付成功后的回调函数 }, fail: function (res) { // 支付失败后的回调函数 } }); } ``` 4. 在商城页面中,点击支付按钮时,调用`pay`函数进行支付。 5. 在微信小程序中,使用`navigateToMiniProgram`或`navigateBackMiniProgram`方法实现跳转到微信小程序支付界面。 以下是跳转到微信小程序支付界面的代码示例: ```javascript // 跳转到微信小程序支付界面 function navigateToPay() { wx.navigateToMiniProgram({ appId: '', // 小程序的AppID path: '', // 跳转到小程序的路径 extraData: {}, // 传递给小程序的数据 success(res) { // 成功跳转到小程序支付界面后的回调函数 }, fail(res) { // 跳转失败后的回调函数 } }) } ``` 6. 在商城页面中,调用`navigateToPay`函数实现跳转到微信小程序支付界面。 7. 在小程序后台,配置小程序支付的回调URL,用于接收微信支付结果通知。 以上是微信小程序web-view跳转商城,支付的时候的跳转微信小程序支付的实现步骤和代码示例。需要注意的是,具体的代码和小程序后台配置可能会因为不同的商城和小程序而有所不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

S小生

感谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值