Example #1
0
        public override async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
        {
            await Task.CompletedTask;
            //如果需要异步从其它位置获取 建议放在异步拦截器里
            CCBPayOptions options = context.HttpContext.RequestServices.GetRequiredService <CCBPayOptions>();


            await next();
        }
Example #2
0
        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();
            }
        }
Example #3
0
        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));
        }
Example #4
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 }));
        }