如何从Xaramin.Forms推出Point-Of-Sale Android应用程序?

时间:2017-11-09 14:05:30

标签: android square-connect

有没有办法从Xamarin.Forms推出Square POS Android应用程序?我注意到所有的SDK示例都是用Java编写的。该应用程序是否必须使用Java编写?

编辑:更新

我使用square android SDK aar文件在Visual Studio中创建了Bindings库。现在,它启动了销售点应用程序,但之后它没有将结果数据发送回应用程序。相反,它会进入错误屏幕,其中显示“网页不可用”

网页 intent#intent; action = com.squareup.pos.action.CHARGE(更多..) 无法加载,因为

net:ERROR_UNKNOWN_URL_SCHEME

我试图通过覆盖ShouldOverrideUrlLoading

在WebView中执行此操作
public override bool ShouldOverrideUrlLoading(WebView view, string url)
            {
                if (url.StartsWith("http:") || url.StartsWith("https:"))
                {
                    view.LoadUrl(url);
                    return false;
                }

                if (url.Contains("CHARGE"))
                {
                    // Process Square Point-Of-Sale Transaction
                    ChargeRequest chargeRequest =
                        new ChargeRequest.Builder(1, CurrencyCode.Usd)
                        .Note("Test")
                        .RequestMetadata("WEB_CALLBACK_URI=mycallbackurl")
                        .RestrictTendersTo(ChargeRequest.TenderType.Card, ChargeRequest.TenderType.CardOnFile, ChargeRequest.TenderType.Cash)
                        .CustomerId("MyCustomerID")
                        .Build();

                    try
                    {
                        if (PosClient == null)
                        {
                            new AlertDialog.Builder(this.activity).SetMessage("Square Point-Of-Sale Client Error").Show();
                        }
                        Intent chargeIntent = PosClient.CreateChargeIntent(chargeRequest);
                        this.activity.StartActivityForResult(chargeIntent, CHARGE_REQUEST_CODE);
                    }
                    catch (ActivityNotFoundException e)
                    {
                        new AlertDialog.Builder(this.activity).SetMessage(e.Message).Show();
                    }
                }

                return false;
            }

编辑:更新

我为OnRecieveError添加了一个覆盖

  

errorCode是

     

Android.Webkit.ClientError.Unsupported Scheme

     

在Webview对象中有这个

     

Java.Lang.NoSuchMethodError:没有非静态方法   “Landroid / webkit的/ web视图; .getRendererPriorityWaivedWhenNotVisible()Z”   Java.Lang.NoSuchMethodError:没有非静态方法   “Landroid / webkit的/ web视图; .getRendererRequestedPriority()I”

编辑:更新

我现在有点工作了。在ShouldOverrideUrlLoading方法中,如果它正在处理事务,我将其更改为返回true。我还必须覆盖OnActivityResult并解析从Android应用程序返回的数据。它现在启动Square POS应用程序并将数据返回给调用应用程序。现在,我只是弄清楚如何从那里处理交易。

0 个答案:

没有答案