Example #1
0
        public virtual RefoundResult Refound(RefoundParameter parameter)
        {
            WxPayConfig config = new WxPayAPI.WxPayConfig(PayFactory.GetInterfaceXmlConfig(PayInterfaceType.WeiXinBarcode, parameter.TradeID));

            WxPayData data = new WxPayData();

            data.SetValue("out_trade_no", parameter.TradeID);

            data.SetValue("total_fee", (int)(parameter.TotalAmount * 100)); //订单总金额
            data.SetValue("refund_fee", (int)(parameter.Amount * 100));     //退款金额
            data.SetValue("out_refund_no", Guid.NewGuid().ToString());      //随机生成商户退款单号
            data.SetValue("op_user_id", config.MCHID);                      //操作员,默认为商户号

            WxPayData result = WxPayApi.Refund(data, config);               //提交退款申请给API,接收返回数据
            string    err    = result.GetValue("err_code_des") as string;

            RefoundResult finallyResult = new RefoundResult();

            if (result.GetValue("return_code").ToString() == "SUCCESS" &&
                result.GetValue("result_code").ToString() == "SUCCESS")
            {
                //退款成功
                finallyResult.Result = RefoundResult.ResultEnum.SUCCESS;
            }
            else
            {
                finallyResult.Result = RefoundResult.ResultEnum.FAIL;
            }
            finallyResult.Error         = err;
            finallyResult.ServerMessage = result.ToXml();
            return(finallyResult);
        }
Example #2
0
        public virtual RefoundResult Refound(RefoundParameter parameter)
        {
            if (parameter.TradeID.IsNullOrEmpty())
            {
                throw new Exception("TradeID is null");
            }
            Config config        = new Alipay.Config(PayFactory.GetInterfaceXmlConfig(PayInterfaceType.AlipayBarcode, parameter.TradeID));
            var    serviceClient = config.AppConfig.CreateClientInstance();

            AlipayTradeRefundContentBuilder builder = new AlipayTradeRefundContentBuilder();

            //支付宝交易号与商户网站订单号不能同时为空
            builder.out_trade_no = parameter.TradeID;

            //退款金额
            builder.refund_amount = parameter.Amount.ToString();

            builder.refund_reason = parameter.Reason;

            AlipayF2FRefundResult refundResult = serviceClient.tradeRefund(builder);

            RefoundResult finallyResult = new RefoundResult();

            //请在这里加上商户的业务逻辑程序代码
            //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
            switch (refundResult.Status)
            {
            case ResultEnum.SUCCESS:
                finallyResult.Result        = RefoundResult.ResultEnum.SUCCESS;
                finallyResult.ServerMessage = refundResult.response.Body;
                break;

            case ResultEnum.FAILED:
                finallyResult.Result        = RefoundResult.ResultEnum.FAIL;
                finallyResult.ServerMessage = refundResult.response.Body;
                finallyResult.Error         = refundResult.response.SubMsg;
                break;

            case ResultEnum.UNKNOWN:
                finallyResult.Result = RefoundResult.ResultEnum.FAIL;
                if (refundResult.response == null)
                {
                    finallyResult.Error = "配置或网络异常,请检查";
                }
                else
                {
                    finallyResult.Error = "系统异常,请走人工退款流程";
                }
                break;
            }

            return(finallyResult);
        }
Example #3
0
 public virtual RefoundResult Refound(RefoundParameter parameter)
 {
     throw new NotImplementedException();
 }