土著津贴
使用Apple Pay和Android Pay接受付款 付款请求 API。 。 。 .
特征
- 很简单. 没有更多的退票表.
- 有效。更快的结账,增加转换.
- 绝后. 使用一款由谷歌,Firefox等公司支持的W3C标准API.
- 跨平台在您的iOS, Android, 和网络应用程序之间共享支付代码 .
- 加进. 方便地通过附加物支持花纹花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花.
目录
演示
您可以通过复制项目和运行来运行演示:
$ yarn run:demo
赶时间? 看看这个 浏览器版本 演示文稿.
注意你需要用浏览器运行它 请求支持。 。 。 .
安装
首先下载软件包:
$ yarn add react-native-payments
第二,将本地附属地联系起来:
$ react-native link react-native-payments
使用量
设置 Apple Pay/ Android Pay
在开始接受App中的支付之前,需要设置Apple Pay和/或Android Pay.
苹果支付
- 注册为苹果开发者
- 获取商号
- 在您的应用程序中启用 Apple Pay
苹果公司有文档 说明如何做到这一点 在他们 配置环境 向导.
Android 付费
- 将Android Pay 和 Google Play 服务添加到您的依赖性
- 在您的声明中启用 Android Pay
谷歌有关于如何做到这一点的文件 设置 Android 付费 向导.
导入图书馆
一旦Apple Pay/Android Pay在您的应用中被启用,就跳入您的应用的入门点并制作 PaymentRequest 您的应用程序可在全球获取.
// index.ios.js
global.PaymentRequest = require('react-native-payments').PaymentRequest;
初始化付款请求
要启动付款申请,你需要提供 PaymentMethodData 财务报告和审定财务报表 PaymentDetails。 。 。 .
支付方法数据
支付方法数据是您定义接受的支付形式。 为了启用 Apple Pay,我们将定义 supportedMethod 联 合 国 apple-pay我们还需要通过一个 data 对象以配置 Apple Pay 。 我们在这里提供我们的商号, 定义支持的卡类型 和我们将使用的货币.
const METHOD_DATA = [{
supportedMethods: ['apple-pay'],
data: {
merchantIdentifier: 'merchant.com.your-app.namespace',
supportedNetworks: ['visa', 'mastercard', 'amex'],
countryCode: 'US',
currencyCode: 'USD'
}
}];
参见 Android 付费示例
const METHOD_DATA = [{
supportedMethods: ['android-pay'],
data: {
supportedNetworks: ['visa', 'mastercard', 'amex'],
currencyCode: 'USD',
environment: 'TEST', // defaults to production
paymentMethodTokenizationParameters: {
tokenizationType: 'NETWORK_TOKEN',
parameters: {
publicKey: 'your-pubic-key'
}
}
}
}];
付款详情
支付细节(Paying Details)是指定义交易细节,如显示项目,一个总和可选的运输选项.
谷歌有很好的文档 定义支付细节。 。 。 .
const DETAILS = {
id: 'basic-example',
displayItems: [
{
label: 'Movie Ticket',
amount: { currency: 'USD', value: '15.00' }
}
],
total: {
label: 'Merchant Name',
amount: { currency: 'USD', value: '15.00' }
}
};
一旦你定义了自己的 methodData 财务报告和审定财务报表 details你准备开始申请付款了.
const paymentRequest = new PaymentRequest(METHOD_DATA, DETAILS);
🚨 注: 在Android上,显示项目不在Android Pay视图内显示. 相反 用户流程文档 建议在列出显示项目的地方显示用户的确认视图。 使用 React 原生支付时,在接收后显示此视图 PaymentResponse。 。 。 .
显示付款请求
既然你已经安排了你的付款申请, 显示它就如同呼叫 show 方法.
paymentRequest.show();
见屏幕截图
中止付款请求
您可通过拨打 abort 方法.
paymentRequest.abort();
🚨 注:尚未在Android Pay上执行
请求联系人信息
有些应用程序可能要求用户提供联系信息. 你可以通过提供 PaymentOptions 作为初始化付款请求的第三个论据。 使用支付选项,您可以请求联系人姓名、电话号码和/或电子邮件.
请求联系人姓名
设定 requestPayerName 改为 true 以请求联系人名称.
const OPTIONS = {
requestPayerName: true
};
见屏幕截图
🚨 注意:在Android上,请求联系人名称会向用户提供传送地址选择器. 如果你没有把任何东西运送给用户,考虑在Android Pay之外捕捉到联系人名.
请求电话号码
设定 requestPayerPhone 改为 true 请求一个电话号码.
const OPTIONS = {
requestPayerPhone: true
};
见屏幕截图
🚨 注:在Android上,请求一个电话号码会向用户提供一个传送地址选择器. 如果你没有把任何东西运送给用户,考虑在Android Pay之外捕获电话号码.
请求电子邮件地址
设定 requestPayerEmail 改为 true 请求电子邮件地址.
const OPTIONS = {
requestPayerEmail: true
};
见屏幕截图
您也可以通过设置所有三个来请求 true。 。 。 .
const OPTIONS = {
requestPayerName: true,
requestPayerPhone: true,
requestPayerEmail: true
};
请求发运地址
请求发送地址分三步进行.
首先,你需要设置 requestShipping 改为 true 在内部 PaymentOptions。 。 。 .
const OPTIONS = {
requestShipping: true
};
第二,你需要包含 shippingOptions 在您的支付细节.
const DETAILS = {
id: 'basic-example',
displayItems: [
{
label: 'Movie Ticket',
amount: { currency: 'USD', value: '15.00' }
}
],
+ shippingOptions: [{
+ id: 'economy',
+ label: 'Economy Shipping',
+ amount: { currency: 'USD', value: '0.00' },
+ detail: 'Arrives in 3-5 days' // `detail` is specific to React Native Payments
+ }],
total: {
label: 'Merchant Name',
amount: { currency: 'USD', value: '15.00' }
}
};
最后,当用户选择一个 shippingAddress 和(或)a shippingOption。在每次召回中,你都需要提供新的 PaymentDetails 这将更新您的支付请求.
paymentRequest.addEventListener('shippingaddresschange', e => {
const updatedDetails = getUpdatedDetailsForShippingAddress(paymentRequest.shippingAddress;
e.updateWith(updatedDetails);
});
paymentRequest.addEventListener('shippingoptionchange', e => {
const updatedDetails = getUpdatedDetailsForShippingOption(paymentRequest.shippingOption);
e.updateWith(updatedDetails);
});
为了更深入地处理支付请求中的运输, 检查谷歌 付款货运请求。 。 。 .
🚨 注:Android上没有 shippingaddresschange 财务报告和审定财务报表 shippingoptionchange 事件。 要让用户更新他们的货运地址,你需要启动一个新的 PaymentRequest。更新运输选项通常发生在接收货物之后 PaymentResponse 在呼吁之前 getPaymentToken 方法.
处理付款
现在我们知道如何初始化,展示, 并驳回付款请求, 让我们来看看如何处理付款.
当一个用户接受支付, PaymentRequest.show 将决心做出付款反应.
paymentRequest.show()
.then(paymentResponse => {
// Your payment processing code goes here
return processPayment(paymentResponse);
});
处理Apple Pay/Android Pay付款有两种方法——在您的服务器或使用支付处理器.
在您的服务器上处理付款
如果你有能力在服务器上处理Apple Pay/Android Pay支付,你只需要将支付响应数据发送到您的服务器.
⚠️ 说明: 当运行 Apple Pay 在模拟器上,
paymentData等于null。 。 。 .
import { NativeModules } from 'react-native';
paymentRequest.show()
.then(paymentResponse => {
const { transactionIdentifier, paymentData } = paymentResponse.details;
return fetch('...', {
method: 'POST',
body: {
transactionIdentifier,
paymentData
}
})
.then(res => res.json())
.then(successHandler)
.catch(errorHandler)
});
参见 Android 付费示例
paymentRequest.show()
.then(paymentResponse => {
const { getPaymentToken } = paymentResponse.details;
return getPaymentToken()
.then(paymentToken => {
const { ephemeralPublicKey, encryptedMessage, tag } = paymentResponse.details;
return fetch('...', {
method: 'POST',
body: {
ephemeralPublicKey,
encryptedMessage,
tag
}
})
.then(res => res.json())
.then(successHandler)
.catch(errorHandler)
});
});
您可以在 Apple 上更多地了解服务器端的解密 支付托肯格式引用 文档.
使用付款处理器处理付款
当使用支付处理器时,你会收到 paymentToken 区域 details 会 议 日 程 和 议 程 PaymentResponse。使用此令牌向客户收取您的支付处理器.
paymentRequest.show()
.then(paymentResponse => {
const { paymentToken } = paymentResponse.details; // On Android, you need to invoke the `getPaymentToken` method to receive the `paymentToken`.
return fetch('...', {
method: 'POST',
body: {
paymentToken
}
})
.then(res => res.json())
.then(successHandler)
.catch(errorHandler);
});
参见 Android 付费示例
paymentRequest.show()
.then(paymentResponse => {
const { getPaymentToken } = paymentResponse.details;
return getPaymentToken()
.then(paymentToken => fetch('...', {
method: 'POST',
body: {
paymentToken
}
})
.then(res => res.json())
.then(successHandler)
.catch(errorHandler);
});
});
获得支持的付款处理者名单和如何使这些付款处理者能够使用,参见 加进 节.
驳回付款请求
驳回付款请求与向 complete 方法打开 PaymentResponse。 。 。 .
paymentResponse.complete('success'); // Alternatively, you can call it with `fail` or `unknown`
🚨 注意:在Android上,不需要打电话 paymentResponse.complete - " 付款请求 " 本身即被驳回.
测试付款
苹果支付
沙盒环境是测试Apple Pay下线执行应用,网站,发售点系统的一个好方法. 苹果的报价 详细指南 用于设置沙盒环境.
⚠️ 说明: 在您的生产环境中测试Apple Pay也很重要. 生产环境中必须使用真牌. 测试卡不行.
⚠️ 说明: 在模拟器和真设备上运行Apple Pay时有已知的差异. 在投入生产前确保您在真实设备上测试Apple Pay.
苹果支付按钮
提供按钮,用于通过Apple Pay触发支付,或促使用户设置卡. 详细文件和实例
API 密码
土著付款
付款请求
付款请求更新事件
付款答复
资源
付款请求
苹果支付
Android 付费
许可证
依据麻省理工学院许可,版权2017年, 纳乌法尔·卡德洪姆。 。 。 .
见 自由主义 更多信息.