public virtual ActionResult List(ListPrePays request) { if (ModelState.IsValid) { ModelState.Clear(); var prePayRequest = new PrePayRequest(); if (request.State != Globals.All) { prePayRequest.State = request.State; } var currentUser = _securityHelper.GetCurrentUser(); var shopUser = currentUser as ShopUserModel; if (shopUser != null) { prePayRequest.ShopId = shopUser.ShopId; } var accountUser = currentUser as AccountUserModel; if (accountUser != null) { var accountId = accountUser.Accounts.Select(x => x.AccountId).First(); prePayRequest.AccountId = accountId; } var query = this._prePayService.Query(prePayRequest); request.List = query.ToList(request, x => new ListPrePay(x)); } return(View("List", request)); }
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 })); }