首页 > 编程语言 >uniapp做app跳转小程序支付功能

uniapp做app跳转小程序支付功能

时间:2023-11-03 11:14:33浏览次数:38  
标签:uniapp console log res app orderParams params 跳转 uni

1.app里面代码

app向小程序路径传参的时候,如果太长或者是里面有特殊符号建议先使用编码然后再小程序端解码实现传送(编码代码如下)

encodeURIComponent(JSON.stringify(params)) // 编码

JSON.parse(decodeURIComponent(option.params)) //解码

 

 

plus.share.getServices((s) => {
                        let shares = {};
                        for (let i = 0; i < s.length; i++) {
                            let t = s[i];
                            shares[t.id] = t;
                        }
                        let sweixin = shares['weixin'];
                        this.weixin = sweixin
                        this.weixin ? this.weixin.launchMiniProgram({
                                path: `pages/institutionalPay/institutionalPay?params=${params}&token=${value}&cid=${this.cid}&uuid=${this.uuid}`,//路径可以传值
                                type: 0, //可取值: 0-正式版; 1-测试版; 2-体验版。 默认值为0。
                                id: 'xxxxxxxxx', //小程序的原始id
                            },
                            res => {
                                console.log(res)
                            },
                            err => {
                                console.log(err);
                            },
                        ) : plus.nativeUI.alert('当前环境不支持微信操作!');
                        return
                    }, function(e) {
                        console.log("获取分享服务列表失败:" + e.message);
                    });

2.小程序端在onload接收,首先获取openid(此方法和小程序支付有可能有延迟,所以建议在获取到openid自后再进行支付操作)

//获取openid
                wx.login  ({
                success :   function   (res) {
                    if (res.code) {
                        const  params = {
                            code:res.code
                        }
                          getOpenidNew (params).then (value =>{
                              console.log('openid',value)
                             uni.setStorageSync('openid',value.data.openId)
                             that.payMoney()
                         } ).catch(res =>{
                             console.log(res)
                         })
                        
                    } else {
                      console.log('登录失败!' + res.errMsg)
                    }
                  }
                })

通过后端接口获取支付参数

唤起支付 (支付五大要素)

uni.requestPayment({
                      provider: 'wxpay',
                      timeStamp:elements.data.timeStamp ,
                      nonceStr:elements.data.nonceStr ,
                      package:elements.data.packageValue ,
                      signType:elements.data.signType,
                      paySign:elements.data.paySign,
                      success: async  (res) =>{
                          const allreadyPay = await appletAllreadyPay(this.orderParams)
                          //支付成功
                        uni.showToast({
                            title: '支付成功',
                            icon: 'none',
                            duration: 3000
                        })
                        this.orderParams = encodeURIComponent(JSON.stringify(this.orderParams))
                        uni.reLaunch({
                            url:`/pages/institutionalPay/unpaid/unpaid?flag=${0}&orderParams=${this.orderParams}`
                        })
                      },
                      fail:  (err) => {
                        uni.showToast({
                            title: '支付失败',
                            icon: 'none',
                            duration: 3000
                        })
                        this.orderParamsOrder = encodeURIComponent(JSON.stringify(this.orderParamsOrder))
                        this.orderParams = encodeURIComponent(JSON.stringify(this.orderParams))
                        //取消支付
                        uni.reLaunch({
                            url:`/pages/institutionalPay/unpaid/unpaid?flag=${1}&orderParamsOrder=${this.orderParamsOrder}&orderParams=${this.orderParams}`
                        })
                      }
                    })

标签:uniapp,console,log,res,app,orderParams,params,跳转,uni
From: https://www.cnblogs.com/prince11/p/17807119.html

相关文章

  • 小程序互相跳转
    wx.navigateToMiniProgram({ appId:'目标小程序appid', path:'目标小程序页面路径', //develop开发版;trial体验版;release正式版 envVersion:'release', success(res){ //打开成功 console.log("跳转小程序成功!",res); } ......
  • 使用 Appilot 部署 Llama2,会聊天就行!
    Walrus是一款基于平台工程理念的应用管理平台,致力于解决应用交付领域的深切痛点。借助Walrus将云原生的能力和最佳实践扩展到非容器化环境,并支持任意应用形态统一编排部署,降低使用基础设施的复杂度,为研发和运维团队提供易用、一致的应用管理和部署体验,进而构建无缝协作的软件交......
  • 文件名: ?Ciwindows\system32 inetsrconfiglapplicationHost.config 错误:无法写入配
    出现原因:出现这个问题,一般是在程序运行的时候更新程序,导致的.解决方案:MicrosoftWindows[版本6.3.9600](c)2013MicrosoftCorporation。保留所有权利。C:\Users\Administrator>netstopiisadmin/yIISAdminService服务正在停止....IISAdminService服务已成功停......
  • [MDP.NetCore] 開發一個從GitHub持續佈署到Azure Container Apps的Web站台
    開發一個從GitHub持續佈署到AzureContainerApps的Web站台程式碼簽入GitHub之後,啟動GitHubAction流程,編譯並部署程式到AzureContainerApps,是開發系統時常見的功能需求。本篇範例協助開發人員使用GitHub與Azure,逐步完成必要的設計和實作。操作步驟1.註冊並登入AzurePortal......
  • Springboot使用return跳转到html页面只是返回字符串,不跳转问题的解决
    问题描述我在使用SpringBoot进行页面跳转时,发现其只是返回相应的字符串,并不会出现页面跳转:问题解决不要在Controller层加@Responsebody注解,不然就只会默认是返回字符串,而不会返回页面;......
  • uniapp小程序所遇到的bug
    最近小程序添加好多条条框框的规矩比如1、登录的时候要弹出隐私规则的弹窗2、要使用的api涉及到隐私的一定要在隐私规则里配置,在微信公众平台的设置里,更新隐私规则3、.如果涉及到手机号登录的小程序,则需要有游客模式,就是不可以在登录的时候向用户获取手机号,要在具体功能的前面......
  • 基于Android的记录生活APP-计算机毕业设计源码+LW文档
    摘 要近些年来,随着科技的飞速发展,互联网的普及逐渐延伸到各行各业中,给人们生活带来了十分的便利,记录生活信息利用计算机网络实现信息化管理,使整个记录生活管理的发展和服务水平有显著提升。本文拟采用Android平台进行开发,使用java技术和Springboot搭建系统框架,后台使用MySQL数......
  • uniapp app横屏竖屏问题导致样式紊乱
    最近做了一个点击签名然后要让app自动横屏的功能,此功能难点在于退出横屏的时候,会导致竖屏的页面紊乱。首先如果要让app横屏,要先在manifest.json的源码视图app-plus里添加"flexible":true,表示app可以横竖切换然后在想要横屏的页面里加上onShow(){         uni.sh......
  • 2023年APP备案操作教程 阿里云APP备案试列 APP公钥sha1签名获取方法
    ​ 2023年APP备案操作教程阿里云APP备案试列APP公钥sha1签名获取方法阿里云新增APP备案操作教程西部数码、腾讯云、新网、等等其他域名备案信息系统操作类似;核心要点:A,域名之前是哪里备案的,APP备案就到哪里去做,方便简单;B,APP备案核心预存信息为APP包名、MD5指纹(安卓)、sha1签名......
  • uniapp-ucloud 数据库里面添加记录
    要保持本地跟云端的表一致。同步。还有设置权限constdb=uniCloud.database()constjiemengCollection=db.collection('jiemeng') for(constrowofdata){ console.log(row) try{ jiemengCollection.add(row) }catch(e){ ......