示例#1
0
        public override void Start()
        {
            Debug.WriteLine("Ping operation started");
            WillChangeValue("IsExecuting");
            isExecuting = true;
            DidChangeValue("IsExecuting");

            if (IsCancelled)
            {
                Finish(false);
                return;
            }

            Debug.WriteLine("UrlSession request created");
            var request = CreatePingRequest();

            dataTask = session.CreateDataTask(request, new NSUrlSessionResponse((data, response, error) => {
                if (error != null)
                {
                    Debug.WriteLine($"Error: {error.DebugDescription}");
                    Finish(false);
                }

                Debug.WriteLine("UrlSession request completed");
                Finish(true);
            }));
        }
示例#2
0
        public void Search(string searchText, EventHandler handler)
        {
            NSUrl url = GetUrl(searchText);
            NSUrlSessionDataTask dataTask = session.CreateDataTask(url, (data, response, error) =>
            {
                NSError er;
                NSDictionary dict = (NSDictionary)NSJsonSerialization.Deserialize(data, NSJsonReadingOptions.AllowFragments, out er);

                string status = dict["stat"].ToString();
                Console.WriteLine("stat = " + dict["stat"]);
                NSArray arr = (NSArray)((NSDictionary)dict["photos"])["photo"];
                List <FlickrPhoto> photosList = new List <FlickrPhoto>();
                for (nuint i = 0; i < arr.Count; i++)
                {
                    //Console.WriteLine(arr.GetItem<NSDictionary>(i));
                    NSDictionary elemt = arr.GetItem <NSDictionary>(i);
                    FlickrPhoto photo  = new FlickrPhoto(elemt["id"].ToString(), elemt["farm"].ToString(), elemt["server"].ToString(), elemt["secret"].ToString(), elemt["title"].ToString());
                    photosList.Add(photo);
                }
                //Console.WriteLine("photos = " + ((NSDictionary)dict["photos"])["photo"]);
                var arg        = new PhotosDounloadEventArg();
                arg.PhotosList = photosList;
                //FinishHandler(this, arg);
                handler(this, arg);

                Console.WriteLine("dict = " + dict);
                Console.WriteLine("data = " + data);
                Console.WriteLine("error = " + error);
            });

            dataTask.Resume();
        }
        /// <summary>
        /// Starts the discovery of the Access Worldpay Verified Tokens Session service.
        /// </summary>
        /// <param name="urlSession">A `URLSession` object</param>
        /// <param name="onComplete">Callback upon discovery completion, successful or otherwise</param>
        public void Discover(NSUrlSession urlSession, Action onComplete)
        {
            // Check for existing tasks running
            if (_accessRootDiscoveryTask?.State == NSUrlSessionTaskState.Running ||
                _verifiedTokensDiscoveryTask?.State == NSUrlSessionTaskState.Running)
            {
                return;
            }

            // Discovers the root end-point in verified tokens service
            _accessRootDiscoveryTask = urlSession.CreateDataTask(_baseUrl, (data, response, error) =>
            {
                if (data is NSData jsonData)
                {
                    var vtsRootEndPoint = FetchServiceUrl(VerifiedTokensServiceLinkId, jsonData);
                    if (vtsRootEndPoint != null)
                    {
                        DiscoverSessionsEndPoint(urlSession, vtsRootEndPoint, onComplete);
                    }
                    else
                    {
                        onComplete.Invoke();
                    }
                }
                else
                {
                    onComplete.Invoke();
                }
            });
            _accessRootDiscoveryTask?.Resume();
        }
示例#4
0
        partial void SendNetworkReqClickedAsync(NSObject sender)
        {
            NSUrl                url     = new NSUrl("https://developer.huawei.com");
            NSUrlSession         session = NSUrlSession.SharedSession;
            NSUrlSessionDataTask task    = session.CreateDataTask(url, completionHandler);

            task.Resume();
        }
 /// <summary>
 /// Establece conexion con el servidor para obtener los datos.
 /// </summary>
 /// <param name="uri">URI.</param>
 /// <param name="complete">Action conexion finalizada.</param>
 private void Connection(URIData uri, Action <bool, string> complete)
 {
     using (NSUrlSession session = NSUrlSession.FromConfiguration(NSUrlSessionConfiguration.DefaultSessionConfiguration, (INSUrlSessionDelegate) new DataDelegate(complete), null))
     {
         NSUrlSessionDataTask task = session.CreateDataTask(CreateRequest(uri));
         task.Resume();
     }
 }
        /// <inheritdoc />
        protected override async Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            if (_session == null)
            {
                InitSession();
            }

            var headers = request.Headers as IEnumerable <KeyValuePair <string, IEnumerable <string> > >;

            var body = default(NSData);

            if (request.Content != null)
            {
                var bytes = await request.Content.ReadAsByteArrayAsync().ConfigureAwait(false);

                if (bytes.Length > 0 || request.Method != HttpMethod.Get)
                {
                    body    = NSData.FromArray(bytes);
                    headers = headers.Union(request.Content.Headers).ToArray();
                }
            }

            var rq = new NSMutableUrlRequest
            {
                AllowsCellularAccess = true,
                Body        = body,
                CachePolicy = NSUrlRequestCachePolicy.UseProtocolCachePolicy,
                Headers     = headers.Aggregate(new NSMutableDictionary(), (acc, x) => {
                    acc.Add(new NSString(x.Key), new NSString(string.Join(x.Key == "User-Agent" ? " " : ",", x.Value)));
                    return(acc);
                }),
                HttpMethod = request.Method.ToString().ToUpperInvariant(),
                Url        = NSUrl.FromString(request.RequestUri.AbsoluteUri),
            };

            var op = _session.CreateDataTask(rq);

            cancellationToken.ThrowIfCancellationRequested();

            var ret = new TaskCompletionSource <HttpResponseMessage>();

            cancellationToken.Register(() => ret.TrySetCanceled());

            lock (InflightRequests)
            {
                InflightRequests[op] = new InflightOperation
                {
                    FutureResponse    = ret,
                    Request           = request,
                    ResponseBody      = new ByteArrayListStream(),
                    CancellationToken = cancellationToken,
                };
            }

            op.Resume();
            return(await ret.Task.ConfigureAwait(false));
        }
示例#7
0
        protected override async Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            var headers = request.Headers as IEnumerable <KeyValuePair <string, IEnumerable <string> > >;
            var ms      = new MemoryStream();

            if (request.Content != null)
            {
                await request.Content.CopyToAsync(ms).ConfigureAwait(false);

                headers = headers.Union(request.Content.Headers).ToArray();
            }

            var rq = new NSMutableUrlRequest()
            {
                AllowsCellularAccess = true,
                Body        = NSData.FromArray(ms.ToArray()),
                CachePolicy = (!this.DisableCaching ? NSUrlRequestCachePolicy.UseProtocolCachePolicy : NSUrlRequestCachePolicy.ReloadIgnoringCacheData),
                Headers     = headers.Aggregate(new NSMutableDictionary(), (acc, x) =>
                {
                    acc.Add(new NSString(x.Key), new NSString(String.Join(getHeaderSeparator(x.Key), x.Value)));
                    return(acc);
                }),
                HttpMethod = request.Method.ToString().ToUpperInvariant(),
                Url        = NSUrl.FromString(request.RequestUri.AbsoluteUri),
            };

            var op = session.CreateDataTask(rq);

            cancellationToken.ThrowIfCancellationRequested();

            var ret = new TaskCompletionSource <HttpResponseMessage>();

            cancellationToken.Register(() => ret.TrySetCanceled());

            lock (inflightRequests)
            {
                inflightRequests[op] = new InflightOperation()
                {
                    FutureResponse    = ret,
                    Request           = request,
                    Progress          = getAndRemoveCallbackFromRegister(request),
                    ResponseBody      = new ByteArrayListStream(),
                    CancellationToken = cancellationToken,
                };
            }

            op.Resume();
            return(await ret.Task.ConfigureAwait(false));
        }
示例#8
0
        public void getPayementID(Boolean subscription)
        {
            NSUrl url = new NSUrl(paymentIdUrl);
            NSMutableUrlRequest       request  = new NSMutableUrlRequest(url);
            NSUrlSession              session  = null;
            NSUrlSessionConfiguration myConfig = NSUrlSessionConfiguration.DefaultSessionConfiguration;

            session = NSUrlSession.FromConfiguration(myConfig);

            var dictionary = new NSDictionary(
                "Content-Type", "application/json",
                "Authorization", secretKey
                );


            if (subscription)
            {
                var             date       = NSDate.FromTimeIntervalSinceNow((3 * 12 * 30) * 24 * 3600);
                NSDateFormatter dateFormat = new NSDateFormatter();
                dateFormat.DateFormat = "yyyy-MM-dd'T'HH:mm:ss";
                var dateString = dateFormat.ToString(date);

                String data = "{\"subscription\":{\"endDate\":\"{dateString}\",\"interval\":0},\"order\":{\"currency\":\"SEK\",\"amount\":1000,\"reference\":\"MiaSDK-iOS\",\"items\":[{\"unit\":\"pcs\",\"name\":\"Lightning Cable\",\"reference\":\"MiaSDK-iOS\",\"quantity\":1,\"netTotalAmount\":800,\"unitPrice\":800,\"taxRate\":0,\"grossTotalAmount\":800,\"taxAmount\":0},{\"unitPrice\":200,\"quantity\":1,\"grossTotalAmount\":200,\"taxAmount\":0,\"taxRate\":0,\"reference\":\"MiaSDK-iOS\",\"name\":\"Shipping Cost\",\"unit\":\"pcs\",\"netTotalAmount\":200}]},\"checkout\":{\"consumerType\":{\"default\":\"B2C\",\"supportedTypes\":[\"B2C\",\"B2B\"]},\"returnURL\":\"https:\\/\\/127.0.0.1\\/redirect.php\",\"cancelURL\":\"https:\\/\\/127.0.0.1\\/cancel.php\",\"integrationType\":\"HostedPaymentPage\",\"shippingCountries\":[{\"countryCode\":\"SWE\"},{\"countryCode\":\"NOR\"},{\"countryCode\":\"DNK\"}],\"termsUrl\":\"http:\\/\\/localhost:8080\\/terms\"}}";

                request.Body = data.Replace("{dateString}", dateString);
            }
            else
            {
                request.Body = "{\"order\":{\"currency\":\"SEK\",\"amount\":1000,\"reference\":\"MiaSDK-iOS\",\"items\":[{\"unit\":\"pcs\",\"name\":\"Lightning Cable\",\"reference\":\"MiaSDK-iOS\",\"quantity\":1,\"netTotalAmount\":800,\"unitPrice\":800,\"taxRate\":0,\"grossTotalAmount\":800,\"taxAmount\":0},{\"unitPrice\":200,\"quantity\":1,\"grossTotalAmount\":200,\"taxAmount\":0,\"taxRate\":0,\"reference\":\"MiaSDK-iOS\",\"name\":\"Shipping Cost\",\"unit\":\"pcs\",\"netTotalAmount\":200}]},\"checkout\":{\"consumerType\":{\"default\":\"B2C\",\"supportedTypes\":[\"B2C\",\"B2B\"]},\"returnURL\":\"https:\\/\\/127.0.0.1\\/redirect.php\",\"cancelURL\":\"https:\\/\\/127.0.0.1\\/cancel.php\",\"integrationType\":\"HostedPaymentPage\",\"shippingCountries\":[{\"countryCode\":\"SWE\"},{\"countryCode\":\"NOR\"},{\"countryCode\":\"DNK\"}],\"termsUrl\":\"http:\\/\\/localhost:8080\\/terms\"}}";
            }
            request.HttpMethod = "POST";
            request.Headers    = dictionary;

            NSUrlSessionTask task = session.CreateDataTask(request, (data, response, error) => {
                var json = NSJsonSerialization.Deserialize(data, NSJsonReadingOptions.FragmentsAllowed, out error);
                if ((Foundation.NSString)json.ValueForKey((Foundation.NSString) "hostedPaymentPageUrl") != null &&
                    (Foundation.NSString)json.ValueForKey((Foundation.NSString) "paymentId") != null)
                {
                    InvokeOnMainThread(() =>
                    {
                        presentMiaSDK((Foundation.NSString)json.ValueForKey((Foundation.NSString) "paymentId"),
                                      (Foundation.NSString)json.ValueForKey((Foundation.NSString) "hostedPaymentPageUrl"));
                    });
                }
            });

            task.Resume();
        }
 // line: 62
 private void DiscoverSessionsEndPoint(NSUrlSession urlSession, NSUrl startUrl, Action onComplete)
 {
     _verifiedTokensDiscoveryTask = urlSession.CreateDataTask(startUrl, (data, response, error) =>
     {
         if (data is NSData jsonData)
         {
             var vtsSessionUrl = FetchServiceUrl(VerifiedTokensSessionLinkId, jsonData);
             if (vtsSessionUrl != null)
             {
                 VerifiedTokensSessionEndpoint = vtsSessionUrl;
             }
         }
         onComplete.Invoke();
     });
     _verifiedTokensDiscoveryTask?.Resume();
 }
        private void UpdateImage(Experience Ex)
        {
            NSUrlSession session  = NSUrlSession.SharedSession;
            var          dataTask = session.CreateDataTask(new NSUrlRequest(Ex.GetNSUrl()), (data, response, error) =>
            {
                if (response != null)
                {
                    DispatchQueue.MainQueue.DispatchAsync(() =>
                    {
                        imageView.Image = UIImage.LoadFromData(data);
                    });
                }
            });

            dataTask.Resume();
        }
示例#11
0
        // line: 58
        private static void CreateSession(NSUrlRequest request, NSUrlSession urlSession,
                                          Action <Result <string, Exception> > completionHandler)
        {
            urlSession.CreateDataTask(request, (data, response, error) =>
            {
                var result = Result.Null <string, Exception>();

                if (data is NSData sessionData)
                {
                    var verifiedTokensResponse = Decoder.DecodeJson <AccessCheckoutResponse>(sessionData);
                    if (verifiedTokensResponse != null && verifiedTokensResponse.Links != null)
                    {
                        var link = verifiedTokensResponse.Links.Endpoints.GetValueOrDefault("verifiedTokens:session");
                        if (link != null && link.Href is string href)
                        {
                            completionHandler(result.Success(href));
                            return;
                        }
                    }

                    var accessCheckoutClientError = Decoder.DecodeJson <AccessCheckoutClientError>(sessionData);
                    if (accessCheckoutClientError != null)
                    {
                        completionHandler(result.Failure(accessCheckoutClientError));
                    }
                    else
                    {
                        completionHandler(result.Failure(new AccessCheckoutClientError(
                                                             "Failed to decode response data", AccessCheckoutClientErrors.Unknown)));
                    }
                }
                else
                {
                    var ex = error == null
                        ? new AccessCheckoutClientError(
                        "Unexpected response: no data or error returned",
                        AccessCheckoutClientErrors.Unknown)
                        : (Exception) new NSErrorException(error);
                    completionHandler(result.Failure(ex));
                }
            }).Resume();
        }
示例#12
0
        private void PubliceRequestMethod(NSMutableUrlRequest request)
        {
            NSError err;
            // 设置header
            NSMutableDictionary header = new NSMutableDictionary();

            header.SetValueForKey((NSString)"application/json; charset=utf-8", (NSString)"Content-Type");
            request.Headers = header;

            NSUrlSession session = NSUrlSession.FromConfiguration(NSUrlSessionConfiguration.DefaultSessionConfiguration, (INSUrlSessionDelegate)this, NSOperationQueue.CurrentQueue);

            NSUrlSessionDataTask task = session.CreateDataTask(request, (data, response, error) =>
            {
                if (error != null)
                {
                    Console.WriteLine(error.Description);
                }
                else
                {
                    NSHttpUrlResponse resp = (NSHttpUrlResponse)response;
                    NSDictionary dicData   = (NSDictionary)NSJsonSerialization.Deserialize(data, NSJsonReadingOptions.MutableLeaves, out err);
                    if (dicData == null)
                    {
                        return;
                    }
                    NSObject code = dicData.ValueForKey((NSString)"code");
                    if (resp.StatusCode == 200 && code.ToString().Equals("0"))
                    {
                        NetworkHelperRDelegate(dicData, resp, null);
                        Console.WriteLine(resp.Description);
                    }
                    else
                    {
                        NetworkHelperRDelegate(dicData, resp, err);
                        string message = dicData.ValueForKey((NSString)"message").ToString();
                        Console.WriteLine(dicData.Description);
                    }
                }
            });

            task.Resume();
        }
示例#13
0
        public void TestSessionConfiguration()
        {
            EventWaitHandle ewh = new EventWaitHandle(false, EventResetMode.AutoReset);

            Exec(() =>
            {
                Controller.GetSessionConfiguration((NSUrlSessionConfiguration configuration) =>
                {
                    NSUrlSession session = NSUrlSession.FromConfiguration(configuration);
                    session.CreateDataTask(NSUrl.FromString("https://facebookcorewwwi.onion/"), (NSData data, NSUrlResponse response, NSError error) =>
                    {
                        Assert.Equal(((NSHttpUrlResponse)response).StatusCode, 200);
                        Assert.True(error is null);
                        ewh.Set();
                    }).Resume();
                });
            });

            ewh.WaitOne();
        }
        void NSUrlSessionButton_TouchUpInside(object sender, EventArgs args)
        {
            NSUrlSessionConfiguration sessionConfig = NSUrlSessionConfiguration.DefaultSessionConfiguration;

            sessionConfig.AllowsCellularAccess          = true;
            sessionConfig.TimeoutIntervalForRequest     = 30.0;
            sessionConfig.TimeoutIntervalForResource    = 60.0;
            sessionConfig.HttpMaximumConnectionsPerHost = 1;

            NSUrl url = NSUrl.FromString(URLRequestBin);
            NSMutableUrlRequest urlRequest = new NSMutableUrlRequest(url, NSUrlRequestCachePolicy.ReloadIgnoringLocalCacheData, 60.0);

            urlRequest.HttpMethod = "POST";
            urlRequest.Body       = NSData.FromString("data=This is some NSURLSession data");

            NSUrlSession         session  = NSUrlSession.FromConfiguration(sessionConfig);
            NSUrlSessionDataTask dataTask = session.CreateDataTask(urlRequest);

            dataTask.Resume();
        }
        private MPMediaItemArtwork GetImageFromUrl(string url)
        {
            UIImage              image    = null;
            NSUrlSession         session  = NSUrlSession.SharedSession;
            NSUrlSessionDataTask dataTask = session.CreateDataTask(new NSUrlRequest(new NSUrl(url)),
                                                                   (data, response, error) =>
            {
                if (response != null)
                {
                    image = GetImageFromUrl(data);
                }
            });

            dataTask.Resume();

            if (image != null)
            {
                return(new MPMediaItemArtwork(image));
            }
            return(null);
        }
示例#16
0
        public void registerCardPaymnet(bool payWithPayPal, Action completionHandler)
        {
            var merchantURL = @"YOUR MERCHANT BACKEND URL HERE";

            NSMutableDictionary jsonDictionary = new NSMutableDictionary();

            if (payWithPayPal == false)
            {
                NSMutableDictionary amount = new NSMutableDictionary();
                amount.SetValueForKey(new NSNumber(1000), new NSString(@"totalAmount"));
                amount.SetValueForKey(new NSNumber(0), new NSString(@"vatAmount"));
                amount.SetValueForKey(new NSString(@"EUR"), new NSString(@"currencyCode"));

                jsonDictionary.SetValueForKey(amount, new NSString(@"amount"));
            }
            else
            {
                NSMutableDictionary amount = new NSMutableDictionary();
                amount.SetValueForKey(new NSNumber(1000), new NSString(@"totalAmount"));
                amount.SetValueForKey(new NSNumber(0), new NSString(@"vatAmount"));
                amount.SetValueForKey(new NSString(@"DKK"), new NSString(@"currencyCode"));

                jsonDictionary.SetValueForKey(amount, new NSString(@"amount"));
            }

            jsonDictionary.SetValueForKey(new NSString(@"000011"), new NSString(@"customerId"));
            jsonDictionary.SetValueForKey(new NSString(@"PiaSDK-iOS-xamarin"), new NSString(@"orderNumber"));
            jsonDictionary.SetValueForKey(new NSNumber(true), new NSString(@"storeCard"));

            if (payWithPayPal)
            {
                NSMutableDictionary method = new NSMutableDictionary();
                method.SetValueForKey(new NSString(@"PayPal"), new NSString(@"id"));
                method.SetValueForKey(new NSString(@"PayPal"), new NSString(@"displayName"));
                method.SetValueForKey(new NSNumber(0), new NSString(@"fee"));
                jsonDictionary.SetValueForKey(method, new NSString(@"method"));
            }

            if (isPayingWithToken)
            {
                isPayingWithToken = false;
                // Make sure you have a saved card in your backend.
                NSMutableDictionary method = new NSMutableDictionary();
                method.SetValueForKey(new NSString(@"EasyPayment"), new NSString(@"id"));
                method.SetValueForKey(new NSString(@"Easy Payment"), new NSString(@"displayName"));
                method.SetValueForKey(new NSNumber(0), new NSString(@"fee"));
                jsonDictionary.SetValueForKey(method, new NSString(@"method"));
                jsonDictionary.SetValueForKey(new NSString(@"492500******0004"), new NSString(@"cardId"));
            }

            if (isPaytrail)
            {
                isPaytrail = false;
                NSMutableDictionary method = new NSMutableDictionary();
                method.SetValueForKey(new NSString(@"PaytrailNordea"), new NSString(@"id"));
                jsonDictionary.SetValueForKey(method, new NSString(@"method"));

                // dummy customer details
                jsonDictionary.SetValueForKey(new NSString(getPaytrailOrderNumber()), new NSString(@"orderNumber"));
                jsonDictionary.SetValueForKey(new NSString(@"*****@*****.**"), new NSString(@"customerEmail"));
                jsonDictionary.SetValueForKey(new NSString(@"Bill"), new NSString(@"customerFirstName"));
                jsonDictionary.SetValueForKey(new NSString(@"Buyer"), new NSString(@"customerLastName"));
                jsonDictionary.SetValueForKey(new NSString(@"Testaddress"), new NSString(@"customerAddress1"));
                jsonDictionary.SetValueForKey(new NSString(@"00510"), new NSString(@"customerPostCode"));
                jsonDictionary.SetValueForKey(new NSString(@"Helsinki"), new NSString(@"customerTown"));
                jsonDictionary.SetValueForKey(new NSString(@"FI"), new NSString(@"customerCountry"));
                jsonDictionary.Remove(new NSString(@"storeCard"));
            }

            if (NSJsonSerialization.IsValidJSONObject(jsonDictionary))
            {
                NSError             error1   = null;
                NSData              jsonData = NSJsonSerialization.Serialize(jsonDictionary, NSJsonWritingOptions.PrettyPrinted, out error1);
                NSUrl               url      = new NSUrl(merchantURL);
                NSMutableUrlRequest request  = new NSMutableUrlRequest(url, NSUrlRequestCachePolicy.UseProtocolCachePolicy, 30.0);
                request.HttpMethod = @"POST";
                NSMutableDictionary dic = new NSMutableDictionary();
                dic.Add(new NSString("Content-Type"), new NSString("application/json;charset=utf-8;version=2.0"));
                dic.Add(new NSString("Accept"), new NSString("application/json;charset=utf-8;version=2.0"));
                request.Headers = dic;
                request.Body    = jsonData;

                NSError          error2  = null;
                NSUrlSession     session = NSUrlSession.SharedSession;
                NSUrlSessionTask task    = session.CreateDataTask(request, (data, response, error) =>
                {
                    if (data.Length > 0 && error == null)
                    {
                        NSDictionary resultsDictionary = (Foundation.NSDictionary)NSJsonSerialization.Deserialize(data, NSJsonReadingOptions.MutableLeaves, out error2);
                        if (resultsDictionary[@"transactionId"] != null && resultsDictionary[@"redirectOK"] != null)
                        {
                            NSString transactionId = (Foundation.NSString)resultsDictionary[@"transactionId"];
                            NSString redirectOK    = (Foundation.NSString)resultsDictionary[@"redirectOK"];
                            transactionInfo        = new NPITransactionInfo(transactionId, redirectOK);
                            completionHandler();
                        }
                        else
                        {
                            transactionInfo   = null;
                            registrationError = error;
                            completionHandler();
                        }
                    }
                    else
                    {
                        transactionInfo   = null;
                        registrationError = error;
                        completionHandler();
                    }
                });

                task.Resume();
            }
        }
示例#17
0
        public void getTransactionInfo(bool payWithPayPal, Action completionHandler)
        {
            //#internal_code_section_start
            var merchantURL = new String(@"");

            if (payWithPayPal)
            {
                merchantURL = @"https://api-gateway-pp.nets.eu/pia/merchantdemo/v2/payment/493809/register";
            }
            else
            {
                merchantURL = @"https://api-gateway-pp.nets.eu/pia/test/merchantdemo/v2/payment/12002835/register";
            }

            //#internal_code_section_end

            /*#external_code_section_start
             * var merchantURL = @"YOUR MERCHANT BACKEND URL HERE";
             #external_code_section_end*/

            NSMutableDictionary jsonDictionary = new NSMutableDictionary();

            if (payWithPayPal == false)
            {
                NSMutableDictionary amount = new NSMutableDictionary();
                amount.SetValueForKey(new NSNumber(1000), new NSString(@"totalAmount"));
                amount.SetValueForKey(new NSNumber(200), new NSString(@"vatAmount"));
                amount.SetValueForKey(new NSString(@"EUR"), new NSString(@"currencyCode"));

                jsonDictionary.SetValueForKey(amount, new NSString(@"amount"));
            }
            else
            {
                NSMutableDictionary amount = new NSMutableDictionary();
                amount.SetValueForKey(new NSNumber(1000), new NSString(@"totalAmount"));
                amount.SetValueForKey(new NSNumber(0), new NSString(@"vatAmount"));
                amount.SetValueForKey(new NSString(@"DKK"), new NSString(@"currencyCode"));

                jsonDictionary.SetValueForKey(amount, new NSString(@"amount"));
            }

            jsonDictionary.SetValueForKey(new NSString(@"000011"), new NSString(@"customerId"));
            jsonDictionary.SetValueForKey(new NSString(@"PiaSDK-iOS-xamarin"), new NSString(@"orderNumber"));
            jsonDictionary.SetValueForKey(new NSNumber(true), new NSString(@"storeCard"));

            if (payWithPayPal)
            {
                NSMutableDictionary method = new NSMutableDictionary();
                method.SetValueForKey(new NSString(@"PayPal"), new NSString(@"id"));
                method.SetValueForKey(new NSString(@"PayPal"), new NSString(@"displayName"));
                method.SetValueForKey(new NSNumber(0), new NSString(@"fee"));
                jsonDictionary.SetValueForKey(method, new NSString(@"method"));
            }

            if (isPayingWithToken)
            {
                // Make sure you have a saved card in your backend.
                NSMutableDictionary method = new NSMutableDictionary();
                method.SetValueForKey(new NSString(@"EasyPayment"), new NSString(@"id"));
                method.SetValueForKey(new NSString(@"Easy Payment"), new NSString(@"displayName"));
                method.SetValueForKey(new NSNumber(0), new NSString(@"fee"));
                jsonDictionary.SetValueForKey(method, new NSString(@"method"));
                jsonDictionary.SetValueForKey(new NSString(@"492500******0004"), new NSString(@"cardId"));
            }

            if (NSJsonSerialization.IsValidJSONObject(jsonDictionary))
            {
                NSError             error1   = null;
                NSData              jsonData = NSJsonSerialization.Serialize(jsonDictionary, NSJsonWritingOptions.PrettyPrinted, out error1);
                NSUrl               url      = new NSUrl(merchantURL);
                NSMutableUrlRequest request  = new NSMutableUrlRequest(url, NSUrlRequestCachePolicy.UseProtocolCachePolicy, 30.0);
                request.HttpMethod = @"POST";
                NSMutableDictionary dic = new NSMutableDictionary();
                dic.Add(new NSString("Content-Type"), new NSString("application/json;charset=utf-8;version=2.0"));
                dic.Add(new NSString("Accept"), new NSString("application/json;charset=utf-8;version=2.0"));
                request.Headers = dic;
                request.Body    = jsonData;

                NSError          error2  = null;
                NSUrlSession     session = NSUrlSession.SharedSession;
                NSUrlSessionTask task    = session.CreateDataTask(request, (data, response, error) =>
                {
                    if (data.Length > 0 && error == null)
                    {
                        NSDictionary resultsDictionary = (Foundation.NSDictionary)NSJsonSerialization.Deserialize(data, NSJsonReadingOptions.MutableLeaves, out error2);
                        if (resultsDictionary[@"transactionId"] != null && resultsDictionary[@"redirectOK"] != null)
                        {
                            NSString transactionId = (Foundation.NSString)resultsDictionary[@"transactionId"];
                            NSString redirectOK    = (Foundation.NSString)resultsDictionary[@"redirectOK"];
                            transactionInfo        = new NPITransactionInfo(transactionId, redirectOK);
                        }
                        else
                        {
                            transactionInfo = null;
                        }
                        completionHandler();
                    }
                    else
                    {
                        transactionInfo = null;
                        completionHandler();
                    }
                });

                task.Resume();
            }
        }
示例#18
0
        public void registerCallForWallets(int wallet, Action completionHandler)
        {
            //#internal_code_section_start
            var merchantURL = new String(@"https://api-gateway-pp.nets.eu/pia/test/merchantdemo/v2/payment/12002835/register");
            //#internal_code_section_end

            /*#external_code_section_start
             * var merchantURL = @"YOUR MERCHANT BACKEND URL HERE";
             #external_code_section_end*/

            NSMutableDictionary jsonDictionary = new NSMutableDictionary();
            NSMutableDictionary amount         = new NSMutableDictionary();
            NSMutableDictionary method         = new NSMutableDictionary();

            amount.SetValueForKey(new NSNumber(1000), new NSString(@"totalAmount"));
            amount.SetValueForKey(new NSNumber(200), new NSString(@"vatAmount"));
            method.SetValueForKey(new NSNumber(0), new NSString(@"fee"));
            switch (wallet)
            {
            case (int)MobileWallet.Vipps:
            {
                amount.SetValueForKey(new NSString(@"NOK"), new NSString(@"currencyCode"));
                method.SetValueForKey(new NSString(@"Vipps"), new NSString(@"id"));
                method.SetValueForKey(new NSString(@"Vipps"), new NSString(@"displayName"));
                //#internal_code_section_start
                jsonDictionary.SetValueForKey(new NSString(@"+4748059560"), new NSString(@"phoneNumber"));
                //#internal_code_section_end

                /*#external_code_section_start
                 * jsonDictionary.SetValueForKey(new NSString(@"+471111..."), new NSString(@"phoneNumber"));
                 #external_code_section_end*/
                break;
            }

            case (int)MobileWallet.Swish:
            {
                amount.SetValueForKey(new NSString(@"SEK"), new NSString(@"currencyCode"));
                method.SetValueForKey(new NSString(@"SwishM"), new NSString(@"id"));
                method.SetValueForKey(new NSString(@"Swish"), new NSString(@"displayName"));
                break;
            }

            default: break;
            }

            jsonDictionary.SetValueForKey(amount, new NSString(@"amount"));
            jsonDictionary.SetValueForKey(method, new NSString(@"method"));
            jsonDictionary.SetValueForKey(new NSString(@"000011"), new NSString(@"customerId"));
            jsonDictionary.SetValueForKey(new NSString(@"PiaSDK-iOS-xamarin"), new NSString(@"orderNumber"));
            jsonDictionary.SetValueForKey(new NSNumber(false), new NSString(@"storeCard"));


            //#internal_code_section_start
            jsonDictionary.SetValueForKey(new NSString("eu.nets.pia.xamarin://piasdk"), new NSString(@"redirectUrl"));
            //#internal_code_section_end

            /*#external_code_section_start
             * jsonDictionary.SetValueForKey(new NSString("YOUR_APP_SCHEME_URL://piasdk"), new NSString(@"redirectUrl"));
             #external_code_section_end*/



            if (NSJsonSerialization.IsValidJSONObject(jsonDictionary))
            {
                NSError             error1   = null;
                NSData              jsonData = NSJsonSerialization.Serialize(jsonDictionary, NSJsonWritingOptions.PrettyPrinted, out error1);
                NSUrl               url      = new NSUrl(merchantURL);
                NSMutableUrlRequest request  = new NSMutableUrlRequest(url, NSUrlRequestCachePolicy.UseProtocolCachePolicy, 30.0);
                request.HttpMethod = @"POST";
                NSMutableDictionary dic = new NSMutableDictionary();
                dic.Add(new NSString("Content-Type"), new NSString("application/json;charset=utf-8;version=2.0"));
                dic.Add(new NSString("Accept"), new NSString("application/json;charset=utf-8;version=2.0"));
                request.Headers = dic;
                request.Body    = jsonData;

                NSError          error2  = null;
                NSUrlSession     session = NSUrlSession.SharedSession;
                NSUrlSessionTask task    = session.CreateDataTask(request, (data, response, error) =>
                {
                    if (data.Length > 0 && error == null)
                    {
                        NSDictionary resultsDictionary = (Foundation.NSDictionary)NSJsonSerialization.Deserialize(data, NSJsonReadingOptions.MutableLeaves, out error2);
                        if (resultsDictionary[@"transactionId"] != null && resultsDictionary[@"walletUrl"] != null)
                        {
                            NSString transactionId = (Foundation.NSString)resultsDictionary[@"transactionId"];
                            NSString walletURL     = (Foundation.NSString)resultsDictionary[@"walletUrl"];
                            transactionInfo        = new NPITransactionInfo(walletURL);
                        }
                        else
                        {
                            transactionInfo = null;
                        }
                        completionHandler();
                    }
                    else
                    {
                        transactionInfo = null;
                        completionHandler();
                    }
                });

                task.Resume();
            }
        }
示例#19
0
        public void registerCallForWallets(MobileWallet wallet, WalletCallbackCompletionHandler callback)
        {
            var merchantURL = @"YOUR MERCHANT BACKEND URL HERE";

            NSMutableDictionary jsonDictionary = new NSMutableDictionary();
            NSMutableDictionary amount         = new NSMutableDictionary();
            NSMutableDictionary method         = new NSMutableDictionary();

            amount.SetValueForKey(new NSNumber(1000), new NSString(@"totalAmount"));
            amount.SetValueForKey(new NSNumber(200), new NSString(@"vatAmount"));
            method.SetValueForKey(new NSNumber(0), new NSString(@"fee"));
            switch (wallet)
            {
            case MobileWallet.Vipps:
            {
                amount.SetValueForKey(new NSString(@"NOK"), new NSString(@"currencyCode"));
                method.SetValueForKey(new NSString(@"Vipps"), new NSString(@"id"));
                method.SetValueForKey(new NSString(@"Vipps"), new NSString(@"displayName"));
                jsonDictionary.SetValueForKey(new NSString(@"+471111..."), new NSString(@"phoneNumber"));
                break;
            }

            case MobileWallet.Swish:
            {
                amount.SetValueForKey(new NSString(@"SEK"), new NSString(@"currencyCode"));
                method.SetValueForKey(new NSString(@"SwishM"), new NSString(@"id"));
                method.SetValueForKey(new NSString(@"Swish"), new NSString(@"displayName"));
                break;
            }

            case MobileWallet.MobilePay:
            {
                amount.SetValueForKey(new NSString(@"EUR"), new NSString(@"currencyCode"));
                method.SetValueForKey(new NSString(@"MobilePay"), new NSString(@"id"));
                method.SetValueForKey(new NSString(@"MobilePay"), new NSString(@"displayName"));
                break;
            }

            default: break;
            }

            jsonDictionary.SetValueForKey(amount, new NSString(@"amount"));
            jsonDictionary.SetValueForKey(method, new NSString(@"method"));
            jsonDictionary.SetValueForKey(new NSString(@"000011"), new NSString(@"customerId"));
            jsonDictionary.SetValueForKey(new NSString(@"PiaSDK-iOS-xamarin"), new NSString(@"orderNumber"));
            jsonDictionary.SetValueForKey(new NSNumber(false), new NSString(@"storeCard"));



            jsonDictionary.SetValueForKey(new NSString("YOUR_APP_SCHEME_URL://piasdk"), new NSString(@"redirectUrl"));



            if (NSJsonSerialization.IsValidJSONObject(jsonDictionary))
            {
                NSError             error1   = null;
                NSData              jsonData = NSJsonSerialization.Serialize(jsonDictionary, NSJsonWritingOptions.PrettyPrinted, out error1);
                NSUrl               url      = new NSUrl(merchantURL);
                NSMutableUrlRequest request  = new NSMutableUrlRequest(url, NSUrlRequestCachePolicy.UseProtocolCachePolicy, 30.0);
                request.HttpMethod = @"POST";
                NSMutableDictionary dic = new NSMutableDictionary();
                dic.Add(new NSString("Content-Type"), new NSString("application/json;charset=utf-8;version=2.0"));
                dic.Add(new NSString("Accept"), new NSString("application/json;charset=utf-8;version=2.0"));
                request.Headers = dic;
                request.Body    = jsonData;

                NSError          error2  = null;
                NSUrlSession     session = NSUrlSession.SharedSession;
                NSUrlSessionTask task    = session.CreateDataTask(request, (data, response, error) =>
                {
                    if (data.Length > 0 && error == null)
                    {
                        NSDictionary resultsDictionary = (Foundation.NSDictionary)NSJsonSerialization.Deserialize(data, NSJsonReadingOptions.MutableLeaves, out error2);
                        if (resultsDictionary[@"transactionId"] != null && resultsDictionary[@"walletUrl"] != null)
                        {
                            NSString transactionId = (Foundation.NSString)resultsDictionary[@"transactionId"];
                            NSString walletURL     = (Foundation.NSString)resultsDictionary[@"walletUrl"];
                            transactionInfo        = new NPITransactionInfo(walletURL);
                            callback(WalletRegistrationResponse.SuccessWithWalletURL(NSUrl.FromString(transactionInfo.WalletUrl)));
                        }
                        else
                        {
                            transactionInfo = null;
                            callback(WalletRegistrationResponse.Failure(error));
                        }
                    }
                    else
                    {
                        transactionInfo = null;
                        callback(WalletRegistrationResponse.Failure(error));
                    }
                });

                task.Resume();
            }
        }