braintreeApplePay

来自于:APICloud官方立即使用

概述

Apple Pay 是苹果公司在2014苹果秋季新品发布会上发布的一种基于 NFC 的手机支付功能,于2014年10月20日在美国正式上线。2016年2月18日凌晨5:00, Apple Pay 业务在中国上线。

Apple Pay 支持的设备

iPhone系列:iPhone 6、iPhone6 Plus、iPhone 6s、iPhone 6s Plus

iPad系列:iPad Air 2、iPad mini 3、iPad mini 4、iPad Pro

Apple Watch

注意:iPhone 5 和 iPhone 5s 本身并不支持,而是连接到它们的 Apple Watch 可以用,因为5系列的手机不带NFC。

Apple Pay 系统要求

iOS 需升级到9.2及以上,WatchOS 需要2.1或更高版本。

Apple Pay 使用方法

使用 Apple Pay 需要在苹果系统自带的 Wallet 程序里添加银行卡。iPhone 用户点击进入 Wallet 后,点击屏幕右上方的+号,再点击“下一步”就可进入申请页面,然后将银行卡正面放置在iPhone摄像头前,使卡面出现在屏幕的提示框内,系统会自动识别卡号,当然也可以手工输入卡号,接下来需要手工输入姓名、卡片有效期与安全码,还要阅读业务须知并选择接受。添加卡片成功后需激活才能使用,客户要确认手机号,并接收和输入验证码,才能成功激活。

如果需要在 Apple Watch 上添加,只要在相关联的 iPhone 上打开 Watch APP,轻点“Wallet 与 Apple Pay”,再轻点“添加信用卡或借记卡”,也可同样进行设置。需要注意的是,只有iOS9.2以上的版本才支持 Apple Pay。

同一台设备可以添加多张银行卡。工行表示,同一台苹果设备可添加5张信用卡,首张添加卡即为默认卡。客户可以在 “Wallet” APP 中通过长按卡片并将该卡排列为首位的方式将该卡设为默认付款卡,也可在“设置- Wallet 与 Apple Pay”功能中设置默认付款卡。

Apple Pay 分为线上支付和线下支付。线下支付不需要手机接入互联网,也不需要点击进入APP,甚至无须唤醒显示屏,只要将iPhone 靠近有银联闪付标志的读卡器,并将手指放在HOME键上验证指纹,即可进行支付。也可以在iPhone 处于黑屏锁定状态时,轻点两下主屏幕按钮进入 Wallet,快速进行购买。如果交易终端显示需要输入密码,还需要输入银行卡的交易密码。只需一两秒钟就可以完成Apple Pay 支付。

本模块封装了 Apple Pay 的线上支付功能,开发者只需几行代码,即可把苹果支付功能集成至自己的app内。用户使用自己的 app 购买商品时,可选择使用 Apple Pay 支付方式进行支付自己所购买的商品。

提醒:如果你在你的 APP 中销售的是电子产品或者虚拟货币,你应该使用内购方式(iap)而不是 App Pay 去销售你的东西。你可以使用 Apple Pay 销售你的实体商品和服务。

Apple Pay 上线国家

  • 美国
  • 英国
  • 加拿大
  • 澳大利亚
  • 中国

Apple Pay 支付供应商

苹果公司强烈建议开发者选择支持 Apple Pay 并提供 SDK 的支付供应商。当然您也可以提供自己的服务器端解决方案,以用于从您的 App 接收付款、解密付款令牌并与支付供应商进行互动。信用卡和借记卡付款的处理可能非常复杂。如果您不具备相应的专业知识和系统,又希望您的 App 支持 Apple Pay,使用支付供应商提供的 SDK 是最为便捷可靠的一种方式。本模块即是封装了 Braintree 的 Apple Pay 支付 SDK。其支付的付款流程参考 Braintree 官网文档

braintreeApplePay 模块使用攻略

步骤一、成为Braintree支付入网商户

详情参考商户注册入口

步骤二 、登录服务平台,通过服务平台申请 CSR

a、关于商户 CSR

接 Apple Pay 在线支付的商户,须生成 Apple Pay 专用的 CSR 文件并提及至苹果开发者网站进行签名,以签署证书,取得 Apple Pay 的访问权限。登录服务平台后 Settings > Processing > Apple Pay > Add a Certificate > Download a Certificate Signing Request.

步骤三、苹果证书及描述文件

  • 1.前往苹果开发者中心的Certificates, Identifiers, and Profiles部分并且创建一个新的商家ID,然后编辑此ID,编辑时需上传从 Braintree 下载的 CSR 文件(braintree_apple_pay.certSigningRequest),此过程中会让选择是否只在中国使用,选NO,因为 Braintree 不支持中国使用,所以 Braintree 的 Apple Pay也不支持中国,中国可用 appleUnionPay 模块。注意此 ID 需要在支付时作为 mID 传给模块,其一般格式为:merchant.com.app名。创建完成后下载到 Mac 电脑,然后上传到 Braintree。

  • 2.接下来创建苹果证书,并创建一个新的苹果打包证书。这需要向苹果公司上传自己本地生成的CSR文件(CertificateSigningRequest.certSigningRequest)。创建成功后下载到本地,然后双击安装,在钥匙串导出为p12证书,留作上传APICloud用。

  • 3.创建App ID(包名,既bundle ID),注意创建时勾选 Apple Pay 功能。App ID 即是我们平台上称之为包名的 id,其一般格式为:com.公司名.app名。App ID 创建完成后要编辑其 Apple Pay 功能,此编辑过程需要勾选1过程创建的mID。创建完成后,点击该App ID,然后编辑它,使之与步骤1创建的 merchant ID关联。

  • 4.创建描述文件(Provisioning Profiles),此描述文件(mobileprovision文件)需要上传 APICloud 平台编译服务器。此过程需要勾选3过程创建的App ID,以及2过程创建好的苹果证书(需安装mac电脑上后在钥匙串中导出为p12文件,然后上传 APICloud 编译服务器)。

  • 5.创建 entitlements 文件,APICloud 平台上的开发者,可通过此文件告诉编译服务器开通苹果支付功能。配置方法参考论坛帖子。配置示例如下:

          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
          <plist version="1.0">
          <dict>
              <key>com.apple.developer.healthkit</key>
              <true/>
              <key>com.apple.developer.in-app-payments</key>
              <array>
                  <string>merchant.com.apicloud</string>
              </array>
          </dict>
          </plist>
    

    其中 merchant.com.apicloud 为第一步申请的商家ID。<key>com.apple.developer.healthkit</key>

    <true/> 是开通健康功能,与本模块无关,若开发者同时使用了多个需要配置 entitlements 文件的模块,可如上述示例继续添加。

步骤四、服务器端开发

服务器端开发 Braintree 官网文档

注意:使用本模块必须云编译或自定义loader

isSupportPayments

判断手机是否支持 Apple Pay 功能

isSupportPayments(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status:            //布尔类型;支付环境判断,true|false
}

示例代码

var braintreeApplePay = api.require('braintreeApplePay');
braintreeApplePay.isSupportPayments(function(ret, err) {
    if (ret) {
        alert(JSON.stringify(ret));
    } else {
        alert(JSON.stringify(err));
    }
});

可用性

iOS系统

可提供的1.0.0及更高版本

canMakePayments

判断手机是否已加载有可用的支付卡片

canMakePayments(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status:            //布尔类型;支付环境判断,true|false
}

示例代码

var braintreeApplePay = api.require('braintreeApplePay');
braintreeApplePay.canMakePayments(function(ret, err) {
    if (ret) {
        alert(JSON.stringify(ret));
    } else {
        alert(JSON.stringify(err));
    }
});

可用性

iOS系统

可提供的1.0.0及更高版本

addCard

跳转到钱包设置添加银行卡、信用卡

addCard()

示例代码

var braintreeApplePay = api.require('braintreeApplePay');
braintreeApplePay.addCard();

可用性

iOS系统

可提供的1.0.0及更高版本

initWithAuthorization

初始化

initWithAuthorization({params},callback(ret))

params

tokenizationKey:

  • 类型:字符串
  • 描述:从 Braintree 申请的 key

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status:            //布尔类型;是否初始化成功,true|false
}

示例代码

var braintreeApplePay = api.require('braintreeApplePay');
braintreeApplePay.initWithAuthorization({
    tokenizationKey:''
},function(ret, err) {
    if (ret) {
        alert(JSON.stringify(ret));
    } else {
        alert(JSON.stringify(err));
    }
});

可用性

iOS系统

可提供的1.0.0及更高版本

paymentRequest

支付

paymentRequest({params}, callback(ret, err))

params

items:

  • 类型:数组
  • 描述:商品列表
  • 内部字段:
[{
   name:'',         //字符串类型;商品名字
   price:''         //字符串类型;商品价钱
}]

merchantId:

  • 类型:字符串
  • 描述:在苹果开发者中心申请的商户ID

countryCode:

  • 类型:字符串
  • 描述:The merchant's ISO country code.

currencyCode:

  • 类型:字符串
  • 描述:Currency code for this payment.

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status:      //布尔类型;是否请求支付成功(不是支付是否成功)
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    code:      //数字类型;错误码;取值范围:
               //1:商品列表为空
               //2:merchantId为空
               //3:countryCode为空
               //4:currencyCode为空
               //5:获取请求体失败
}

示例代码

var braintreeApplePay = api.require('braintreeApplePay');
braintreeApplePay.paymentRequest({
    items: [{name:'APICloud T恤',price:'99.99'}],
    merchantId: 'merchent.com.apicloud',
    countryCode: '',
    currencyCode:'',
    shippingType:''
}, function(ret, err) {
    if (ret) {
        alert(JSON.stringify(ret));
    } else {
        alert(JSON.stringify(err));
    }
});

可用性

iOS系统

可提供的1.0.0及更高版本

addEventListener

监听

addEventListener({params}, callback(ret))

params

targe:

  • 类型:字符串
  • 描述:监听支付事件
  • 默认:finish
  • 取值范围:
    • finish:
    • authorize:

callback(ret)

ret:

  • 类型:JSON 对象
  • 描述:监听事件返回,仅当 target 为 authorize 时有值,finish 仅返回事件
  • 内部字段:
{

    binData:      //JSON对象;
}

示例代码

var braintreeApplePay = api.require('braintreeApplePay');
braintreeApplePay.addEventListener({
    target: ‘authorize’
}, function(ret) {
    if (ret) {
        alert(JSON.stringify(ret));
    } 
});

可用性

iOS系统

可提供的1.0.0及更高版本