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 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")); } }