Beispiel #1
0
        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));
        }
Beispiel #2
0
        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 }));
        }