Android接入stripe支付
Android接入stripe支付
阅读之前请大家先了解流程哦(适用于先绑卡后扣款的情况)
stripe国际化支付流程:
1.初始化stripe,创建stripe对象;
2.检索后台SetupIntent,得到client secret,也就是client token;(客户机密可用于通过信用卡网络验证和验证卡详细信息)
3.获取卡片信息,判断卡号,有效期,cvv是否正确有效
4.客户端收集付款方式详细信息,第一个参数: 银行卡卡号 二:月 三:年 四:CVC码
5.进行3D认证
6.调用stripe的创建支付方式回调成功后得到paymentMethodID,跳转到授权认证页面
7.身份验证后在onActivityResult接收回调信息
8.确认和身份验证后检索到的SetupIntent对象,返回成功后创建支付方式
代码部分:
依赖 ‘com.stripe:stripe-android:10.0.0’
1.private Stripe mStripe;
PaymentConfiguration.init(从stripe平台得到的pk);
mStripe = new Stripe(this, PaymentConfiguration.getInstance().getPublishableKey());
2.调用后台接口,得到client token;
3.用stripe提供的卡片信息输入框,为了满足UI效果,我们可以使用拆分开的控件
卡号:
<com.stripe.android.view.CardNumberEditText
android:id="@+id/add_et_cardnum"
android:layout_width=“wrap_content”
android:layout_height=“20dp”
android:layout_gravity=“start”
android:layout_marginLeft=“6dp”
android:layout_weight=“1”
android:background="@android:color/transparent"
android:focusable=“true”
android:focusableInTouchMode=“true”
android:gravity=“center_vertical”
android:hint="@string/card_num"
android:imeOptions=“actionDone”
android:inputType=“number”
android:maxLength=“19”
android:textColor="@color/color11"
android:textColorHint="@color/color9"
android:visibility=“visible”
tools:ignore=“UnusedAttribute”
tools:importantForAccessibility=“yes” />
有效日期
<com.stripe.android.view.ExpiryDateEditText
android:id="@+id/add_et_valid"
android:layout_width=“match_parent”
android:layout_height=“23dp”
android:layout_gravity=“start”
android:layout_marginTop=“27dp”
android:background="@android:color/transparent"
android:focusable=“true”
android:focusableInTouchMode=“true”
android:gravity=“center_vertical”
android:hint="@string/mm"
android:imeOptions=“actionNext”
android:inputType=“date”
android:maxLength=“5”
android:maxLines=“1”
android:singleLine=“true”
android:textColor="@color/color11"
android:textSize=“14sp”
android:visibility=“visible”
tools:ignore=“UnusedAttribute”
tools:importantForAccessibility=“yes” />
CVV码
<com.stripe.android.view.StripeEditText
android:id="@+id/add_et_cvv"
android:layout_width=“match_parent”
android:layout_height=“23dp”
android:layout_gravity=“start”
android:layout_marginTop=“27dp”
android:background="@android:color/transparent"
android:focusable=“true”
android:focusableInTouchMode=“true”
android:gravity=“center_vertical”
android:hint="@string/cvv"
android:imeOptions=“actionDone”
android:inputType=“numberPassword”
android:maxLength=“3”
android:maxLines=“1”
android:paddingRight=“20dp”
android:singleLine=“true”
android:textColor="@color/color11"
android:textSize=“14sp”
tools:ignore=“UnusedAttribute”
tools:importantForAccessibility=“yes” />
调用CardNumberEditText中的 **isCardNumberValid()**验证卡号
调用ExpiryDateEditText中的 **isDateValid()**验证有效期
4. //在客户端收集付款方式详细信息
//第一个参数: 银行卡卡号 二:月 三:年 四:CVC码
Card.Builder builder = new Card.Builder(cardnum, month, year, cvv);
Card card = builder.build();
PaymentMethodCreateParams.Card paymentMethodParamsCard = card.toPaymentMethodParamsCard();
final PaymentMethodCreateParams paymentMethodCreateParams =PaymentMethodCreateParams.create
(paymentMethodParamsCard, null);
5.//3D认证
PaymentAuthConfig.Stripe3ds2UiCustomization uiCustomization = new PaymentAuthConfig.Stripe3ds2UiCustomization.
Builder().build();
PaymentAuthConfig.init(new PaymentAuthConfig.Builder().set3ds2Config(new PaymentAuthConfig.Stripe3ds2Config
(new PaymentAuthConfig.Stripe3ds2Config.Builder()
// set a 5 minute timeout for challenge flow
.setTimeout(5)
// customize the UI of the challenge flow
.setUiCustomization(uiCustomization)
.build())
.build());
6. mStripe.createPaymentMethod(paymentMethodCreateParams, new ApiResultCallback() {
@Override
public void onSuccess(@NonNull PaymentMethod result) {
// Hold onto the PaymentMethod for step 4
paymentMethodID = result.id;
confirmSetupIntent(result.id);
}
@Override
public void onError(@NonNull Exception e) {
}
});
private void confirmSetupIntent(@NonNull String paymentMethodId) {
mStripe.confirmSetupIntent(this, ConfirmSetupIntentParams.create(paymentMethodId, clientToken));
}
7. @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
mStripe.onSetupResult(requestCode, data,
new ApiResultCallback() {
@Override
public void onSuccess(@NonNull SetupIntentResult result) {
final SetupIntent setupIntent = result.getIntent();
final SetupIntent.Status status =
setupIntent.getStatus();
if (status == SetupIntent.Status.Succeeded) {
// show success UI
//认证成功后的处理逻辑
} else if (setupIntent.requiresConfirmation()) {
// handle confirmation
} else {
}
}
@Override
public void onError(@NonNull Exception e) {
// handle error
}
});
}
将卡与App绑定后后台返回成功信息,就OK了 。
Android接入stripe支付相关推荐
- Android 接入支付宝支付实现
接上篇android接入微信支付文章,这篇我们带你来接入支付宝支付服务 简介 首先要说明的是个人感觉接入支付宝比微信简单多了,很轻松的,所以同学们不要紧张~ 当然还是老规矩啦,上来肯定的贴上官网地址, ...
- Android接入支付宝支付实现
接上篇android接入微信支付文章,这篇我们带你来接入支付宝支付服务 简介 首先要说明的是个人感觉接入支付宝比微信简单多了,很轻松的,所以同学们不要紧张~ 当然还是老规矩啦,上来肯定的贴上官网地址, ...
- 【Android】Stripe支付
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一.Stripe是什么? 二.使用步骤 1.引入库 2.配置publishable key 来和Stripe通讯 3.创建 ...
- JAVA接入STRIPE支付教程(测试环境),STRIPE支付的调用以及STRIPE WEBHOOK回调
一.环境准备 1.注册 2.密钥 3.WEBHOOK回调 二.核心代码 1.配置API.key以及webhook.key 2.支付demo 3.WEBHOOK回调 一.环境准备 1.注册 STRIPE ...
- cocos creator Android 接入Google支付sdk
准备工作 1.手机上安装Google服务 2.一个绑定信用卡的Google账号: 3.Google play客户端: 4..Google Play开发者后台创建应用 5.科学上网的工具 -等等 这些就 ...
- Android 接入银联支付
1.打开银联开放平台 https://open.unionpay.com/ 注册账户 2.点击"技术集成"01选择手机控件支付开发包(安卓版) 3.根据 中国银联手机支付控件接入指 ...
- android 接入华为支付,hms-iap-clientdemo-android-studio
华为应用内支付服务客户端示例代码 本章节主要介绍接入华为应用内支付的客户端开发步骤,帮助您快速了解华为支付提供的客户端接口及其使用方法. 点击此处了解更多. 目录 简介 华为应用内支付服务(HUAWE ...
- android接入谷歌支付
先集成google支付插件 implementation "com.android.billingclient:billing:4.0.0" 在Application进行初始化连接 ...
- 安卓-Android如何集成支付宝支付(集成阿里支付)详解。Android接入alipay支付
支付宝支付官网地址: 打开官网 服务器端如何拼接Orderinfo所需参数请看这篇文章.打开链接 安卓app集成阿里支付流程: 步骤一:下载aar和demo,并将aar添加到安卓项目依赖里.点击查看如 ...
最新文章
- C语言实现bmp图像几何变换(移动,旋转,镜像,转置,缩放)
- awk取文本列_awk命令结构/内置变量/获取文本某行或某列
- 某资深程序员写给后来者的忠告
- 龙芯2h芯片不能进入pmon_国产处理器龙芯地址空间详解
- ios开发中遇到的文件和字符的问题大总结
- SparkStreaming 异常:java.lang.NoSuchMethodError: scala.Predef scope()Lscala/xml/TopScope
- android 缓存头像,android 实现类似微信缓存和即时更新好友头像示例
- ldap+ldap-account-manager+svn+apache+php做账号管理
- framework7的改进,以及与vue组合使用遇到的问题以及解决方法 (附vue的原理)
- 怎样利用Python制作守护进程
- JS 将图片编码BASE64
- android stuido 快捷键
- 阿里P7跳槽后曝光薪资截图:新公司月入税后五万多,很满足!
- Win8.1 KB2919355更新无法正常安装完成,解决办法?
- 单肩包属于什么类目_包包属于什么商标类目
- ink 合约篇(一)| 部署 ink 合约
- 蓝桥杯刷题,第四界省赛B组
- 计算机基础知识考试技巧,计算机二级考试Office应试技巧
- kratos 配置文件热更新
- 欧行漫记:参观华为欧洲研究所,感受华为海外研发人员的苦乐人生