Пример #1
0
        /***
         * 申请退款完整业务流程逻辑
         * @param transaction_id 微信订单号(优先使用)
         * @param out_trade_no 商户订单号
         * @param total_fee 订单总金额
         * @param refund_fee 退款金额
         * @return 退款结果(xml格式)
         */
        public void Run(string transaction_id, string refund_fee, string pvOpenID, string pvPath)
        {
            if (string.IsNullOrEmpty(transaction_id) || string.IsNullOrEmpty(refund_fee) || string.IsNullOrEmpty(pvOpenID))
            {
                return;
            }
            double lvRefund = 0;

            double.TryParse(refund_fee, out lvRefund);
            if (lvRefund <= 0)
            {
                return;
            }
            int lvRefundFee = (int)(lvRefund * 100);

            try
            {
                WxPayData data = new WxPayData();
                ////微信订单号存在的条件下,则已微信订单号为准
                //data.SetValue("transaction_id", transaction_id);
                //微信订单号不存在,才根据商户订单号去退款
                data.SetValue("out_trade_no", transaction_id);
                WxPayApi lvWxPayApi = new WxPayApi();

                data.SetValue("total_fee", lvRefundFee);                         //订单总金额
                data.SetValue("refund_fee", lvRefundFee);                        //退款金额
                data.SetValue("out_refund_no", lvWxPayApi.GenerateOutTradeNo()); //随机生成商户退款单号
                data.SetValue("op_user_id", WxPayConfig.MCHID);                  //操作员,默认为商户号

                WxPayData result = lvWxPayApi.Refund(data, 6, pvPath);           //提交退款申请给API,接收返回数据
            }
            catch (Exception ex)
            {
            }
            return;
        }