uniapp-ios内购

2022-06-09  本文已影响0人  养樂多_566c

首先

猛戳这边→→ → 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

上一篇下一篇

猜你喜欢

热点阅读