public void ChargeOrderRequest()
        {
            ChargeOrderRequest Req;

            AutoGen.ChargeOrderRequest D;

            // Test the first constructor.
            Req = new ChargeOrderRequest(MERCHANT_ID, MERCHANT_KEY, "Sandbox", ORDER_NUMBER);
            D   = (AutoGen.ChargeOrderRequest)EncodeHelper.Deserialize(Req.GetXml());
            Assert.AreEqual(ORDER_NUMBER, D.googleordernumber);
            Assert.AreEqual(null, D.amount);

            // Test the second constructor.
            Req = new ChargeOrderRequest(MERCHANT_ID, MERCHANT_KEY, "Sandbox", ORDER_NUMBER, "GBP", 10.2m);
            D   = (AutoGen.ChargeOrderRequest)EncodeHelper.Deserialize(Req.GetXml());
            Assert.AreEqual(ORDER_NUMBER, D.googleordernumber);
            Assert.AreEqual("GBP", D.amount.currency);
            Assert.AreEqual(10.2m, D.amount.Value);

            Req = new ChargeOrderRequest(ORDER_NUMBER);
            D   = (AutoGen.ChargeOrderRequest)EncodeHelper.Deserialize(Req.GetXml());
            Assert.AreEqual(Req.GoogleOrderNumber, D.googleordernumber);

            Req = new ChargeOrderRequest(ORDER_NUMBER, "USD", 12.975m);
            D   = (AutoGen.ChargeOrderRequest)EncodeHelper.Deserialize(Req.GetXml());
            Assert.AreEqual(Req.GoogleOrderNumber, D.googleordernumber);
            Assert.AreEqual(Req.Amount, 12.98m);
        }
コード例 #2
0
        public static Transaction ChargeOrder(GoogleCheckout instance, CaptureTransactionRequest captureRequest)
        {
            string env         = instance.UseTestMode ? "Sandbox" : "Production";
            string merchantId  = instance.MerchantID;
            string merchantKey = instance.MerchantKey;
            string orderNum    = captureRequest.Payment.Order.GoogleOrderNumber;
            string currency    = captureRequest.Payment.CurrencyCode;

            if (currency == null || currency.Length == 0)
            {
                currency = "USD";
            }
            LSDecimal amount           = captureRequest.Amount;
            LSDecimal remainingCapture = captureRequest.Payment.Transactions.GetTotalAuthorized()
                                         - captureRequest.Payment.Transactions.GetTotalCaptured();

            ChargeOrderRequest request = new ChargeOrderRequest(merchantId, merchantKey, env, orderNum, currency, amount);

            Util.GCheckoutResponse response = request.Send();

            Transaction transaction = new Transaction();

            transaction.Amount = captureRequest.Amount;
            transaction.ProviderTransactionId = orderNum;
            transaction.PaymentGatewayId      = instance.PaymentGatewayId;
            if (remainingCapture > amount)
            {
                transaction.TransactionType = TransactionType.PartialCapture;
            }
            else
            {
                transaction.TransactionType = TransactionType.Capture;
            }

            if (response.IsGood)
            {
                transaction.TransactionStatus = TransactionStatus.Pending;
            }
            else
            {
                transaction.TransactionStatus = TransactionStatus.Failed;
                transaction.ResponseMessage   = response.ErrorMessage;
            }

            return(transaction);
        }
コード例 #3
0
    private static void HandleOrderStateChangeNotification(GCheckout.AutoGen.OrderStateChangeNotification notification)
    {
        // Charge Order If Chargeable
        if ((notification.previousfinancialorderstate == GCheckout.AutoGen.FinancialOrderState.REVIEWING) &&
            (notification.newfinancialorderstate == GCheckout.AutoGen.FinancialOrderState.CHARGEABLE))
        {
            ChargeOrderRequest oneChargeOrderRequest = new ChargeOrderRequest(notification.googleordernumber);
            GCheckout.Util.GCheckoutResponse oneGCheckoutResponse = oneChargeOrderRequest.Send();
        }

        // Update License If Charged
        if ((notification.previousfinancialorderstate == GCheckout.AutoGen.FinancialOrderState.CHARGING) &&
            (notification.newfinancialorderstate == GCheckout.AutoGen.FinancialOrderState.CHARGED))
        {
            // TODO: For each shopping cart item received in the NewOrderNotification, authorize the license
        }

        // TODO: Add custom processing for this notification type
    }