private void membershipGrantReturned(QAMembershipGrantOperation operation, HttpResponse httpResponse)
    {
        PurchaseResponse purchaseResponse = operation.PurchaseResponse;

        Service.Get <EventDispatcher>().DispatchEvent(new IAPServiceEvents.PurchaseReturned(purchaseResponse));
        refreshSFSRights(purchaseResponse.rights);
    }
Esempio n. 2
0
        public override async Task <PurchaseResponse> GetPurchases(PurchaseRequest request, ServerCallContext context)
        {
            if (!Guid.TryParse(request.Transaction.Id, out Guid id))
            {
                throw new ArgumentException($"invalid transaction id {request.Transaction.Id}");
            }

            var response  = new PurchaseResponse();
            var purchases = id == Guid.Empty ?
                            await this.repo.GetPurchasesAsync() :
                            await this.repo.GetPurchasesAsync(new Shared.DAL.Transaction {
                ID = id
            });

            var repeated = purchases.Select(o => new Purchase
            {
                ProductId     = o.ProductID.ToString(),
                TransactionId = o.TransactionID.ToString(),
                Count         = o.Count,
                Price         = Convert.ToInt32(o.Price),
                Created       = Timestamp.FromDateTime(o.Created)
            });

            response.Purchases.AddRange(repeated);
            return(response);
        }
Esempio n. 3
0
        private void HandleFinishedGetLastTransaction(TransactionFlowState txState)
        {
            if (txState.Response != null)
            {
                var gltResponse = new GetLastTransactionResponse(txState.Response);

                if (_lastCmd.Length > 1)
                {
                    // User specified that he intended to retrieve a specific tx by pos_ref_id
                    // This is how you can use a handy function to match it.
                    var success = _spi.GltMatch(gltResponse, _lastCmd[1]);
                    if (success == Message.SuccessState.Unknown)
                    {
                        Console.WriteLine("# Did not retrieve Expected Transaction. Here is what we got:");
                    }
                    else
                    {
                        Console.WriteLine("# Tx Matched Expected Purchase Request.");
                    }
                }

                var purchaseResponse = new PurchaseResponse(txState.Response);
                Console.WriteLine("# Scheme: {0}", purchaseResponse.SchemeName);
                Console.WriteLine("# Response: {0}", purchaseResponse.GetResponseText());
                Console.WriteLine("# RRN: {0}", purchaseResponse.GetRRN());
                Console.WriteLine("# Error: {0}", txState.Response.GetError());
                Console.WriteLine("# Customer Receipt:");
                Console.WriteLine(purchaseResponse.GetCustomerReceipt().TrimEnd());
            }
            else
            {
                // We did not even get a response, like in the case of a time-out.
                Console.WriteLine("# Could Not Retrieve Last Transaction.");
            }
        }
    private void checkRestoreReturned(CheckRestoreListOperation operation, HttpResponse httpResponse)
    {
        PurchaseResponse purchaseResponse = operation.PurchaseResponse;

        Service.Get <EventDispatcher>().DispatchEvent(new IAPServiceEvents.CheckRestoreReturned(purchaseResponse));
        refreshSFSRights(purchaseResponse.rights);
    }
Esempio n. 5
0
        public Order(
            string buyerId,
            Address shipToAddress,
            PaymentInfo paymentDetails,
            List <OrderItem> items,
            OrderStatus status,
            Purchase purchase,
            PurchaseResponse purchaseResponse,
            OrderTotals totals)
        {
            Guard.Against.NullOrEmpty(buyerId, nameof(buyerId));
            Guard.Against.Null(shipToAddress, nameof(shipToAddress));
            Guard.Against.Null(items, nameof(items));
            Guard.Against.Null(paymentDetails, nameof(paymentDetails));
            Guard.Against.Null(purchase, nameof(purchase));

            BuyerId              = buyerId;
            ShipToAddress        = shipToAddress;
            PaymentDetails       = paymentDetails;
            Status               = status;
            _orderItems          = items;
            RiskPurchase         = purchase;
            RiskPurchaseResponse = purchaseResponse;
            SubTotal             = totals.SubTotal;
            Tax   = totals.Tax;
            Total = totals.Total;
        }
        public Order(
            string buyerId,
            Address shipToAddress,
            PaymentInfo paymentDetails,
            List <OrderItem> items,
            OrderStatus status,
            Purchase purchase,
            PurchaseResponse purchaseResponse,
            OrderTotals totals)
        {
            if (string.IsNullOrEmpty(buyerId))
            {
                throw new ArgumentNullException(nameof(buyerId));
            }

            ShipToAddress  = shipToAddress ?? throw new ArgumentNullException(nameof(shipToAddress));
            PaymentDetails = paymentDetails ?? throw new ArgumentNullException(nameof(paymentDetails));
            RiskPurchase   = purchase ?? throw new ArgumentNullException(nameof(purchase));
            _orderItems    = items ?? throw new ArgumentNullException(nameof(items));

            BuyerId = buyerId;
            Status  = status;
            RiskPurchaseResponse = purchaseResponse;
            SubTotal             = totals.SubTotal;
            Tax   = totals.Tax;
            Total = totals.Total;
        }
Esempio n. 7
0
        /// <summary>
        /// Add Details of Purchase
        /// </summary>
        /// <param name="userID">UserID</param>
        /// <param name="purchase">Purchase Data</param>
        /// <returns>If Data added successfully return Response Data else null or Exception</returns>
        public async Task <PurchaseResponse> Purchase(int userID, int cartID, PurchaseRequest purchase)
        {
            try
            {
                PurchaseResponse responseData = null;
                SQLConnection();
                using (SqlCommand cmd = new SqlCommand("AddPurchaseDetails", conn))
                {
                    cmd.CommandType = System.Data.CommandType.StoredProcedure;
                    cmd.Parameters.AddWithValue("@UserID", userID);
                    cmd.Parameters.AddWithValue("@CartID", cartID);
                    cmd.Parameters.AddWithValue("@IsUsed", true);
                    cmd.Parameters.AddWithValue("@BookID", purchase.BookID);
                    cmd.Parameters.AddWithValue("@Address", purchase.Address);

                    conn.Open();
                    SqlDataReader dataReader = await cmd.ExecuteReaderAsync();

                    while (dataReader.Read())
                    {
                        responseData = new PurchaseResponse
                        {
                            PurchaseID = Convert.ToInt32(dataReader["PurchaseID"]),
                            BookID     = Convert.ToInt32(dataReader["BookID"]),
                            Address    = dataReader["Address"].ToString()
                        };
                    }
                };
                return(responseData);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
Esempio n. 8
0
        public override async Task <PurchaseResponse> AddPurchase(PurchaseRequest request, ServerCallContext context)
        {
            if (!Guid.TryParse(request.Purchase.ProductId, out Guid productID))
            {
                throw new ArgumentException($"invalid product id {request.Purchase.ProductId}");
            }

            if (!Guid.TryParse(request.Purchase.TransactionId, out Guid transactionID))
            {
                throw new ArgumentException($"invalid transaction id {request.Purchase.TransactionId}");
            }

            var purchase = new Shared.DAL.Purchase
            {
                ProductID     = productID,
                TransactionID = transactionID,
                Count         = request.Purchase.Count,
                Price         = request.Purchase.Price,
                Created       = request.Purchase.Created.ToDateTime()
            };
            var response = new PurchaseResponse();
            var entry    = await this.repo.AddPurchaseAsync(purchase);

            response.Purchases.Add(new Purchase
            {
                ProductId     = entry.ProductID.ToString(),
                TransactionId = entry.TransactionID.ToString(),
                Count         = entry.Count,
                Price         = Convert.ToInt32(entry.Price),
                Created       = Timestamp.FromDateTime(entry.Created)
            });
            return(response);
        }
    public static PurchaseResponse Purchase()
    {
        string orderUrl = GetOrderUrl();

        Debug.Log(orderUrl);

        //Get purchase form URL:
        HttpWebResponse orderResponse     = SendHttpRequestToCortex.SendGetRequest(orderUrl);
        string          orderResponseJSON = SendHttpRequestToCortex.GetResponseBody(orderResponse);

        Response orderResponseObject = (Response)RequestUtils.deserialize(orderResponseJSON, typeof(Response));
        string   purchaseFormUrl     = "";

        foreach (Response.Links linkObj in orderResponseObject.links)
        {
            if (linkObj.rel.Equals("purchaseform"))
            {
                purchaseFormUrl = linkObj.href;
            }
        }

        //Get submit order action URL:
        HttpWebResponse purchaseFormResponse     = SendHttpRequestToCortex.SendGetRequest(purchaseFormUrl);
        string          purchaseFormResponseJSON = SendHttpRequestToCortex.GetResponseBody(purchaseFormResponse);

        Response purchaseFormResponseObject = (Response)RequestUtils.deserialize(purchaseFormResponseJSON, typeof(Response));
        string   submitOrderActionUrl       = "";

        foreach (Response.Links linkObj in purchaseFormResponseObject.links)
        {
            if (linkObj.rel.Equals("submitorderaction"))
            {
                submitOrderActionUrl = linkObj.href;
            }
        }
        Debug.Log(purchaseFormResponseJSON);
        Debug.Log(submitOrderActionUrl);

        //Submit order to make purchase
        submitOrderActionUrl = submitOrderActionUrl + "?followLocation";
        HttpWebResponse submitOrderActionResponse = SendHttpRequestToCortex.SendPostRequest(submitOrderActionUrl, emptyJsonForm);

        Debug.Log(submitOrderActionResponse.StatusCode);

        string submitOrderActionResponseJSON = SendHttpRequestToCortex.GetResponseBody(submitOrderActionResponse);

        Debug.Log(submitOrderActionResponseJSON);

        //remove all dashes from json response since C# hates them
        submitOrderActionResponseJSON = submitOrderActionResponseJSON.Replace("-", "");
        Debug.Log(submitOrderActionResponseJSON);

        PurchaseResponse response = (PurchaseResponse)RequestUtils.deserialize(submitOrderActionResponseJSON, typeof(PurchaseResponse));

        Debug.Log(response.monetarytotal[0].amount);
        Debug.Log(response.status);

        return(response);
    }
 public AMN_PurchaseResponse(PurchaseResponse data, string sku) : base(false)
 {
     _requestId   = data.RequestId;
     _userId      = data.AmazonUserData.UserId;
     _marketplace = data.AmazonUserData.Marketplace;
     _status      = data.Status;
     _sku         = sku;
 }
Esempio n. 11
0
    /**
     * Because the IOS api automatically consume a purchase, if was
     * successful it call directly OnConsume without call OnPurchase.
     */
    public void Purchase(string sku)
    {
        if (debug)
        {
            Debug.Log("Purchase " + sku);
        }
        var r = new PurchaseResponse();

        r.ok   = false;
        r.code = CODE_NOT_IMPLEMENTED;
        listener.OnPurchase(r);
    }
Esempio n. 12
0
    //CALLBACKS
    private void PurchaseResponseEvent(PurchaseResponse args)
    {
        string requestId    = args.RequestId;
        string userId       = args.AmazonUserData.UserId;
        string marketplace  = args.AmazonUserData.Marketplace;
        string receiptId    = args.PurchaseReceipt.ReceiptId;
        long   cancelDate   = args.PurchaseReceipt.CancelDate;
        long   purchaseDate = args.PurchaseReceipt.PurchaseDate;
        string sku          = args.PurchaseReceipt.Sku;
        string productType  = args.PurchaseReceipt.ProductType;
        string status       = args.Status;

        amazonUserId    = userId;
        amazonReceiptId = receiptId;

        Status.GetComponent <Text>().text = "RESPONSE!";
        if (receiptId != null)
        {
            BCLogs.GetComponent <Text>().text = "receiptId = " + receiptId;
        }
        else
        {
            BCLogs.GetComponent <Text>().text = "receiptId NULL";
        }

        if (amazonReceiptId != null)
        {
            BCLogs.GetComponent <Text>().text += "\namazonReceiptId = " + amazonReceiptId;
        }
        else
        {
            BCLogs.GetComponent <Text>().text += "\namazonReceiptId NULL";
        }

        if (userId != null)
        {
            BCLogs.GetComponent <Text>().text += "\nuserId = " + userId;
        }
        else
        {
            BCLogs.GetComponent <Text>().text += "\nuserId NULL";
        }

        if (amazonUserId != null)
        {
            BCLogs.GetComponent <Text>().text += "\namazonUserId = " + amazonUserId;
        }
        else
        {
            BCLogs.GetComponent <Text>().text += "\namazonUserId NULL";
        }
    }
Esempio n. 13
0
    private PurchaseResponse ParsePurchase(string json)
    {
        Hashtable        map = (Hashtable)JSON.JsonDecode(json);
        PurchaseResponse r   = new PurchaseResponse();

        Parse(r, map);
        if (r.data != null)
        {
            r.purchaseToken = (string)r.data["purchaseToken"];
            r.productSku    = (string)r.data["productId"];
        }
        return(r);
    }
Esempio n. 14
0
    public void Restore()
    {
        if (debug)
        {
            Debug.Log("Restore");
        }

        var r = new PurchaseResponse();

        r.ok   = false;
        r.code = CODE_NOT_IMPLEMENTED;
        listener.OnPurchase(r);
    }
Esempio n. 15
0
        private void HandleFinishedPurchase(TransactionFlowState txState)
        {
            PurchaseResponse purchaseResponse;

            switch (txState.Success)
            {
            case Message.SuccessState.Success:
                Console.WriteLine($"# WOOHOO - WE GOT PAID!");
                purchaseResponse = new PurchaseResponse(txState.Response);
                Console.WriteLine("# Response: {0}", purchaseResponse.GetResponseText());
                Console.WriteLine("# RRN: {0}", purchaseResponse.GetRRN());
                Console.WriteLine("# Scheme: {0}", purchaseResponse.SchemeName);
                Console.WriteLine("# Customer Receipt:");
                Console.WriteLine(!purchaseResponse.WasCustomerReceiptPrinted() ? purchaseResponse.GetCustomerReceipt().TrimEnd() : "# PRINTED FROM EFTPOS");
                Console.WriteLine("# PURCHASE: {0}", purchaseResponse.GetPurchaseAmount());
                Console.WriteLine("# TIP: {0}", purchaseResponse.GetTipAmount());
                Console.WriteLine("# SURCHARGE: {0}", purchaseResponse.GetSurchargeAmount());
                Console.WriteLine("# CASHOUT: {0}", purchaseResponse.GetCashoutAmount());
                Console.WriteLine("# BANKED NON-CASH AMOUNT: {0}", purchaseResponse.GetBankNonCashAmount());
                Console.WriteLine("# BANKED CASH AMOUNT: {0}", purchaseResponse.GetBankCashAmount());

                break;

            case Message.SuccessState.Failed:
                Console.WriteLine($"# WE DID NOT GET PAID :(");
                if (txState.Response != null)
                {
                    purchaseResponse = new PurchaseResponse(txState.Response);
                    Console.WriteLine("# Error: {0}", txState.Response.GetError());
                    Console.WriteLine("# Error Detail: {0}", txState.Response.GetErrorDetail());
                    Console.WriteLine("# Response: {0}", purchaseResponse.GetResponseText());
                    Console.WriteLine("# RRN: {0}", purchaseResponse.GetRRN());
                    Console.WriteLine("# Scheme: {0}", purchaseResponse.SchemeName);
                    Console.WriteLine("# Customer Receipt:");
                    Console.WriteLine(!purchaseResponse.WasCustomerReceiptPrinted()
                            ? purchaseResponse.GetCustomerReceipt().TrimEnd()
                            : "# PRINTED FROM EFTPOS");
                }
                break;

            case Message.SuccessState.Unknown:
                Console.WriteLine($"# WE'RE NOT QUITE SURE WHETHER WE GOT PAID OR NOT :/");
                Console.WriteLine($"# CHECK THE LAST TRANSACTION ON THE EFTPOS ITSELF FROM THE APPROPRIATE MENU ITEM.");
                Console.WriteLine($"# IF YOU CONFIRM THAT THE CUSTOMER PAID, CLOSE THE ORDER.");
                Console.WriteLine($"# OTHERWISE, RETRY THE PAYMENT FROM SCRATCH.");
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Esempio n. 16
0
    public void CallbackTransactionFailed(string code)
    {
        // Called from Objective-C when a transaction failed
        if (debug)
        {
            Debug.LogError("Purchase Failed");
        }

        PurchaseResponse r = new PurchaseResponse();

        r.ok   = false;
        r.code = code;
        listener.OnPurchase(r);
    }
        public PurchaseResponse MakePurchase(PurchaseRequest purchaseRequest)
        {
            var purchaseResponse = new PurchaseResponse
                                       {
                                           CustomerId = purchaseRequest.CustomerId,
                                           Price = 100,
                                           Message = "Response",
                                           Visits = 10
                                       };

            var streamWriter = new StreamWriter(@"C:\Temp\WS.log", true);
            streamWriter.WriteLine(DateTime.Now + " " + purchaseRequest.CustomerId);
            streamWriter.Close();
            return purchaseResponse;
        }
    public AMN_PurchaseResponse(PurchaseResponse data) : base(true)
    {
        _requestId   = data.RequestId;
        _userId      = data.AmazonUserData.UserId;
        _marketplace = data.AmazonUserData.Marketplace;
        _status      = data.Status;

        if (data.PurchaseReceipt != null)
        {
            _receiptId    = data.PurchaseReceipt.ReceiptId;
            _cancelDate   = data.PurchaseReceipt.CancelDate;
            _purchaseDate = data.PurchaseReceipt.PurchaseDate;
            _sku          = data.PurchaseReceipt.Sku;
            _productType  = data.PurchaseReceipt.ProductType;
        }
    }
        public void AddPurchase()
        {
            PurchaseRequest request = new PurchaseRequest();

            request.Purchase = _view.purchase;
            PurchaseResponse response = purchaseService.InsertOnPurchase(request);

            if (response.Success)
            {
                _view.SuccessPurchase("Bien man");
            }
            else
            {
                _view.ErrorPurchase(string.Format("{0}", response.Exception.Message));
            }
        }
Esempio n. 20
0
        public void PurchaseResponse_OnValidResponse_ReturnObjects()
        {
            // arrange
            var          secrets = SpiClientTestUtils.SetTestSecrets();
            const string jsonStr = @"{""message"":{""data"":{""account_type"":""SAVINGS"",""auth_code"":""278045"",""bank_cash_amount"":200,""bank_date"":""06062019"",""bank_noncash_amount"":1200,""bank_settlement_date"":""06062019"",""bank_time"":""110750"",""card_entry"":""MAG_STRIPE"",""cash_amount"":200,""currency"":""AUD"",""customer_receipt"":""EFTPOS FROM BANK SA\r\nMerchant4\r\n213 Miller Street\r\nSydney 2060\r\nAustralia\r\n\r\nTIME 06JUN19   11:07\r\nMID         22341842\r\nTSP     100612348842\r\nRRN     190606001102\r\nDebit(S)         SAV\r\nCARD............5581\r\nAUTH          278045\r\n\r\nPURCHASE    AUD10.00\r\nCASH         AUD2.00\r\nSURCHARGE    AUD2.00\r\nTOTAL       AUD14.00\r\n\r\n   (000) APPROVED\r\n\r\n  *CUSTOMER COPY*\r\n\r\n\r\n\r\n\r\n\r\n\r\n"",""customer_receipt_printed"":false,""expiry_date"":""0822"",""host_response_code"":""000"",""host_response_text"":""APPROVED"",""informative_text"":""                "",""masked_pan"":""............5581"",""merchant_acquirer"":""EFTPOS FROM BANK SA"",""merchant_addr"":""213 Miller Street"",""merchant_city"":""Sydney"",""merchant_country"":""Australia"",""merchant_id"":""22341842"",""merchant_name"":""Merchant4"",""merchant_postcode"":""2060"",""merchant_receipt"":""EFTPOS FROM BANK SA\r\nMerchant4\r\n213 Miller Street\r\nSydney 2060\r\nAustralia\r\n\r\nTIME 06JUN19   11:07\r\nMID         22341842\r\nTSP     100612348842\r\nRRN     190606001102\r\nDebit(S)         SAV\r\nCARD............5581\r\nAUTH          278045\r\n\r\nPURCHASE    AUD10.00\r\nCASH         AUD2.00\r\nSURCHARGE    AUD2.00\r\nTOTAL       AUD14.00\r\n\r\n   (000) APPROVED\r\n\r\n\r\n\r\n\r\n\r\n\r\n"",""merchant_receipt_printed"":false,""online_indicator"":""Y"",""pos_ref_id"":""prchs-06-06-2019-11-07-50"",""purchase_amount"":1000,""rrn"":""190606001102"",""scheme_name"":""Debit"",""stan"":""001102"",""success"":true,""surcharge_amount"":200,""terminal_id"":""100612348842"",""terminal_ref_id"":""12348842_06062019110812"",""transaction_type"":""PURCHASE""},""datetime"":""2019-06-06T11:08:12.946"",""event"":""purchase_response"",""id"":""prchs5""}}";

            // act
            var msg      = Message.FromJson(jsonStr, secrets);
            var response = new PurchaseResponse(msg);

            // assert
            Assert.Equal("purchase_response", msg.EventName);
            Assert.True(response.Success);
            Assert.Equal("prchs5", response.RequestId);
            Assert.Equal("prchs-06-06-2019-11-07-50", response.PosRefId);
            Assert.Equal("Debit", response.SchemeName);
            Assert.Equal("190606001102", response.GetRRN());
            Assert.Equal(1000, response.GetPurchaseAmount());
            Assert.Equal(200, response.GetCashoutAmount());
            Assert.Equal(0, response.GetTipAmount());
            Assert.Equal(200, response.GetSurchargeAmount());
            Assert.Equal(1200, response.GetBankNonCashAmount());
            Assert.Equal(200, response.GetBankCashAmount());
            Assert.NotNull(response.GetCustomerReceipt());
            Assert.NotNull(response.GetMerchantReceipt());
            Assert.Equal("APPROVED", response.GetResponseText());
            Assert.Equal("000", response.GetResponseCode());
            Assert.Equal("12348842_06062019110812", response.GetTerminalReferenceId());
            Assert.Equal("MAG_STRIPE", response.GetCardEntry());
            Assert.Equal("SAVINGS", response.GetAccountType());
            Assert.Equal("278045", response.GetAuthCode());
            Assert.Equal("06062019", response.GetBankDate());
            Assert.Equal("110750", response.GetBankTime());
            Assert.Equal("............5581", response.GetMaskedPan());
            Assert.Equal("100612348842", response.GetTerminalId());
            Assert.False(response.WasCustomerReceiptPrinted());
            Assert.False(response.WasMerchantReceiptPrinted());
            Assert.Equal(DateTime.ParseExact(msg.GetDataStringValue("bank_settlement_date"), "ddMMyyyy", CultureInfo.InvariantCulture).Date, response.GetSettlementDate());
            Assert.Equal(response.GetResponseValue("pos_ref_id"), response.PosRefId);

            // act
            response = new PurchaseResponse();

            // assert
            Assert.Null(SpiClientTestUtils.GetInstanceField(response.GetType(), response, "_m"));
            Assert.Null(response.PosRefId);
        }
Esempio n. 21
0
        public PurchaseResponse InsertOnPurchase(PurchaseRequest request)
        {
            PurchaseResponse response = new PurchaseResponse();

            try
            {
                IpurchaseR.InsertOnPurchase(request.Purchase);

                response.Success = true;
            }
            catch (Exception e)
            {
                response.Exception = e;
                response.Success   = false;
            }
            return(response);
        }
        public PurchaseResponse MakePurchase(PurchaseRequest purchaseRequest)
        {
            var purchaseResponse = new PurchaseResponse
            {
                CustomerId = purchaseRequest.CustomerId,
                Price      = 100,
                Message    = "Response",
                Visits     = 10
            };


            var streamWriter = new StreamWriter(@"C:\Temp\WS.log", true);

            streamWriter.WriteLine(DateTime.Now + " " + purchaseRequest.CustomerId);
            streamWriter.Close();
            return(purchaseResponse);
        }
        static void Main(string[] args)
        {
            X509Certificate2 customerCertificate, merchantCertificate, gatewayCertificate;
            string           customerPrivateKey, merchantPublicKey, gatewayPublicKey;
            bool             verify;
            Common           c      = new Common();
            IPEndPoint       iep    = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1234);
            Socket           client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            client.Connect(iep);
            //tạo init request gửi tới merchant
            InitiateRequest initiateRequest = new InitiateRequest();

            c.send(initiateRequest.ToMessage(), client);
            //nhận init response từ merchant
            string receiveMessage = c.receive(client);

            string[] initRES = receiveMessage.Split('-');
            merchantCertificate = new X509Certificate2(c.StringToByteArray(initRES[2]));
            gatewayCertificate  = new X509Certificate2(c.StringToByteArray(initRES[3]));
            merchantPublicKey   = merchantCertificate.GetRSAPublicKey().ToXmlString(false);
            gatewayPublicKey    = gatewayCertificate.GetRSAPublicKey().ToXmlString(false);
            verify = c.Verify(merchantPublicKey, initRES[1], initRES[0]);
            Console.WriteLine("verify init response: " + verify);
            //tạo purchase request
            string[]            value            = File.ReadAllLines("d:/file/input.txt");
            string[]            initREQValue     = initRES[0].Split(':');
            InitiateResponse    initiateResponse = new InitiateResponse(initREQValue[0], initREQValue[1], initREQValue[2]);
            OrderInfomation     oi = new OrderInfomation(Convert.ToInt32(value[0]), Convert.ToInt32(value[1]), DateTime.Now.ToString("ddMMyyyy"), initiateResponse.getTransID(), initiateResponse.getBrandID(), Convert.ToDouble(value[2]));
            PaymentInstructions pi = new PaymentInstructions(value[3], value[4], value[5], Convert.ToDouble(value[2]), initiateResponse.getTransID(), initiateResponse.getBrandID());

            customerPrivateKey  = File.ReadAllText(value[6]);
            customerCertificate = new X509Certificate2(value[7], "123456");
            PurchaseRequest purchaseRequest = new PurchaseRequest(oi.OIToString(), pi.PIToString(), customerPrivateKey, gatewayPublicKey, c.ByteArrayToString(customerCertificate.GetRawCertData()));

            c.send(purchaseRequest.ToMessage(), client);
            //nhận purchase response
            receiveMessage = c.receive(client);
            string[]         splitRES         = receiveMessage.Split('-');
            PurchaseResponse purchaseResponse = new PurchaseResponse(splitRES[0], splitRES[1], splitRES[2]);

            Console.WriteLine("verify purchase response: " + purchaseResponse.verify());
            //Console.WriteLine(purchaseResponse.getMessage());
            Console.Read();
        }
Esempio n. 24
0
    private void OnProductPurchased()
    {
        statusMsg = "";
        PurchaseResponse purchase = GamedoniaStore.purchaseResponse;
        string           details  = "Purchase Result status: " + purchase.status + " for product identifier: " + purchase.identifier;

        if (purchase.message != null && purchase.message.Length > 0)
        {
            details += " message: " + purchase.message;
        }
        printToConsole(details);

        if (purchase.success)
        {
            printToConsole("GAS refilled");
            updateGas(GAS_DRIVE_CONSUMPTION_REFILL);
        }
    }
Esempio n. 25
0
    private void PurchaseProductHandler(PurchaseResponse data)
    {
        AMN_PurchaseResponse result;

        if (data.Status.Equals(status.SUCCESSFUL.ToString()))
        {
            result = new AMN_PurchaseResponse(data);
            iapService.NotifyFulfillment(new NotifyFulfillmentInput()
            {
                ReceiptId         = data.PurchaseReceipt.ReceiptId,
                FulfillmentResult = "FULFILLED"
            });
        }
        else
        {
            result = new AMN_PurchaseResponse(data, currentSKU);
        }

        OnPurchaseProductReceived(result);
    }
Esempio n. 26
0
        public bool TryGet(int id, out PurchaseResponse response)
        {
            var target = _context.TicketPurchase.SingleOrDefault(tp => tp.PurchaseId == id);

            if (target != null)
            {
                response = new PurchaseResponse
                {
                    PaymentAmount    = target.PaymentAmount,
                    ConfirmationCode = target.ConfirmationCode,
                    PaymentMethod    = target.PaymentMethod,
                    PurchaseId       = target.PurchaseId
                };
                return(true);
            }

            // purchases not found
            response = null;
            return(false);
        }
Esempio n. 27
0
        private PaymentResponseMessage <TResponseTxn> CreateResponse <TResponseTxn>(Guid orderId, string transactionId, string responseXml)
            where TResponseTxn : PaymentResponseTxn, new()
        {
            try
            {
                // Record this response.

                var purchaseResponse = new PurchaseResponse
                {
                    Time    = DateTime.Now,
                    Message = responseXml,
                };
                _purchaseTransactionsCommand.CreatePurchaseResponse(orderId, transactionId, purchaseResponse);
            }
            catch (Exception)
            {
            }

            return(Serialization.Deserialize <TResponseTxn>(responseXml));
        }
        public async Task CreateOrderAsync(
            int basketId,
            Entities.OrderAggregate.Address shippingAddress,
            PaymentInfo paymentDetails,
            OrderStatus status,
            Purchase purchase,
            PurchaseResponse purchaseResponse)
        {
            var basket = await _basketRepository.GetByIdAsync(basketId);

            if (basket == null)
            {
                throw new BasketNotFoundException(basketId);
            }

            var items = new List <OrderItem>();
            var pricesAndQuantities = new List <Tuple <decimal, int> >();

            foreach (var item in basket.Items)
            {
                var catalogItem = await _itemRepository.GetByIdAsync(item.CatalogItemId);

                var itemOrdered = new CatalogItemOrdered(catalogItem.Id, catalogItem.Name, catalogItem.PictureUri);
                var orderItem   = new OrderItem(itemOrdered, item.UnitPrice, item.Quantity);
                items.Add(orderItem);
                pricesAndQuantities.Add(new Tuple <decimal, int>(item.UnitPrice, item.Quantity));
            }
            var totals = OrderCalculator.CalculateTotals(pricesAndQuantities);

            var order = new Order(
                basket.BuyerId,
                shippingAddress,
                paymentDetails,
                items,
                status,
                purchase,
                purchaseResponse,
                totals);

            await _orderRepository.AddAsync(order);
        }
Esempio n. 29
0
        private PurchaseResult GetPurchaseEventHandler(PurchaseResponse args)
        {
            var purchaseResult = new PurchaseResult();

            if (args?.PurchaseReceipt == null || args.AmazonUserData == null)
            {
                return(purchaseResult);
            }


            purchaseResult.OrderId = args.RequestId;
            purchaseResult.UserId  = args.AmazonUserData.UserId;
            string marketplace = args.AmazonUserData.Marketplace;

            purchaseResult.PurchaseToken = args.PurchaseReceipt.ReceiptId;
            if (args.PurchaseReceipt.CancelDate > 0)
            {
                purchaseResult.ExpirationDate = DateTimeOffset.FromUnixTimeSeconds(args.PurchaseReceipt.CancelDate).DateTime;
            }
            if (args.PurchaseReceipt.PurchaseDate > 0)
            {
                purchaseResult.PurchaseDate = DateTimeOffset.FromUnixTimeSeconds(args.PurchaseReceipt.PurchaseDate).DateTime;
            }
            purchaseResult.Sku      = args.PurchaseReceipt.Sku;
            purchaseResult.ItemType = args.PurchaseReceipt.ProductType;
            if (args.Status == "Cancelled")
            {
                purchaseResult.PurchaseState = PurchaseState.Cancelled;
            }
            else
            {
                purchaseResult.PurchaseState = PurchaseState.Purchased;
            }

            if (NotifyFullFillment(args.PurchaseReceipt.ReceiptId))
            {
                purchaseResult.IsAcknowledged = true;
            }

            return(purchaseResult);
        }
Esempio n. 30
0
    IEnumerator FakeRestore()
    {
        yield return(StartCoroutine(Latency()));

        foreach (var key in skuByPurchase.Keys)
        {
            var r = new PurchaseResponse();
            r.ok            = true;
            r.purchaseToken = skuByPurchase[key];
            r.productSku    = key;
            listener.OnPurchase(r);
        }

        if (skuByPurchase.Count == 0)
        {
            var r = new PurchaseResponse();
            r.ok   = false;
            r.code = CODE_EMPTY;
            listener.OnPurchase(r);
        }
    }
Esempio n. 31
0
        public async Task <ActionResult <PurchaseResponse> > Post([FromBody] PurchaseRequest purchase)
        {
            var result = await _purchaseRepo.TryAddPurchase(purchase.Seats, purchase.PaymentMethod);

            if (!result.Item1)
            {
                // error encountered when attempting to make purchase
                return(BadRequest(result.Item2));
            }

            TicketPurchase tp       = (TicketPurchase)result.Item2;
            var            response = new PurchaseResponse
            {
                PaymentAmount    = tp.PaymentAmount,
                ConfirmationCode = tp.ConfirmationCode,
                PaymentMethod    = tp.PaymentMethod,
                PurchaseId       = tp.PurchaseId
            };

            return(CreatedAtAction(nameof(Get), new { id = tp.PurchaseId }, response));
        }
 public static void ProductPurchased(string response)
 {
     _purchaseResponse = JsonMapper.ToObject<PurchaseResponse>((string) response);
 }
	    public async Task BuyBook( Book book, CancellationToken cancellationToken)
		{
			//If acoount not exits - create
			CatalitCredentials creds = _credentialsProvider.ProvideCredentials( cancellationToken );
			if (creds == null)
			{
				creds = await _profileProvider.RegisterDefault( cancellationToken );
				_credentialsProvider.RegisterCredentials( creds, cancellationToken );
			}

			bool isNokiaBook = false;
            if (_deviceInfoService.IsNokiaDevice && !string.IsNullOrEmpty(book.InGifts) && book.InGifts.Equals("1"))
			{
                var nokiaBook = await _catalogProvider.GetBookByCollection((int)BooksByCategoryViewModel.BooksViewModelTypeEnum.NokiaCollection, book.Id, cancellationToken);
                if (nokiaBook != null) isNokiaBook = true;
			}

		    if (isNokiaBook)
		    {
		        await _catalogProvider.TakeBookFromCollectionBySubscription(book.Id, cancellationToken);
		        UpdateBook(book);
		    }
		    else
		    {
		        try
		        {
		            Purchase newPurchase = await _inAppPurchaseService.BuyBook(book);

		            //purchase cancelled or not exist
		            if (newPurchase == null) return;

		            var parameters = new Dictionary<string, object>
		            {
		                {"inapp_data", newPurchase.Win8Inapp},
		                {"lfrom", _deviceInfoService.LitresInAppRefId},
		                {"art", book.Id}
		            };

		            PurchaseResponse purchase = null;
		            try
		            {
		                purchase = await _client.PurchaseBook(parameters, cancellationToken, book.isHiddenBook);
		            }
		            catch (CatalitInappProcessingFailedException e)
		            {
		                if (e.ErrorCode == 309)
		                {
		                    _inAppPurchaseService.CheckProductIsUsed(book.InappName);
		                }
		                purchase = new PurchaseResponse {State = "failed"};
		            }

		            switch (purchase.State)
		            {
		                case "pending":
		                    break;
		                case "unknown":
		                case "closed_ok_book_failed":
		                case "failed":
		                    UpdateBookFailed(book);
		                    break;
		                case "closed_ok":
		                    //ToDo: Do something
		                    _inAppPurchaseService.CheckProductIsUsed(book.InappName);
		                    UpdateBook(book);
		                    break;
		            }
		        }
                catch (Exception ex)
                {
                    var dialog = new MessageDialog("Оплата через Windows Store временно недоступна, пожалуйста, выберите другой вариант оплаты")
                    {
                        DefaultCommandIndex = 0
                    };
                    dialog.Commands.Add(new UICommand("Ок") { Id = 1 });
                    await dialog.ShowAsync();
                    Debug.WriteLine(ex.Message);
                }
            }
		}
        public async Task Deposit(DepositType depositType, CancellationToken cancellationToken)
	    {
            CatalitCredentials creds = _credentialsProvider.ProvideCredentials(cancellationToken);
            if (creds == null)
            {
                creds = await _profileProvider.RegisterDefault(cancellationToken);
                _credentialsProvider.RegisterCredentials(creds, cancellationToken);
            }

	        Purchase newPurchase = null;
	        try
	        {
	            newPurchase = await _inAppPurchaseService.AddToDeposit(depositType);
	        }
	        catch (Exception ex)
	        {
	            return;
	        }
	        //purchase cancelled or not exist
            if (newPurchase == null) return;

            var parameters = new Dictionary<string, object>
			{
				{ "inapp_data", newPurchase.Win8Inapp },
			};

            PurchaseResponse purchase = null;
            try
            {
                purchase = await _client.PurchaseBook(parameters, cancellationToken, false);
            }
            catch (CatalitInappProcessingFailedException e)
            {
                if (((CatalitInappProcessingFailedException) e).ErrorCode == 309)
                {
                    _inAppPurchaseService.CheckProductIsUsed(depositType);
                }
                purchase = new PurchaseResponse { State = "failed" };               
            }

	        switch (purchase.State)
	        {
	            case "pending":
	                break;
	            case "unknown":
	            case "closed_ok_book_failed":
	            case "failed":
	                UpdateDepositFailed();
	                break;
	            case "closed_ok":
	                //ToDo: Do something
                    {
	                    _inAppPurchaseService.CheckProductIsUsed(depositType);
	                    UpdateDeposit();
	                }
	            break;
            }
            
	    }