Beispiel #1
0
        /// <summary>
        /// 扫码消费
        /// </summary>
        /// <param name="balance">消费金额</param>
        /// <param name="codeQR">微信支付宝支付码</param>
        /// <returns></returns>
        private static ServiceResult <POSReturn> SweepConsume(UnionPayInput1 param)
        {
            InputData inputdata = new InputData(POSTranslateCode.SWEEPCONSUME);

            inputdata.amount   = Math.Round(param.Number * 100m).ToString();
            inputdata.szQRCode = param.Str1;

            //POS机微信/支付宝扫码支付使用支付方式作为银行名称代码,方便界面显示
            var retSweepConsume = BankTrans(inputdata);

            if (retSweepConsume.Success && retSweepConsume.Value.amount / 100m != param.Number)
            {
                return(new ServiceResult <POSReturn>(false, InnerError
                                                     , string.Format("POS机缴费金额与应扣金额不一致!{0}应为{1}现为{2}"
                                                                     , Environment.NewLine, param.Number, retSweepConsume.Value.amount / 100m)));
            }
            if (retSweepConsume.Success)
            {
                if (listWeChatCode.Contains(param.Str1.Substring(0, 2)))
                {
                    retSweepConsume.Value.dtPayMode = Constant.PayWays.WeChat;
                }
                else
                {
                    if (listAliCode.Contains(param.Str1.Substring(0, 2)))
                    {
                        retSweepConsume.Value.dtPayMode = Constant.PayWays.Ali;
                    }
                }
            }
            return(retSweepConsume);
        }
Beispiel #2
0
        /// <summary>
        /// 撤销交易
        /// </summary>
        /// <param name="balance">金额</param>
        /// <param name="translateSerialCode">原交易流水号</param>
        /// <returns></returns>
        private static ServiceResult <POSReturn> CancelConsume(UnionPayInput1 param)
        {
            InputData inputdata = new InputData(POSTranslateCode.CANCELCONSUME);

            inputdata.amount    = Math.Round(param.Number * 100m).ToString();
            inputdata.old_trace = param.Str1;
            var ret = BankTrans(inputdata);

            return(ret);
        }
Beispiel #3
0
        /// <summary>
        /// 扫码退货
        /// </summary>
        /// <param name="balance">退货金额</param>
        /// <param name="translateCode">订单号</param>
        /// <returns></returns>
        private static ServiceResult <POSReturn> SweepRefund(UnionPayInput1 param)
        {
            InputData inputdata = new InputData(POSTranslateCode.SWEEPREFUND);

            inputdata.amount   = Math.Round(param.Number * 100m).ToString();
            inputdata.szQRCode = param.Str1;
            var ret = BankTrans(inputdata);

            if (ret.Success && ret.Value.amount / 100m != param.Number)
            {
                ret = new ServiceResult <POSReturn>(false, InnerError,
                                                    string.Format("POS机退费金额与应退金额不一致!{0}应为{1}元,现为{2}元",
                                                                  Environment.NewLine, param.Number, ret.Value.amount / 100m));
            }
            return(ret);
        }