美文网首页
uniapp-ios内购

uniapp-ios内购

作者: 养樂多_566c | 来源:发表于2022-06-09 10:33 被阅读0次

    首先

    猛戳这边→→ → ios内购 按照其中步骤配置好各项参数(一定是需要添加商品和测试账号)

    HBuilderX里面apple内支付选中

    配置完成后直接上代码

    
    // data里面放入必要的参数
    
    current: 0,// 商品列表选中的下标
    iap: null, // 支付通道
    ids: [], // 应用内购项目产品 ID 数组
    product_list: [], // 应用内购项目列表
    
    
    
    // 首先初始化获取支付通道 - *放在unload里面(根据自己的需求来,环境监测之后需要获取商品列表)*
    
    // #ifdef APP-PLUS
    plus.payment.getChannels(res => {
        let channel = res.find(i => i.id === 'appleiap')
        this.iap = channel ? channel : null
        this.requestOrder()
    }, function(e) {
        plus.nativeUI.alert("获取支付通道失败,请稍后重试。", function() {}, "提示");
    })
    // #endif
    
    
    获取内购商品列表-主要是获取商品id
    
    // 获取内购项目列表
    requestOrder() {
        uni.showLoading({
            title: '检测支付环境...'
        })
        // #ifdef APP-PLUS
        this.iap.requestOrder(
            this.ids,
            res => {
                uni.hideLoading()
                this.product_list = res;
            },
            (errormsg) => {
                uni.hideLoading()
                plus.nativeUI.alert("获取应用内购项目失败,请稍后重试。1", function(e) {}, "提示");
                console.log(JSON.stringify(errormsg))
            }
          )
        // #endif
    }
    
    调用支付
            /* ios内购 */
            requestPayment(out_trade_no) {
                let self = this;
                uni.showLoading({
                    title: '支付中请勿关闭...'
                })
                uni.requestPayment({
                    provider: 'appleiap',
                    orderInfo: {
                        productid: this.ids[this.current]
                    },
                    success: (e) => {
                        console.log(out_trade_no, '交易单号');
                        console.log(e, '支付成功');
                        uni.hideLoading()
                        if (e.errMsg == 'requestPayment:ok') {
                            self.$u.api.membercard_membercard_ios_pay_success({
                                out_trade_no,
                                receipt_data: e.transactionReceipt
                            }).then(res => {
                                console.log(res);
                                uni.showModal({
                                    content: "支付成功",
                                    showCancel: false
                                })
                            })
                        }
                    },
                    fail: (e) => {
                        uni.hideLoading()
                        console.log(e);
                        uni.showModal({
                            content: "支付失败,原因为: " + e.errMsg,
                            showCancel: false
                        })
                    },
                    complete: () => {
                        uni.hideLoading()
                        console.log("payment结束")
                        this.loading = false;
                    }
                })
            },
    

    END

    相关文章

      网友评论

          本文标题:uniapp-ios内购

          本文链接:https://www.haomeiwen.com/subject/tpvumrtx.html