public override async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next) { await Task.CompletedTask; //如果需要异步从其它位置获取 建议放在异步拦截器里 CCBPayOptions options = context.HttpContext.RequestServices.GetRequiredService <CCBPayOptions>(); await next(); }
static async System.Threading.Tasks.Task Main(string[] args) { string ss = HMACSHA256Hash.HashToBase64("https://octodex.github.com/images/codercat.jpg", "secretkey"); Console.WriteLine(ss); Console.ReadKey(); Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); HttpApi.Register <ICCBEBS5Contract>(); ICCBEBS5Contract ccbPayClient = HttpApi.Resolve <ICCBEBS5Contract>(); CCBPayOptions options = new CCBPayOptions(); while (true) { Func <string> y = () => { Console.WriteLine("请输入退款订单"); return(Console.ReadLine()); }; Func <decimal> x = () => { Console.WriteLine("请输入退款金额"); return(decimal.Parse(Console.ReadLine())); }; CCBRefundRequest refundRequest = new CCBRefundRequest() { CUST_ID = options.MerchantId, USER_ID = "", PASSWORD = "", REQUEST_SN = DateTime.Now.ToString("yyMMddHHmmssffff"), TX_INFO = new CCBRefundRequest.Content { ORDER = y.Invoke(), MONEY = x.Invoke(), } }; CCBRefundResponse result = await ccbPayClient.Refund(ebsHttpEndpoint : "http://192.168.0.205:30001", new CCBEBS5HttpRequest <CCBRefundRequest>(refundRequest)); Console.ReadKey(); } }
public async Task <JsonResult> RefundAsync([FromServices] ICCBEBS5Contract cCBEBS5Contract, string ebsHttpEndpoint, [FromServices] CCBPayOptions options, [FromBody] CCBRefundRequest request) { CCBRefundRequest refundRequest = new CCBRefundRequest() { CUST_ID = options.MerchantId, USER_ID = "", PASSWORD = "", REQUEST_SN = DateTime.Now.ToString("yyMMddHHmmssffff"), TX_INFO = new CCBRefundRequest.Content { ORDER = request.TX_INFO.ORDER, MONEY = request.TX_INFO.MONEY, } }; CCBRefundResponse result = await cCBEBS5Contract.Refund(ebsHttpEndpoint, new CCBEBS5HttpRequest <CCBRefundRequest>(refundRequest)); return(Json(result)); }
public async Task <JsonResult> PrePayAsync([FromServices] ICCBPayContract cCBPayContract, [FromServices] CCBPayOptions options, [FromBody] PrePayRequest request) { CCBPrePayRequest prePayRequest = new CCBPrePayRequest() { MERCHANTID = options.MerchantId, POSID = options.PosId, BRANCHID = options.BranchId, PAYMENT = request.Amount, ORDERID = DateTime.Now.ToString("yyyyMMddHHmmssf"), RETURNTYPE = EnumReturnType.Json }; CCBPrePayResponse result = await cCBPayContract.PrePay(new CCBSignSettings() { Last30OfPublicKey = options.Last30OfPublicKey }, prePayRequest); string qrUrlPrefix = "https://ibsbjstar.ccb.com.cn/CCBIS/QR?QRCODE=CCB"; switch (prePayRequest.RETURNTYPE) { case EnumReturnType.Default: //直接输出页面 break; case EnumReturnType.Json: //在这里拿到QR内容,在前端会因为跨域禁止 if (result.SUCCESS && !string.IsNullOrWhiteSpace(result.PAYURL)) { CCBGetMergeChannelRedirectResponse getMergeChannelRedirectResponse = await cCBPayContract.GetMergeChannelRedirectUrl(result.PAYURL); getMergeChannelRedirectResponse.QRURL = qrUrlPrefix + getMergeChannelRedirectResponse.QRURL; return(Json(new { Type = "MakeQR", Content = getMergeChannelRedirectResponse })); } break; case EnumReturnType.QRCodeOfMergeChannelHtml: //直接输出页面 break; case EnumReturnType.JsonWithQRCodeOfMergeChannelUrl: if (result.SUCCESS && !string.IsNullOrWhiteSpace(result.PAYURL)) { CCBGetMergeChannelRedirectResponse getMergeChannelRedirectResponse = await cCBPayContract.GetMergeChannelRedirectUrl(result.PAYURL); getMergeChannelRedirectResponse.QRURL = Uri.UnescapeDataString(getMergeChannelRedirectResponse.QRURL); return(Json(new { Type = "Redirect", Content = getMergeChannelRedirectResponse })); } break; default: break; } return(Json(new { Type = "ReWritDOM", Content = result.Raw })); }