uniapp小程序與app支付功能

小程序,app,支付

  • 1.在uniapp項目中,會有一個 ”manifest.json“ 文件中配置。

    1. 打開 ”manifest.json“ 文件后,在里面 App模塊配置中,勾選 Payment(支付)功能,里面包含:(Apple應(yīng)用內(nèi)支付,支付寶支付,微信支付,Paypal支付,Stripe支付(Android平臺無配置參數(shù)),Google支付),根據(jù)自己的需求來定。

      1:在勾選位置支付的時候會讓你填寫appid,這個appid就是你們在微信開發(fā)者平臺開通之后的appid。
      2:Universal Link是蘋果再WWDC 2015上提出的iOS 9的新特性,是一種僅限于蘋果設(shè)備的特別深度鏈接協(xié)議,能通過打開一個Https鏈接來直接啟動您的客戶端應(yīng)用。開始之前,確保你有一個Https協(xié)議的域名,下面我們就看看在uniapp中如何正確配置。
  1. 步驟一:新建 apple-app-site-association文件,填寫下面的內(nèi)容
{ "applinks": {
     "apps": [],
     "details": [
           {
                "appID": "YK9X2DF6.com.package.xxxx",
                "paths": [ "/ulink/*"]
           }
       ]
    }
}
  1. Team IDBundle ID不知道的話,前往 蘋果開發(fā)者中心 ,打開Identifiers,找到對應(yīng)的應(yīng)用,點(diǎn)擊進(jìn)入查看
  2. 注意!注意!注意!請一定得開啟Associated Domains服務(wù),啟用后重新生成證書,并重新打包app。
  3. 以上配置好之后,就可以在要支付的頁面調(diào)用支付。
          // 點(diǎn)擊支付按鈕
            submit() {
                if (this.groupValue) {
                      this.rqueryGoodsBuy()
                } else {
                    this.$showToast('請勾選我已閱讀并同意提貨協(xié)議')
                }
            },
            // 調(diào)用下單api
            rqueryGoodsBuy() { 
                let data = {`要傳給后端的參數(shù)`}
                `調(diào)用api,(如:postGoodsBuy)`(data).then(res => {
                    if (res.code == 0) {
                       `判斷是app,還是 小程序`
                        // #ifdef APP-PLUS
                            this.requerySubmitApp(res.data)
                        // #endif
                        // #ifdef MP-WEIXIN
                            this.requerySubmitApplet(res.data)
                        // #endif

                    }
                }).catch(e => {
                    //聯(lián)網(wǎng)失敗, 結(jié)束加載
                    this.$showToast(e);
                })
            },
            
            // 訂單app支付
            requerySubmitApp(id) {
                let that = this;
                uni.showLoading({
                    title: '請稍后...'
                })
                let data = {
                    id: id,
                   `通過選擇方式來判斷不同的支付,wx_app為微信支付,alipay_app支付寶支付,由后臺來定`
                    channelCode: that.paymentMethod == 1 ? 'wx_app' : 'alipay_app',
                }
                postSubmit(data).then(res => {
                    // 處理支付orderInfo
                    let orderInfo = null;
                    `通過選擇后的方式來判斷`
                    if(that.paymentMethod == 1){
                        that.goodsBuyData = JSON.parse(res.data.displayContent)
                        orderInfo = {
                            "appid": that.goodsBuyData.appid,
                            "noncestr": that.goodsBuyData.noncestr,
                            "package": that.goodsBuyData.packageValue,
                            "partnerid": that.goodsBuyData.partnerId,
                            "prepayid": that.goodsBuyData.prepayId,
                            "timestamp": that.goodsBuyData.timestamp,
                            "sign": that.goodsBuyData.sign
                        };
                    }else{
                        orderInfo = res.data.displayContent;
                    }
                    // 判斷是微信支付還是支付寶支付
                    let providerState = '';
                    `這個支付方式是固定的,微信就是wxpay,支付寶就是alipay`
                    that.paymentMethod == 1 ? providerState = 'wxpay' : providerState = 'alipay';
                    // 調(diào)用支付api
                    uni.requestPayment({
                        provider: providerState,
                        orderInfo: orderInfo,
                        success: function(res) {
                            showSuccess('支付成功')
                        },
                        fail: function(err) {
                            showError('支付失敗')
                        }
                    })
                }).catch(e => {
                    //聯(lián)網(wǎng)失敗, 結(jié)束加載
                    that.$showToast(e);
                })
            },
            // 訂單小程序支付
            requerySubmitApplet(id) {
                let aoct = this;
                // 獲取 openid
                let info = uni.getStorageSync('userInfo');
                let data = {
                    id: id,
                    channelCode: "wx_lite",
                    channelExtras: {
                        openid: info.openId
                    }
                }
                postSubmit(data).then(res => {
                    uni.showLoading({
                        title: '請稍后...'
                    })
                    aoct.goodsBuyData = JSON.parse(res.data.displayContent)
                    // 調(diào)用支付api
                    uni.requestPayment({
                        timeStamp: aoct.goodsBuyData.timeStamp, // 時間戳(單位:秒)
                        nonceStr: aoct.goodsBuyData.nonceStr, // 隨機(jī)字符串
                        package: aoct.goodsBuyData.packageValue, // 固定值
                        signType: aoct.goodsBuyData.signType, //固定值
                        paySign: aoct.goodsBuyData.paySign, //簽名
                        success: function(res) {
                            console.log('支付成功')
                            uni.hideLoading();
                        },
                        fail: function(err) {
                            showError('取消支付')
                            uni.hideLoading();
                        }
                    })
                }).catch(e => {
                    console.log(e, '失敗拉')
                    //聯(lián)網(wǎng)失敗, 結(jié)束加載
                    aoct.$showToast(e);
                })
            },
  1. 以上就是uniapp中支付功能,小程序、App。
  2. 看大家還有什么好的方法都可以分享,討論。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容