- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试为 Stripe Android SDK 建立新的绑定(bind),因为现有的绑定(bind)已经过时并且缺乏 SCA 身份验证,而 SCA 身份验证是最近发布的一项新功能,欧盟市场将需要该功能。
Stripe 信息:https://stripe.com/docs/mobile/android Stripe 存储库:https://github.com/stripe/stripe-android
我使用的是今天可用的最后一个版本,即 10.2.1,并且只剩下一个错误:
Error CS0103 The name 'Start' does not exist in the current context
我有一些为 Android 进行绑定(bind)的经验,但这个问题很难解决:
如果我转到报告错误的自动生成的类 -PaymentAuthWebViewStarter- 我可以看到以下内容:
// This method is explicitly implemented as a member of an instantiated Com.Stripe.Android.View.IAuthActivityStarter
void global::Com.Stripe.Android.View.IAuthActivityStarter.Start (global::Java.Lang.Object p0)
{
Start (global::Java.Interop.JavaObjectExtensions.JavaCast<global::Com.Stripe.Android.PaymentAuthWebViewStarter.Data>(p0));
}
但是那里没有 Start 的代码。这是预期的,因为 api.xml 显示了该类的以下代码:
<class abstract="false" deprecated="not deprecated" extends="java.lang.Object" extends-generic-aware="java.lang.Object" jni-extends="Ljava/lang/Object;" final="false" name="PaymentAuthWebViewStarter" static="false" visibility="public" jni-signature="Lcom/stripe/android/PaymentAuthWebViewStarter;">
<implements name="com.stripe.android.view.AuthActivityStarter" name-generic-aware="com.stripe.android.view.AuthActivityStarter<com.stripe.android.PaymentAuthWebViewStarter.Data>" jni-type="Lcom/stripe/android/view/AuthActivityStarter<Lcom/stripe/android/PaymentAuthWebViewStarter$Data;>;">
</implements>
<field deprecated="not deprecated" final="true" name="EXTRA_AUTH_URL" jni-signature="Ljava/lang/String;" static="true" transient="false" type="java.lang.String" type-generic-aware="java.lang.String" value=""auth_url"" visibility="public" volatile="false">
</field>
<field deprecated="not deprecated" final="true" name="EXTRA_CLIENT_SECRET" jni-signature="Ljava/lang/String;" static="true" transient="false" type="java.lang.String" type-generic-aware="java.lang.String" value=""client_secret"" visibility="public" volatile="false">
</field>
<field deprecated="not deprecated" final="true" name="EXTRA_RETURN_URL" jni-signature="Ljava/lang/String;" static="true" transient="false" type="java.lang.String" type-generic-aware="java.lang.String" value=""return_url"" visibility="public" volatile="false">
</field>
<field deprecated="not deprecated" final="true" name="EXTRA_UI_CUSTOMIZATION" jni-signature="Ljava/lang/String;" static="true" transient="false" type="java.lang.String" type-generic-aware="java.lang.String" value=""ui_customization"" visibility="public" volatile="false">
</field>
</class>
如您所见,没有任何 Start 方法的痕迹。该接口(interface)已声明并具有预期的 Start 方法签名,如下所示:
<interface abstract="true" deprecated="not deprecated" final="false" name="AuthActivityStarter" static="false" visibility="public" jni-signature="Lcom/stripe/android/view/AuthActivityStarter;">
<typeParameters>
<typeParameter name="StartDataType" classBound="java.lang.Object" jni-classBound="Ljava/lang/Object;"></typeParameter>
</typeParameters>
<method abstract="true" deprecated="not deprecated" final="false" name="start" jni-signature="(Ljava/lang/Object;)V" bridge="false" native="false" return="void" jni-return="V" static="false" synchronized="false" synthetic="false" visibility="public">
<parameter name="p0" type="StartDataType" jni-type="TStartDataType;">
</parameter>
</method>
</interface>
另一方面,如果我使用 JD-GUI(java 反编译器)查看 .aar 类,我可以看到 Start 是在 PaymentAuthWebViewStarter 类中定义的:
public void start(@NonNull Data data)
{
Bundle extras = new Bundle();
extras.putString("client_secret", data.mClientSecret);
extras.putString("auth_url", data.mUrl);
extras.putString("return_url", data.mReturnUrl);
extras.putParcelable("ui_customization", this.mToolbarCustomization);
this.mHost.startActivityForResult(PaymentAuthWebViewActivity.class, extras, this.mRequestCode);
}
我的问题是:
为什么这个方法没有像任何其他类中的任何其他方法一样生成?
如何解决这个问题?
我在这里留下了我的代码:https://github.com/guillermo-gerard/stripe.android.sdk.binding/tree/master非常欢迎您 fork 它并尝试解决这个问题。
最佳答案
好吧,再努力一点之后,我会解决我的问题,但我还不确定为什么会发生这种情况。
这些更改已在存储库中发布,但以防万一它对任何人都有帮助:我必须在 Additions 中添加一个部分类来实现对缺失成员的调用,如下所示:
namespace Com.Stripe.Android
{
// This class fixes the Error CS0103 The name 'Start' does not exist in the current context
public partial class PaymentAuthWebViewStarter : global::Java.Lang.Object
{
internal new static readonly JniPeerMembers _members1 = new XAPeerMembers("com/stripe/android/PaymentAuthWebViewStarter", typeof(PaymentAuthWebViewStarter));
// Metadata.xml XPath method reference: path="/api/package[@name='com.stripe.android']/class[@name='PaymentAuthWebViewStarter']/method[@name='start' and count(parameter)=1 and parameter[1][@type='com.stripe.android.PaymentAuthWebViewStarter.Data']]"
[Register("start", "(Lcom/stripe/android/PaymentAuthWebViewStarter$Data;)V",
"GetStart_Lcom_stripe_android_PaymentAuthWebViewStarter_Data_Handler")]
public virtual unsafe void Start(global::Com.Stripe.Android.PaymentAuthWebViewStarter.Data data)
{
const string __id = "start.(Lcom/stripe/android/PaymentAuthWebViewStarter$Data;)V";
try
{
JniArgumentValue* __args = stackalloc JniArgumentValue[1];
__args[0] = new JniArgumentValue(
(data == null) ? IntPtr.Zero : ((global::Java.Lang.Object) data).Handle);
_members1.InstanceMethods.InvokeVirtualVoidMethod(__id, this, __args);
}
finally
{
}
}
}
}
就这样,这解决了编译问题,我已经能够生成 dll 了。将其包含到项目中后,出现新错误,但现在已解决。
免责声明:我还没有完全测试绑定(bind),我只是确定它可以包含在项目中,并且可以使用 Stripe 小部件输入信用卡信息。我尚未测试 SCA 行为或 3DS 身份验证。因此,如果您打算使用此绑定(bind),请对其进行全面测试,如果出现任何问题请告诉我
关于java - 如何解决 Stripe xamarin 绑定(bind)错误? (CS0103 名称 'Start' 在当前上下文中不存在),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57504300/
我有 2 个 .cs 文件,每个文件中都有一个类。如何在 Form2.cs 中的另一个类中调用 Form1.cs 中的一个类中的方法? 看起来像这样...... Form1.cs public par
我正在尝试了解指针的移动方式。以下是程序,我知道如果 int cs={1,2,3}; 然后cs指向cs[0]我不清楚的是 *cs 指向什么。 #include int main() {
我是 ASP.NET Core 新手。我正在使用 ASP.NET Core 7。我读到在 ASP.NET Core 7 中他们删除了 Startup.cs。有人可以告诉我如何在此示例中将 Startu
所以我知道一般来说,这是不可能的,因为Jon Skeet said so . 但是我的 .cs 文件是简单的类,在顶部有一个或两个 usings。我需要一个包含所有类的文件,这样我就可以将它作为单个文
到目前为止,基本上我的脚本将值发送到网关,然后被重定向到 CS 购物车。在该页面中,我获取返回的值并对其进行操作。 我使用 fn finish 和 fn 更改订单状态来完成订单,但无论我做什么,我都会
我需要一个匹配所有以 .cs 结尾的字符串的正则表达式,但如果它们以 .g.cs 结尾,则它们不应该匹配。我正在使用 .NET 正则表达式。 最佳答案 如果是 .cs 而不是 .g.cs,这将匹配结尾
到目前为止,基本上我的脚本将值发送到网关,然后被重定向到 CS 购物车。在该页面中,我获取返回的值并对其进行操作。 我使用 fn finish 和 fn 更改订单状态来完成订单,但无论我做什么,我都会
我的 Form.cs 中有一个函数,我想在我的 program.cs 中调用它 但是如果函数不是静态的,program.cs就不能用了。如果它是静态的,则 Form.cs 无法使用它,因为它涉及非静态
因此,当我抓取不同解决方案的一些文件并将它们粘贴到不同的解决方案中时,我的 Mainform 和设计师分离了。如果我运行我的程序,表格会正确显示,但是当我在设计模式下查看我的表格时,它是一个空白表格。
我有一个用户控件 (UserControl1.ascx),我对其 cs 文件进行了更改。UserControl1.ascx 正被两个或多个使用 LoadControl 的 aspx 文件使用.我不想部
我正在学习一些 Xamarin 开发。当我研究 Xamarin 项目的例子时,like this one ,我有时会看到一个页面有一个与 xaml 文件及其代码隐藏文件同名的神秘文件,但以 *CS.c
是的,这有点毫无意义,但我想知道......我的 MVC 应用程序中所有这些代码隐藏文件都困惑了。据我所知,我需要这些文件的唯一原因是告诉 ASP.NET 我的页面是从 ViewPage 而不是 Pa
我已经从一个不再可用的人那里继承了一个网站。在已部署的文件夹中,我有 Config.aspx(请参阅代码)。但是我找不到代码隐藏文件。配置页面有效。我在哪里可以找到 .cs 文件? 谢谢
在为 Outlook(或其他潜在的 Office 程序)开发插件时,在主类上调用方法可能很有用,但是如何从事件处理程序(例如功能区中的 button_click 事件)中执行此操作。 最佳答案 使用:
我已经创建了 PlayPage.xaml、PlayPage.xaml.cs 和 Game.cs 文件。PlayPage.xaml.cs 有两个变量,windowWidth 和 windowHeight
我一直在关注使用 Caliburn Micro 的 MVVM 模式教程 https://www.youtube.com/watch?v=laPFq3Fhs8k .xaml.cs 和 ViewModel
我试图将一个值(来自一个对象)放在一个变量中,并将它放在一个表单的文本框中。 表单代码如下: public Form1(Deck mainDeck) { InitializeC
我知道这很基础,但我找不到任何关于如何在 MSDN、Google 搜索和 stackoverflow 之间执行此操作的指南/教程。 我创建了一个新的 Windows 窗体应用程序,这里我有 Progr
VS2017 15.4.1 ASP.NET MVC 5.2.3 T4MVC 4.0.0 AutoT4MVC 1.5.3 再加工者 我在这个项目中已经使用 T4MVC] 好几个月了,没有任何问题。然而,
我正在尝试配置 kestrel,以便当它处于原始模式时在特定端口上运行。但是这样做似乎 launchsettings.json 需要传递命令行参数才能这样做,因为没有直接选项并且它总是在端口 5000
我是一名优秀的程序员,十分优秀!