Пример #1
0
        public IPaymentResponse GetHtmlDetail(RenderContext context)
        {
            if (this.Setting == null)
            {
                return(null);
            }

            // todo 需要转换为货币的最低单位
            // square APi 货币的最小面额指定。例如,美元金额以美分指定,https://developer.squareup.com/docs/build-basics/working-with-monetary-amounts
            var amount = new Money {
                Amount = SquareCommon.GetSquareAmount(decimal.Parse(context.Request.Get("totalAmount"))), Currency = context.Request.Get("currency")
            };

            var squareResponseNonce = context.Request.Get("nonce");

            var result = PaymentsApi.CreatPayment(squareResponseNonce, amount, Setting);

            var deserializeResult = JsonConvert.DeserializeObject <PaymentResponse>(result);

            if (deserializeResult.Payment.Status == "APPROVED" || deserializeResult.Payment.Status == "COMPLETED")
            {
                var res = new PaidResponse();
                res.paymemtMethodReferenceId = deserializeResult.Payment.ID;
                return(res);
            }
            else if (deserializeResult.Payment.Status == "CANCELED" || deserializeResult.Payment.Status == "FAILED")
            {
                return(new FailedResponse("FAILED"));
            }
            else
            {
                // TODO: please check.
                return(new FailedResponse("No response"));
            }
        }
        public IPaymentResponse CheckoutFinished(RenderContext context)
        {
            var result = new PaidResponse();

            var trasactionId = context.Request.QueryString["pg_id"];

            result.paymemtMethodReferenceId = trasactionId;
            return(result);
        }
Пример #3
0
        public IPaymentResponse CreatPayment(RenderContext context)
        {
            if (this.Setting == null)
            {
                return(null);
            }

            // square 货币的最小面额指定。https://developer.squareup.com/docs/build-basics/working-with-monetary-amounts
            var currency     = context.Request.Get("currency");
            var totalAmount  = decimal.Parse(context.Request.Get("totalAmount"));
            var requestIdStr = context.Request.Get("paymentRequestId");
            var amount       = new Money
            {
                Amount   = CurrencyDecimalPlaceConverter.ToMinorUnit(currency, totalAmount),
                Currency = currency
            };

            var deserializeResult = PaymentsApi.CreatPayment(context.Request.Get("nonce"), amount, Setting, requestIdStr);

            // 把paymentID赋值到request referenceID 为了后面 checkStatus 使用
            var  paymentRequestIdStr = context.Request.Get("paymentRequestId");
            Guid paymentRequestId;

            if (Guid.TryParse(paymentRequestIdStr, out paymentRequestId))
            {
                var request = PaymentManager.GetRequest(paymentRequestId, context);
                request.ReferenceId = deserializeResult.Payment.ID;
                PaymentManager.UpdateRequest(request, context);
            }

            if (deserializeResult.Payment.Status == "APPROVED" || deserializeResult.Payment.Status == "COMPLETED")
            {
                var res = new PaidResponse();
                res.paymemtMethodReferenceId = deserializeResult.Payment.ID;
                return(res);
            }
            else if (deserializeResult.Payment.Status == "CANCELED" || deserializeResult.Payment.Status == "FAILED")
            {
                return(new FailedResponse("FAILED"));
            }
            else
            {
                // TODO: please check.
                return(new FailedResponse("No response"));
            }
        }