多种在线支付模式退款整合

小Z最近在做微信支付和支付宝的退款整合,其中公司申请的微信支付中移动支付和Web支付又用到了两个AppId,所以目前小Z只是简单的引用了代码,后期还需要对于代码进行重构,以使得代码结构更加合理,可读性更强。

两种支付的退款流程有所区别,在自身系统的业务已经处理完用户退款申请和审核之后,进行退款操作,调用小Z支付中心的WebAPI接口,其中微信会通过Http请求直接向微信支付端发起退款操作,而支付宝需要构造出请求页面,调用出即时到账有密退款,填写支付密码后,完成退款申请,其后支付宝会进行服务台的支付回调。

以下是WebAPI的代码:

<span style="white-space:pre">	</span>/// <summary>
        /// 账单退款
        /// </summary>
        /// <param name="billId"></param>
        /// <param name="refundRecordId"></param>
        /// <returns></returns>
        [HttpGet]
        [Route("Bills/BillRefund")]
        public IHttpActionResult RefundBill(Guid billId, Guid refundRecordId)
        {
            var bill = _billServices.GetByKey(billId);
            switch (bill.PayType)
            {
                case "WeChatPay":
                    var result_WeChatPay_WEB_refund = PayCenter.Api.WeChatPay_WEB.Refund.Run(bill.TransactionId, bill.BillCode, ((int)(bill.Amount * 100)).ToString(), ((int)(bill.Amount * 100)).ToString(), refundRecordId.ToString());
                    if (result_WeChatPay_WEB_refund.GetValue("result_code").ToString() == "SUCCESS" && result_WeChatPay_WEB_refund.GetValue("return_msg").ToString() == "OK")
                    {
                        var refund_id = result_WeChatPay_WEB_refund.GetValue("refund_id").ToString();
                        var refund_fee = Convert.ToDecimal(result_WeChatPay_WEB_refund.GetValue("refund_fee").ToString()) / 100;
                        var out_refund_no = result_WeChatPay_WEB_refund.GetValue("out_refund_no").ToString();
                        _billServices.RefundBill(billId, out_refund_no, refund_id, refund_fee);
                        return Ok(ApiResponse.Ok("退款成功"));
                    }
                    else
                    {
                        return Ok(ApiResponse.InValidRequest("退款失败"));
                    }
                case "WeChatPayMobile":
                    var result = PayCenter.Api.WeChatPay.Refund.Run(bill.TransactionId, bill.BillCode, ((int)(bill.Amount * 100)).ToString(), ((int)(bill.Amount * 100)).ToString(), refundRecordId.ToString());
                    if (result.GetValue("result_code").ToString() == "SUCCESS" && result.GetValue("return_msg").ToString() == "OK")
                    {
                        var refund_id = result.GetValue("refund_id").ToString();
                        var refund_fee = Convert.ToDecimal(result.GetValue("refund_fee").ToString()) / 100;
                        var out_refund_no = result.GetValue("out_refund_no").ToString();
                        _billServices.RefundBill(billId, out_refund_no, refund_id, refund_fee);
                        return Ok(ApiResponse.Ok("退款成功"));
                    }
                    else
                    {
                        return Ok(ApiResponse.InValidRequest("退款失败"));
                    }
                case "AliPay":
                    return Redirect(Com.Alipay.Config.RefundFastPayByPlatformPwdUrl + "?billId=" + billId);
                default:
                    break;
            }

            return Ok(ApiResponse.InValidRequest("退款失败"));
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值