/// <summary> /// 支付前调用方法 /// </summary> /// <param name="requestDto"></param> /// <returns></returns> public async Task <GetWeiXinPaymentBeforeResponseDto> GetPaymentBeforeAsync(string userId, GetWeiXinPaymentBeforeRequestDto requestDto) { //商品订单 string outTradeNo = $"GDSPDD_{GetRandomString(10, false, false, true, false, "")}{DateTime.Now.ToString("yyyyMMddHHmmss")}"; //交易流水 string TransactionNumber = $"GDJYLS_{GetRandomString(10, false, false, true, false, "")}{DateTime.Now.ToString("yyyyMMddHHmmss")}"; //随机字符串 string nonceStr = GetRandomString(16, false, true, true, false, string.Empty); TransactionFlowingModel model = new TransactionFlowingModel(); model.Amount = 1; model.OrgGuid = string.Empty; model.CreatedBy = userId; model.LastUpdatedBy = userId; model.TransactionFlowingGuid = Guid.NewGuid().ToString("N"); model.OutTradeNo = outTradeNo; model.TransactionNumber = TransactionNumber; model.TransactionStatus = "WaitForPayment"; model.Channel = "微信支付"; UnifiedorderResult unifie = await UnifiedorderAsync(outTradeNo, nonceStr, requestDto); if (unifie.IsReturnCodeSuccess()) { model.ChannelNumber = unifie.prepay_id; model.Insert(); GetWeiXinPaymentBeforeResponseDto result = new GetWeiXinPaymentBeforeResponseDto { appId = this.AppID, nonceStr = nonceStr, timeStamp = Convert.ToInt32(GetTimeSpan().TotalSeconds), package = $"prepay_id={unifie.prepay_id}" }; string sign = TenPayV3.GetJsPaySign(result.appId, result.timeStamp.ToString(), result.nonceStr, result.package, MerchantSecret, "MD5"); result.sign = sign; result.signType = "MD5"; return(result); } else { } return(null); }
/// <summary> /// 订单查询 /// </summary> /// <param name="requestDto"></param> /// <returns></returns> public async Task <OrderQueryResult> OrderQuery(GetWeiXinPaymentBeforeRequestDto requestDto) { TenPayV3OrderQueryRequestData data = new TenPayV3OrderQueryRequestData(AppID, MerchantNumber, "wx0818171559664608e39c01920461325676", GetRandomString(16, false, true, true, false, string.Empty), "GDSPDD_IKJRMNLCCJ20190408181709", MerchantSecret); return(TenPayV3.OrderQuery(data)); }
/// <summary> /// 统一下单 /// </summary> /// <param name="order_no">order_no</param> /// <returns></returns> public async Task <UnifiedorderResult> UnifiedorderAsync(string outTradeNo, string nonceStr, GetWeiXinPaymentBeforeRequestDto requestDto) { TenPayV3UnifiedorderRequestData data = new TenPayV3UnifiedorderRequestData(AppID, MerchantNumber, "医疗用品", outTradeNo, 1, "", "http://api-test.ghysjt.com/api/v1/mallpay/MallWeiXinPay/PaymentBackFunction", Senparc.Weixin.TenPay.TenPayV3Type.JSAPI, requestDto.openId, MerchantSecret, nonceStr, "WEB", DateTime.Now, DateTime.Now.AddHours(1), "商品列表", "国丹医疗", "CNY", null, null, false); data.SignType = "MD5"; return(await TenPayV3.UnifiedorderAsync(data)); }
public async Task <IActionResult> GetPaymentBefore(GetWeiXinPaymentBeforeRequestDto requestDto) { return(Success <GetWeiXinPaymentBeforeResponseDto>(await new WeiXinPayBiz().GetPaymentBeforeAsync(this.UserID, requestDto))); }