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); }
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); }
public virtual RefoundResult Refound(RefoundParameter parameter) { throw new NotImplementedException(); }