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支付