| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401 | 
							- // 必须传入price,show tradeNo 
 
- // bind:payResult 返回支付状态
 
- const CONFIG = require("../../config.js");
 
- const Parse = getApp().Parse;
 
- const company = getApp().globalData.company;
 
- Component({
 
-   behaviors: [],
 
-   properties: {
 
-     show: {
 
-       type: Boolean,
 
-       value: false,
 
-     },
 
-     //支付价格 *必填
 
-     price: {
 
-       type: Number,
 
-       value: 0,
 
-     },
 
-     //订单id Order表创建后id 
 
-     orderId: {
 
-       type: String,
 
-     },
 
-     //支付类型 
 
-     orderType: {
 
-       type: String,
 
-       value: 'shopgoods'
 
-     },
 
-     //订单编号 *必填
 
-     tradeNo: {
 
-       type: String,
 
-     },
 
-     //显示公益金支付 Profile — bonus字段
 
-     showBonus: {
 
-       type: Boolean,
 
-       value: false
 
-     },
 
-     //显示支付类型
 
-     showType: {
 
-       type: String,
 
-       value: 'all'
 
-     },
 
-     profileId: {
 
-       type: String
 
-     }
 
-   },
 
-   data: {
 
-     radio: "wxpay",
 
-     isPay: false,
 
-     balanceTitle:CONFIG.default.payBalanceTitle || '余额'
 
-   },
 
-   lifetimes: {
 
-     created() {
 
-     },
 
-     attached() {},
 
-     moved() {},
 
-     detached() {},
 
-   },
 
-   pageLifetimes: {
 
-     show: async function () {
 
-       // 页面显示
 
-     },
 
-     hide: function () {
 
-       // 页面被隐藏
 
-       this.setData({
 
-         show: false,
 
-       });
 
-     },
 
-     resize: function (size) {
 
-       // 页面尺寸变化
 
-     },
 
-   },
 
-   methods: {
 
-     onChange(event) {
 
-       console.log(event)
 
-       this.setData({
 
-         radio: event.detail,
 
-       });
 
-       console.log(this.data.radio);
 
-     },
 
-     onClickHide() {
 
-       this.setData({
 
-         show: false
 
-       });
 
-       this.payResult("Cancel the payment", undefined);
 
-     },
 
-     /* 支付结果返回父组件 */
 
-     payResult(state, no) {
 
-       let {
 
-         radio
 
-       } = this.data
 
-       this.triggerEvent("payResult", {
 
-         params: state,
 
-         no: no,
 
-         type: radio
 
-       });
 
-     },
 
-     pay() {
 
-       if (this.data.isPay) {
 
-         wx.showToast({
 
-           title: '你已支付,请勿重复提交',
 
-           icon: "none"
 
-         })
 
-         return
 
-       }
 
-       let payType = this.data.radio;
 
-       switch (payType) {
 
-         case "wxpay":
 
-           console.log(this.properties.tradeNo)
 
-           this.wxPay();
 
-           break;
 
-         case "balance":
 
-           this.balance();
 
-           break;
 
-         case "bonus":
 
-           this.bonusPay();
 
-           break;
 
-         case "offline":
 
-           break;
 
-       }
 
-     },
 
-     async wxPay() {
 
-       let that = this;
 
-       let Account = new Parse.Query("Account");
 
-       Account.equalTo("user", Parse.User.current().id);
 
-       Account.equalTo("company", company);
 
-       let account = await Account.first();
 
-       let AccountLog = Parse.Object.extend("AccountLog");
 
-       let accountLog = new AccountLog();
 
-       accountLog.set("assetType", "wxPay");
 
-       accountLog.set("payType", "wxpay-wxapp");
 
-       accountLog.set("assetCount", this.data.price);
 
-       accountLog.set("desc", "微信支付");
 
-       accountLog.set("orderType", this.data.orderType + "-wxpay");
 
-       accountLog.set("orderNumber", this.properties.tradeNo);
 
-       if (this.properties.orderId) accountLog.set("orderId", this.properties.orderId)
 
-       accountLog.set("isVerified", false);
 
-       accountLog.set("targetName", "system");
 
-       if (account) {
 
-         accountLog.set("fromAccount", account.toPointer());
 
-       }
 
-       accountLog.set("fromName", Parse.User.current().get("nickname"));
 
-       accountLog.set("company", {
 
-         __type: "Pointer",
 
-         className: "Company",
 
-         objectId: company,
 
-       });
 
-       let appId = getApp().globalData.appid;
 
-       let openId = wx.getStorageSync("userInfo").openid;
 
-       if(!openId && Parse.User.current().get("wxapp")){
 
-         openId = Parse.User.current().get("wxapp")?.[appId]?.openid
 
-       }
 
-       let goodsTotalPrice = this.data.price;
 
-       console.log(goodsTotalPrice)
 
-       if(goodsTotalPrice == 0){
 
-         this.updateLog(accountLog)
 
-         return
 
-       }
 
-       wx.request({
 
-         method: "POST",
 
-         url: "https://server.fmode.cn/api/wxpay/neworder",
 
-         data: {
 
-           appid: appId,
 
-           openid: openId,
 
-           out_trade_no: that.properties.tradeNo,
 
-           total_fee: goodsTotalPrice,
 
-           company: company
 
-         },
 
-         success: (payres) => {
 
-           console.log("Pay Params");
 
-           console.log(payres);
 
-           let payinfo = payres.data;
 
-           wx.requestPayment({
 
-             appId: appId,
 
-             timeStamp: payinfo.timeStamp,
 
-             nonceStr: payinfo.nonceStr,
 
-             package: payinfo.package,
 
-             signType: "MD5",
 
-             paySign: payinfo.paySign,
 
-             async success(data) {
 
-               that.updateLog(accountLog)
 
-               wx.showToast({
 
-                 title: "支付成功",
 
-                 icon: "success",
 
-                 duration: 1500,
 
-               });
 
-               that.setData({
 
-                 show: false
 
-               })
 
-             },
 
-             fail(err) {
 
-               that.payResult(err, that.properties.tradeNo);
 
-               wx.showToast({
 
-                 title: "支付失败",
 
-                 icon: "error",
 
-                 duration: 1500,
 
-               });
 
-             },
 
-             complete:(data) => {
 
-               console.log(111,data)
 
-             }
 
-           });
 
-         },
 
-         fail: (err) => {
 
-           wx.showToast({
 
-             title: "支付失败",
 
-             icon: "error",
 
-             duration: 1500,
 
-           });
 
-           return false;
 
-         },
 
-         
 
-       });
 
-     },
 
-     //支付成功更新log
 
-     async updateLog(accountLog){
 
-       this.payResult("ok", this.properties.tradeNo);
 
-       accountLog.set("isVerified", true);
 
-       await accountLog.save()
 
-     },
 
-     async sendOrder(tradeNo) {
 
-       let that = this;
 
-       let DramaOrderLog = Parse.Object.extend("UserAgentOrder");
 
-       let current = Parse.User.current();
 
-       let dramaOrderLog = new DramaOrderLog();
 
-       dramaOrderLog.set("user", {
 
-         __type: "Pointer",
 
-         className: "_User",
 
-         objectId: current.id,
 
-       });
 
-       dramaOrderLog.set("orderId", tradeNo);
 
-       dramaOrderLog.set("company", {
 
-         __type: "Pointer",
 
-         className: "Company",
 
-         objectId: getApp().globalData.company,
 
-       });
 
-       await dramaOrderLog.save();
 
-     },
 
-     async balance() {
 
-       let { balanceTitle } = this.data
 
-       let _this = this;
 
-       try {
 
-         let price = this.data.price
 
-         let Account = new Parse.Query("Account");
 
-         Account.equalTo("user", Parse.User.current().id);
 
-         Account.equalTo("company", company);
 
-         let account = await Account.first();
 
-         console.log(account);
 
-         if (!account.get("balance") || price > account.get("balance")) {
 
-           wx.showToast({
 
-             title: `${balanceTitle == '积分' ? '积分不足' : '余额不足,请充值'}`,
 
-             icon: "none"
 
-           })
 
-           return
 
-         }
 
-         let AccountLog = Parse.Object.extend("AccountLog");
 
-         let accountLog = new AccountLog();
 
-         accountLog.set("assetType", "balance");
 
-         accountLog.set("payType", "balance");
 
-         accountLog.set("assetCount", this.data.price);
 
-         accountLog.set("desc", `${balanceTitle}支付`);
 
-         accountLog.set("orderType", this.data.orderType + "-balance");
 
-         accountLog.set("orderNumber", this.properties.tradeNo);
 
-         if (this.properties.orderId) accountLog.set("orderId", this.properties.orderId)
 
-         accountLog.set("isVerified", false);
 
-         accountLog.set("targetName", "system");
 
-         if (account) {
 
-           accountLog.set("fromAccount", account.toPointer());
 
-         }
 
-         accountLog.set("fromName", Parse.User.current().get("nickname"));
 
-         accountLog.set("company", {
 
-           __type: "Pointer",
 
-           className: "Company",
 
-           objectId: company,
 
-         });
 
-         accountLog.save()
 
-           .then((res) => {
 
-             res.set("isVerified", true);
 
-             res.save().then((result) => {
 
-               console.log(result)
 
-               wx.showToast({
 
-                 title: "支付成功",
 
-                 icon: "success",
 
-                 duration: 1500,
 
-               });
 
-               _this.payResult("ok", this.properties.tradeNo);
 
-             })
 
-           })
 
-       } catch (error) {
 
-         console.log(error)
 
-         wx.showToast({
 
-           title: "支付失败",
 
-           icon: "error",
 
-           duration: 1500,
 
-         });
 
-         _this.payResult(error);
 
-       }
 
-       this.setData({
 
-         isPay: true
 
-       })
 
-     },
 
-     //公益金支付
 
-     async bonusPay() {
 
-       let _this = this;
 
-       let {
 
-         profileId
 
-       } = this.data
 
-       try {
 
-         let data = await this.customSQL()
 
-         console.log(data);
 
-         if (data.code == 200) {
 
-           let Account = new Parse.Query("Account");
 
-           Account.equalTo("user", Parse.User.current().id);
 
-           Account.equalTo("company", company);
 
-           let account = await Account.first();
 
-           let AccountLog = Parse.Object.extend("AccountLog");
 
-           let accountLog = new AccountLog();
 
-           accountLog.set("assetType", "bonus");
 
-           accountLog.set("payType", "bonus");
 
-           accountLog.set("assetCount", this.data.price);
 
-           accountLog.set("desc", "公益金支付");
 
-           accountLog.set("orderType", this.data.orderType + "-bonus");
 
-           accountLog.set("orderNumber", this.properties.tradeNo);
 
-           if (this.properties.orderId) accountLog.set("orderId", this.properties.orderId)
 
-           accountLog.set("isVerified", true);
 
-           accountLog.set("targetName", "system");
 
-           if (!profileId && account) {
 
-             accountLog.set("fromAccount", account.toPointer());
 
-           }
 
-           accountLog.set("fromName", Parse.User.current().get("nickname"));
 
-           accountLog.set("company", {
 
-             __type: "Pointer",
 
-             className: "Company",
 
-             objectId: company,
 
-           });
 
-           await accountLog.save()
 
-           wx.showToast({
 
-             title: data.msg,
 
-             icon: 'none',
 
-             image: '',
 
-             duration: 1500,
 
-             mask: false,
 
-           });
 
-           _this.payResult("ok", this.properties.tradeNo);
 
-         }else{
 
-           wx.showToast({
 
-             title: data.msg,
 
-             icon: 'none',
 
-             image: '',
 
-             duration: 1500,
 
-             mask: false,
 
-           });
 
-         }
 
-       } catch (err) {
 
-         console.log(err)
 
-         wx.showToast({
 
-           title: "支付失败",
 
-           icon: "error",
 
-           duration: 1500,
 
-         });
 
-         _this.payResult(error);
 
-       }
 
-     },
 
-     async customSQL() {
 
-       let price = this.data.price
 
-       let {
 
-         profileId
 
-       } = this.data
 
-       let promise = await new Promise((resolve, rej) => {
 
-         wx.request({
 
-           url: "https://server.fmode.cn/api/food/bonus",
 
-           data: {
 
-             pid: profileId,
 
-             price: price,
 
-             company: company
 
-           },
 
-           method: "POST",
 
-           success(data) {
 
-             console.log(data);
 
-             resolve(data.data)
 
-           },
 
-           fail(err) {
 
-             rej(err);
 
-           },
 
-         });
 
-       });
 
-       return promise;
 
-     },
 
-   },
 
-   observers: {
 
-     show: function (show) {
 
-       console.log(show)
 
-     }
 
-   }
 
- });
 
 
  |