Пример #1
0
        /***
         * 申请退款完整业务流程逻辑
         * @param transaction_id 微信订单号(优先使用)
         * @param out_trade_no 商户订单号
         * @param out_refund_no 商户系统内部的退款单号,商户系统内部唯一,同一退款单号多次请求只退一笔
         * @param total_fee 订单总金额
         * @param refund_fee 退款金额
         * @return 退款结果(xml格式)
         */
        public static ParamsData Run(string transaction_id, string out_trade_no, string out_refund_no, int total_fee, int refund_fee)
        {
            Log.Info("Refund", "Refund is processing...");

            var data = new ParamsData();

            if (!string.IsNullOrEmpty(transaction_id))//微信订单号存在的条件下,则已微信订单号为准
            {
                data.SetValue("transaction_id", transaction_id);
            }
            else//微信订单号不存在,才根据商户订单号去退款
            {
                data.SetValue("out_trade_no", out_trade_no);
            }

            data.SetValue("total_fee", total_fee);         //订单总金额
            data.SetValue("refund_fee", refund_fee);       //退款金额
            data.SetValue("out_refund_no", out_refund_no); //商户系统内部的退款单号
            data.SetValue("op_user_id", Config.MCHID);     //操作员,默认为商户号

            var result = PayApi.Refund(data);              //提交退款申请给API,接收返回数据

            Log.Info("Refund", "Refund process complete, result : " + result.ToXml());
            return(result);
        }