uniapp接入支付宝小程序

  • 开发前准备

下载支付宝开发者工具:小程序文档 - 支付宝文档中心

下载完成后填写或选择支付宝小程序开发者工具的安装路径

运行到开发者工具进行调

点击运行-->选择支付宝小程,然后等待编译,编译完成以后,你的支付宝开发工具就会自动打开,但是你的项目不会。现在需要点击右上角-->选择项目-->选择你的项目文件夹-->打开-->选择unpackage-->选择dist-->选择dev-->选择mp-alipay。这样就可以在支付宝开发工具打开项目了,不用担心,这边写了代码,支付宝开发工具上也是自动更新的。

             

  • 支付宝小程序开放平台配置

  • 开发登录接入

// 支付宝小程序不支持uni.request,用my.request

            // #ifdef MP-ALIPAY

            my.request({

                url: config.api() + url,

                method: method || "GET",

                data: data,

                headers: header,

                dataType: 'json',

                success: res => {

                // 注:因为这里对请求成功的没有统一设置抛错提示,所以后续具体组件中使用接口请求的res除200(实际以后端同事定好的为准)成功外的其他code需要额外写抛错提示

                    resolve(res.data) // 成功

                },

                // 这里的接口请求,如果出现问题就输出接口请求失败的msg;

                // 注:因为这里对于请求失败的设置统一抛错提示了,所以后续具体组件中使用接口请求的catch中不需要再写抛错提示

                fail: (err) => {

                    if (err.statusCode === 424) { //自定请求失败的情况,这里以常见的token失效或过期为例

                        store.dispatch('LogOut').then(() => {

                            uni.showModal({

                                showCancel: false,

                                title: '提示',

                                content: '令牌状态已过期,请点击重新登录',

                                success: function (result) {

                                    if (result.confirm) {

                                        uni.reLaunch({

                                            url: '/pages/tabBar/self/self'

                                        });

                                          

                                    }

                                }

                            });

                        })

                        return

                    }

                    uni.showToast({

                        title: "" + err.msg,

                        icon: 'none'

                    });

                    reject(err)

                }

            })

            // #endif

//uniapp使用条件编译#ifdef(跨平台设备兼容)

// #ifdef MP-ALIPAY

        //获取支付宝code

        my.getAuthCode({

              scopes: 'auth_user',

              success: loginRes => {

                  console.log(loginRes,'ppp')

                //统一登录接口

                  this.login(loginRes.authCode).then(res => {

                    uni.hideLoading();

                    uni.showToast({title: "登录成功", icon: "success"});

                    this.getAreaList()

                  }).catch(err => {

                    uni.hideLoading();

                  })

              },

              fail: res => {

                uni.hideLoading();

                uni.showToast({title: "支付宝登录授权失败", icon: "none"});

              }

            });

//#endi

样式兼容

支付宝小程序 直接在自定义组件上设置样式无效

外面包一层view 设置class处理

上架成功后注意查看是否允许被搜索

### UniApp 开发微信小程序集成支付宝支付 #### 一、准备工作 在开始之前,确保已经注册了支付宝开放平台账号,并创建应用获取到`APPID`以及相应的私钥和公钥。 对于UniApp项目而言,在manifest.json文件中的“App模块配置”的“Payment(支付)”选项里勾选“支付宝支付”。这一步骤是为了让编译后的包能够具备调用支付宝接口的能力[^2]。 #### 二、服务端环境搭建 由于涉及到敏感操作如签名验证等,这部分逻辑应该放在服务器端完成。以下是基于Node.js的服务端简单实现: ```javascript // server.js const express = require('express'); const AlipaySdk = require('alipay-sdk').default; const app = express(); app.use(express.urlencoded({ extended: true })); let alipaySdk = new AlipaySdk({ appId: "your_app_id", privateKey: `-----BEGIN RSA PRIVATE KEY----- your_private_key_here -----END RSA PRIVATE KEY-----`, alipayPublicKey: `-----BEGIN PUBLIC KEY----- alipay_public_key_here -----END PUBLIC KEY-----`, gateway: 'https://openapi.alipay.com/gateway.do' }); app.post('/createOrder', async (req, res) => { let result = await alipaySdk.exec( 'alipay.trade.app.pay', { ... }, // 填入业务参数 { method: 'POST' } ); res.send(result); }); ``` 此部分代码主要用于接收来自前端发起的请求,向支付宝发送交易指令并返回响应给客户端。 #### 三、前端页面编写 接下来是在uni-app工程内的具体编码工作。这里给出一个简单的下单按钮点击事件处理器作为示范: ```html <!-- pages/index/index.vue --> <template> <view class="container"> <!-- 下单按钮 --> <button type="primary" @click="handlePay">立即购买</button> </view> </template> <script> export default { methods: { handlePay() { const that = this; uni.request({ url: `${that.serverUrl}/createOrder`, // 请求地址为上面提到的服务端路由路径 data: {}, success(res){ if (!res.data || !res.data.sign) return console.error('支付失败'); my.orderConfirm({ orderStr: JSON.stringify(res.data), // 将服务端返回的数据转成字符串形式传入orderStr字段中 success(response) { console.log('success:' + JSON.stringify(response)); }, fail(errMsg) { console.log(`fail:${errMsg}`); } }); } }) } } } </script> ``` 上述代码片段展示了当用户点击“立即购买”按钮时触发的操作——先通过HTTP POST方式联系后台创建订单;成功后利用支付宝提供的JS API (`my.orderConfirm`) 来启动支付流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值