1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- using System;
- namespace GxPress.Common.WechatPay
- {
- public class NativePay
- {
- /**
- * 生成直接支付url,支付url有效期为2小时,模式二
- * @param productId 商品ID
- * @return 模式二URL
- */
- public string GetPayUrl(string productId,string productInfo,int userId)
- {
- //Log.Info(this.GetType().ToString(), "Native pay mode 2 url is producing...");
- try
- {
- WxPayData data = new WxPayData();
- data.SetValue("body", productInfo);//商品描述
- data.SetValue("attach", $"{productId}_{userId}");//附加数据
- data.SetValue("out_trade_no", WxPayApi.GenerateOutTradeNo());//随机字符串
- data.SetValue("total_fee", 1);//总金额
- data.SetValue("time_start", DateTime.Now.ToString("yyyyMMddHHmmss"));//交易起始时间
- data.SetValue("time_expire", DateTime.Now.AddMinutes(10).ToString("yyyyMMddHHmmss"));//交易结束时间
- data.SetValue("goods_tag", "jjj");//商品标记
- data.SetValue("trade_type", "NATIVE");//交易类型
- data.SetValue("product_id", productId);//商品ID
- WxPayData result = WxPayApi.UnifiedOrder(data);//调用统一下单接口
- string url = result.GetValue("code_url").ToString();//获得统一下单接口返回的二维码链接
- //Log.Info(this.GetType().ToString(), "Get native pay mode 2 url : " + url);
- return url;
- }
- catch (System.Exception ex)
- {
- throw new Common.Exceptions.BusinessException(ex.Message);
- }
- }
- /***
- * 申请退款完整业务流程逻辑
- * @param transaction_id 微信订单号(优先使用)
- * @param out_trade_no 商户订单号
- * @param total_fee 订单总金额
- * @param refund_fee 退款金额
- * @return 退款结果(xml格式)
- */
- public string Refund(string transaction_id, string out_trade_no, string total_fee, string refund_fee)
- {
- // Log.Info("Refund", "Refund is processing...");
- WxPayData data = new WxPayData();
- if (!string.IsNullOrEmpty(transaction_id))//微信订单号存在的条件下,则已微信订单号为准
- {
- data.SetValue("transaction_id", transaction_id);
- }
- else//微信订单号不存在,才根据商户订单号去退款
- {
- data.SetValue("out_trade_no", out_trade_no);
- }
- data.SetValue("total_fee", int.Parse(total_fee));//订单总金额
- data.SetValue("refund_fee", int.Parse(refund_fee));//退款金额
- data.SetValue("out_refund_no", WxPayApi.GenerateOutTradeNo());//随机生成商户退款单号
- data.SetValue("op_user_id", WxPayConfig.GetConfig().GetMchID());//操作员,默认为商户号
- WxPayData result = WxPayApi.Refund(data);//提交退款申请给API,接收返回数据
- // Log.Info("Refund", "Refund process complete, result : " + result.ToXml());
- return result.ToPrintStr();
- }
-
- }
- }
|