在 Android 应用程序中创建 PayPal/信用卡付款。
百度 2024-07-29 10:09:43 阅读:
在本教程中,我们将学习如何设置PayPal Android SDK以通过 PayPal 付款或信用卡购买来处理简单付款。在本示例结束时,您应该在应用程序中有一个简单的按钮,当用户单击该按钮时,它会将用户转发到 PayPal 以确认设置付款,然后将用户返回到应用程序并记录付款确认。
此示例的完整应用程序代码可在PayPal 开发者 Github 存储库中找到。
让我们开始吧。
第一步是获取 SDK 并将其添加到你的项目中。我们像这样添加对 build.gradle 依赖项的引用:
依赖项 { 编译'com.paypal.sdk:paypal-android-sdk:2.14.1' ... }
现在我们转到我们的 MainActivity.java 文件(或您想要添加 PayPal 按钮集成的任何位置),并config为我们的客户端 ID 和我们将要使用的环境(沙箱)添加一个对象。
private static PayPalConfiguration config = new PayPalConfiguration() .environment(PayPalConfiguration.ENVIRONMENT_SANDBOX) .clientId("您的客户端ID");现在我们将在我们的onCreate(...)方法中创建一个按钮,一旦点击,我们就可以处理通过 PayPal 付款。
@Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final Button button = (Button) findViewById(R.id.paypal_button); } 我们现在需要定义该按钮的功能。在您的 res > layout > main XML 文件中,您可以为按钮添加以下定义,
它将定义带有 paypal_button ID 的按钮的文本和 onClick 处理程序。 <按钮 android:id="@+id/paypal_button" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="@string/paypal_button" android:onClick="beginPayment" /> 单击后,按钮将调用beginPayment(...)方法。然后,我们可以将按钮的文本添加到 strings.xml 文件中,
如下所示:使用 PayPal 付款按钮到位后,我们现在必须处理按钮点击以开始付款处理。在之前的onCreate(...)方法
下方添加以下beginPayment(...)方法。 公共无效开始支付(查看视图){ 意图服务配置=新意图(此,PayPalService.class); 服务配置.putExtra(PayPalService.EXTRA_PAYPAL_CONFIGURATION,配置); 启动服务(服务配置); PayPalPayment 付款 = 新 PayPalPayment(新 BigDecimal(“5.65”), “USD”,“我的超棒商品”,PayPalPayment.PAYMENT_INTENT_SALE); Intent paymentConfig = new Intent(this, PaymentActivity.class); paymentConfig.putExtra(PayPalService.EXTRA_PAYPAL_CONFIGURATION, config); paymentConfig.putExtra(PaymentActivity.EXTRA_PAYMENT, payment); startActivityForResult(paymentConfig, 0); } 我们在这里所做的是首先设置服务意图 ( serviceConfig ),使用我们之前为客户端 ID 和沙盒环境定义的配置。
然后我们指定我们要处理的付款对象。
为了便于说明,我们设置了静态价格、货币和说明。在最终的应用中,这些值应该从用户在应用中尝试购买的商品中获取。
最后,我们设置 paymentConfig ,
添加我们之前定义的配置和付款对象,然后启动活动。 此时,用户将看到 PayPal 登录和付款屏幕,允许他们选择使用 PayPal 还是信用卡付款
(通过手动输入或 card.io(如果摄像头可用))。
该屏幕将如下所示:
完成后,我们需要准备好一个处理程序,用于 PayPal 在确认付款或取消后将用户转发回应用程序。
为此,让我们重写onActivityResult(...) 。 @Override protected void onActivityResult (int requestCode, int resultCode, Intent data){ if (resultCode == Activity.RESULT_OK){ PaymentConfirmation confirmed = data.getParcelableExtra( PaymentActivity.EXTRA_RESULT_CONFIRMATION ); if (confirm != null ){ try { Log.i("sampleapp", confirmed.toJSONObject().toString(4)); // TODO:向你的服务器发送“确认”以供验证 } catch (JSONException e) { Log.e("sampleapp", "无确认数据: ", e); } } } else if (resultCode == Activity.RESULT_CANCELED) { Log.i("sampleapp", "用户已取消。"); } else if (resultCode == PaymentActivity.RESULT_EXTRAS_INVALID) { Log.i("sampleapp", "无效付款/配置集"); } } 在onActivityResult(...)方法中,我们检查返回的resultCode是否为 RESULT_OK(用户确认付款)、
RESULT_CANCELED(用户取消付款)或 RESULT_EXTRAS_INVALID(存在配置问题)。如果确认有效,我们将获取从付款返回的对象,
并在此示例中记录它。返回给我们的内容应类似于以下内容: { “客户端”:{ “环境”:“沙盒”, “paypal_sdk_version”:“2.14.1”, “平台”:“Android”, “product_name”:“PayPal-Android-SDK” }, “响应”:{ “create_time”:“2016-05-02T15:33:43Z”, “id”:“PAY-0PG63447RB821630KK1TXGTY”, “意图”:“销售”, “状态”:“已批准” }, “响应类型”:“付款” } 如果我们查看响应对象,我们可以看到状态为approved ,这意味着付款已确认。
此时,该对象应发送到您的服务器以确认付款确实已完成。
有关这些步骤的更多信息,请参阅这些文档。 我们的最后一步是在onDestroy(...)中进行清理。 @Override public void onDestroy(){ stopService(new Intent(this,PayPalService.class)); super.onDestroy(); } 这就是全部内容。在此示例中,我们创建了一个简单的按钮来处理使用 PayPal 或信用卡的付款。
从这一点开始,您可以按照以下几个步骤来扩展此示例:该方法根据用户的产品选择动态地提取支付信息beginPayment(...)。
将付款确认发送到您的服务器并验证付款是否确实完成。
处理应用程序内的错误和取消用户案例。
发表评论(0)