nativescript-stripe
NativeScript Stripe SDK
npm i --save nativescript-stripe

npm npm Build Status

安装

需要 iOS 9.x 及以上

NativeScript 4x

  • tns plugin add nativescript-stripe

NativeScript 3x

NativeScript 2x

配置

Android

使用 Stripe Android v10.2.1 SDK

iOS

使用 Stripe iOS 19.0.1 SDK (pod)

Angular

要在 Angular 中使用 Custom Integration 的 CreditCardView,请将 Angular 包装器在主模块(通常是 app.module.ts)中注册,如下所示

...
import { CreditCardViewModule } from "nativescript-stripe/angular";
...
@NgModule({
imports: [
...
CreditCardViewModule,
...
],
...
})
export class AppModule { }

用法

重要:确保在 Page 标签中包含 xmlns:stripe="nativescript-stripe"

从视图中使用

<stripe:CreditCardView id="card"/>

向卡中添加额外详细信息

JavaScript

const ccView = page.getViewById("card");
const cc = ccView.card;
cc.name = "Osei Fortune";

TypeScript

import { CreditCardView, Card } from 'nativescript-stripe';
const ccView:CreditCardView = page.getViewById("card");
const cc:Card = ccView.card;
cc.name = "Osei Fortune";

从代码中调用

import { Card } from 'nativescript-stripe';
const cc = new Card("1111111111111111",2,18,"123");
cc.name = "Osei Fortune";

标准集成

demodemo-angular 文件夹包含使用标准集成的示例。它们可以作为起点使用,并提供有关如何调用标准集成组件的信息。有关更多信息,请参阅示例文件夹中的 README。

设置 Stripe 配置值

StripeConfig.shared().backendAPI = <Your API Service>;
StripeConfig.shared().publishableKey = <Your Stripe Key>;
StripeConfig.shared().companyName = <Your Company Name>;
// To support Apple Pay, set appleMerchantID.
StripeConfig.shared().appleMerchantID = <Your Apple Merchant ID>;

创建客户会话

let customerSession = new StripeCustomerSession();

创建支付会话

let paymentSession = new StripePaymentSession(page, customerSession, price, "usd", listener);

有关更多信息,请参阅 Stripe 文档

强大的客户身份验证

欧洲的 PSD2 规则将要求某些信用卡购买进行 强大的客户身份验证。Stripe 支持此功能,尽管实现此功能的大部分工作需要在后端服务器和移动应用程序中进行,而不仅仅是 nativescript-stripe 插件。

要支持 SCA,请按照 iOSAndroid 的说明使用 PaymentIntents 而不是令牌与您的后端服务器交互。 nativescript-stripe 插件具有跨平台的数据结构和方法调用,可能有助于。在 index.d.ts 中查看

  • PaymentMethod 和相关类
  • StripePaymentIntent 和相关类
  • 方法 Stripe.createPaymentMethodStripe.retrievePaymentIntentStripe.confirmPaymentIntentStripe.confirmSetupIntent

处理次要客户输入

SCA 要求客户在使用某些信用卡时输入额外信息。如果正确处理从服务器返回的 StripePaymentIntent 中的重定向,Stripe 将负责此操作。

如果您使用的是 自动确认流程,则 confirmPaymentIntentconfirmSetupIntent 将自动管理 SCA 验证,通过显示和验证支付认证。

如果您使用的是 手动确认流程,其中后端创建 PaymentIntent|SetupIntent 并需要客户进行 Intent 认证,则 authenticatePaymentIntentauthenticateSetupIntent 允许在将 Intent 发送回您的服务器之前管理该额外步骤。

状态

demo-angular 现在支持 SetupIntentPaymentIntent SCA 集成。任何信用卡验证都将自动提示用户。

已知问题

const enum 未找到

使用NativeScript v6构建时,它将以“transpileOnly”模式使用仅webpack的流程。一个webpack 问题 意味着在最终输出中找不到 const enum 值。

这个问题在Angular项目中不存在,如果你没有使用任何导出的枚举,可能也不会成为问题。

不幸的是,我找到的唯一修复方法是遵循该问题中的建议,并将你的应用程序中的 webpack.config.js 中的 transpileOnly 设置为 false

注意:一旦修复了这个TypeScript 错误,可能就不再需要这样做。

待办事项

  • Android Pay
  • Apple Pay(由标准集成支持,不由自定义集成支持)