123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- using System.ComponentModel.DataAnnotations.Schema;
- using System.Data.Common;
- using System.Linq;
- using System;
- using System.Collections.Generic;
- using System.Threading.Tasks;
- namespace WingPaymentService.Common.WeChat
- {
- public class WxPayNativePay
- {
- private WxPayApi _wxPayApi = new WxPayApi();
-
-
-
-
-
-
-
-
-
- public async Task<(string,string)> GetWebPayUrl(string body, int totalAmount, string outTradeNo, string recordCode, string attach, string deviceInfo)
- {
- WxPayData data = new WxPayData();
- data.SetValue("body", body);
- data.SetValue("attach", attach);
- data.SetValue("out_trade_no", outTradeNo);
- data.SetValue("total_fee", totalAmount);
-
- var startBeijingTime = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(DateTime.Now, TimeZoneInfo.Local.Id, "China Standard Time");
- data.SetValue("time_start", startBeijingTime.ToString("yyyyMMddHHmmss"));
- data.SetValue("time_expire", startBeijingTime.AddMinutes(10).ToString("yyyyMMddHHmmss"));
-
- data.SetValue("trade_type", "NATIVE");
- data.SetValue("device_info", deviceInfo);
- data.SetValue("pay_record_code", recordCode);
- WxPayData result = await _wxPayApi.UnifiedOrder(data);
- var errorCode = result.GetValue("err_code_des")?.ToString();
- if (!string.IsNullOrWhiteSpace(errorCode))
- {
- throw new Exception(errorCode);
- }
- string url = result.GetValue("code_url")?.ToString();
- return (url, data.ToJson());
- }
-
-
-
-
-
-
-
-
-
- public async Task<(string,string)> GetWapPayUrl(string body, int totalAmount, string outTradeNo, string recordCode, string attach, string deviceInfo)
- {
- WxPayData data = new WxPayData();
- data.SetValue("body", body);
- data.SetValue("attach", attach);
- data.SetValue("out_trade_no", outTradeNo);
- data.SetValue("total_fee", totalAmount);
-
- var startBeijingTime = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(DateTime.Now, TimeZoneInfo.Local.Id, "China Standard Time");
- data.SetValue("time_start", startBeijingTime.ToString("yyyyMMddHHmmss"));
- data.SetValue("time_expire", startBeijingTime.AddMinutes(10).ToString("yyyyMMddHHmmss"));
-
- data.SetValue("trade_type", "MWEB");
- data.SetValue("device_info", deviceInfo);
- data.SetValue("pay_record_code", recordCode);
- WxPayData result = await _wxPayApi.UnifiedOrder(data);
- var errorCode = result.GetValue("err_code_des")?.ToString();
- if (!string.IsNullOrWhiteSpace(errorCode))
- {
- throw new Exception(errorCode);
- }
- string url = result.GetValue("mweb_url")?.ToString();
- return (url, data.ToJson());
- }
-
-
-
-
-
- public async Task<WxPayData> OrderQuery(string outTradeNo)
- {
- WxPayData data = new WxPayData();
- data.SetValue("out_trade_no", outTradeNo);
- WxPayData result = await _wxPayApi.OrderQuery(data);
- return result;
- }
-
-
-
-
-
- public async Task<string> RefundQuery(string outTradeNo)
- {
- WxPayData data = new WxPayData();
- data.SetValue("out_trade_no", outTradeNo);
- WxPayData result = await _wxPayApi.RefundQuery(data);
- return result.ToJson();
- }
-
- private string ToUrlParams(SortedDictionary<string, object> map)
- {
- string buff = "";
- foreach (KeyValuePair<string, object> pair in map)
- {
- buff += pair.Key + "=" + pair.Value + "&";
- }
- buff = buff.Trim('&');
- return buff;
- }
- }
- }
|