Apple Pay

介绍

Apple Pay 是苹果公司提供的移动支付解决方案,支持在线支付和线下支付。商家可以通过 PayKKa 接入 Apple Pay 的线上支付, 提供便捷的支付体验。 由于 Apple 的终端设备( Iphone , Ipad , Mac , Apple Watch , Apple Vision Pro )内置的认证机制带来的责任转移,允许客户使用 Touch ID , Face ID 来完成身份认证,无需再进行发卡行额外认证,即 3DS 认证。 如果发卡行返回交易中的 eci ,PayKKa也会把 eci 返回给对接商家,该值将指示哪一方承担责任。如果发卡行未返回 eci ,则交易不符合责任转移资格。 Apple Pay 具有以下特点:

支持国家地区支持币种常规支付循环支付授权请款部分请款撤销部分撤销退款部分退款拒付
全球绝大多数币种

集成方式

PayKKa 提供了多种接入 Apple Pay 的方式,您可以根据自己的需求选择合适的方式。

API Only 接入

您可以通过 API 的方式,接受 Apple Pay 支付。 在您的付款页面,可以通过参考 Apple Pay on your website with JavaScript-based APIs 的指引步骤,引入 Apple Pay 的组件。 PayKKa 接受自行解密和由我们解密 Apple Pay 的 Payment token 两种方式。 这两种方式在传参上有所差异,具体可参考以下:

商家解密

如果您的开发能力很强,自行申请了开发者账号,并同时持有 Apple 的解密证书,完成了 payment token 的解密过程。那么您只需要发起 PayKKa 的支付 API 请求,传递解密后的交易卡信息,即可完成交易。

  1. 调用接口 Initiate Transaction
{
  "payment": {
        "payment_method": "APPLE_PAY",
        "exp_year": "2027",
        "exp_month": "08",
        "holder_name": "Ocie Vititoe",
        "card_no": "5204240493889658",
        "token_authentication": {
            "cryptogram": "ALbOGff2RLbTADtP3BuIAoABFA==",
            "token_format": "cryptogram_3ds",
            "eci": "07"
        }
    }
}

解密的明文信息中应包含过期年份 exp_year ,过期月份 exp_month ,持卡人姓名 holder_name ,卡号 card_no , 动态生成的安全码 cryptogram , 支付令牌的格式 token_format 必传,其中 token_format 固定 cryptogram_3ds ,其他字段如果有返回,请一同传入。

PayKKa 解密

如果您选择由 PayKKa 来解密,那意味着您接受使用 PayKKa 的 Apple 证书,参考 配置 Apple 的证书说明,并请联系 PayKKa 的对接人员,协助您完成域名认证过程。您只需要传递 Apple Pay 返回的 payment token ,PayKKa 会进行自动解密。

  1. 调用接口 Create Apple Pay Session

此过程用于开启当前 Apple Pay 的支付操作,用于拉起 Apple Pay 的支付页面。

{
  "merchant_id": "商户号", # 必填
  "display_name": "YOUR_DOMAIN_NAME" # 展示给顾客的商户名称, 空则默认由PayKKa设置
}
{
  "ret_code": "",
  "ret_msg": "",
  "data": "BASE_64_ENCODED_DATA"
}

data 返回的是发起 Apple Pay 的会话信息,经过了 Base64 编码,您接收到,需要进行 Base64 转码,然后使用 Apple Pay 的 SDK 来拉起 Apple Pay 的支付页面。

  1. 调用 Initiate Transaction
{
  "payment": {
        "payment_method": "APPLE_PAY",
        "store_payment_method": true,
        "token_usage": "CARD_ON_FILE",
        "shopper_reference": "HDJSVXDKRO",
        "token_data": "QWIwMmI0YzAhQlFBQkFnQjMv..."
    }
}

Hosted 接入

如果您使用 PayKKa 的托管结账页面来接入 Apple Pay , 只需要在开通商户过程中接受 Apple Pay 支付方式, PayKKa 将在幕后处理与 Apple Pay 的所有交易。这种集成方案,最为便捷。您需要调用发起收银台请求,获取 PayKKa 的收银台的跳转地址。

  1. 调用接口 Create Session
{
    "merchant_id": "18356675194960",
    "payment_type": "PURCHASE",
    "trans_id": "t202311081113",
    "timestamp": 1700805506000,
    "currency": "USD",
    "amount": 1250,
    "session_mode": "HOSTED",
    "display_merchant_name": "PayKKa Merchant",
    "display_locale": "zh-CN",
    "allowed_payment_methods": [
        "APPLE_PAY"
    ]
}

其中指定 session_mode 字段值为 HOSTEDallowed_payment_methods 允许支持 APPLE_PAY

Component 接入

Component 是一种模块化的支付集成方式,开发者可以根据需要自由灵活地选择组合不同的支付组件。 您可以通过这种方式,在自己的付款页面上添加 Apple Pay 付款元素, 这种解决方案允许您的客户不需要跳转到第三方付款页面,就可以在当前页面完成支付,体验更丝滑。但是这种方式,您需要在 PayKKa 上进行域名绑定验证。操作步骤参考使用 PayKKa 的 Apple 证书部分。

  1. 引入 PayKKa Checkout UI Component 组件库

具体使用步骤可参考 PayKKa Checkout UI Component 使用文档 - PayKKa Docs for Payments

  1. 调用接口 Create Session
{
    "merchant_id": "18356675194960",
    "payment_type": "PURCHASE",
    "trans_id": "t202311081113",
    "timestamp": 1700805506000,
    "currency": "USD",
    "amount": 1250,
    "session_mode": "COMPONENT",
    "display_merchant_name": "PayKKa Merchant",
    "display_locale": "zh-CN",
    "allowed_payment_methods": [
        "APPLE_PAY"
    ]
}

其中指定 session_mode 字段值为 COMPONENTallowed_payment_methods 允许支持 APPLE_PAY

Drop-in 接入

类似与 Component 方式,Drop-in 是一种开箱即用的支付解决方案,提供完整的支付界面,包含所有的支付方式,更适合快速上线。 您选择在自己的付款页面上集成,展示 Apple Pay 支付方式, 这种解决方案同样允许您的客户不需要跳转到第三方付款页面,就可以在当前页面完成支付,体验更丝滑。但是这种方式,您需要在PayKKa上进行域名绑定验证。操作步骤参考使用 PayKKa 的 Apple 证书部分。

  1. 引入 PayKKa Checkout UI Component 组件库

具体使用步骤可参考 PayKKa Checkout UI Component 使用文档 - PayKKa Docs for Payments

  1. 调用接口 Create Session
{
    "merchant_id": "18356675194960",
    "payment_type": "PURCHASE",
    "trans_id": "t202311081113",
    "timestamp": 1700805506000,
    "currency": "USD",
    "amount": 1250,
    "session_mode": "DROP_IN",
    "display_merchant_name": "PayKKa Merchant",
    "display_locale": "zh-CN",
    "allowed_payment_methods": [
        "APPLE_PAY"
    ]
}

其中指定 session_mode 字段值为 DROP_INallowed_payment_methods 允许支持 APPLE_PAY

配置 Apple 的证书说明

商家证书

如果商家的开发能力非常强,PayKKa 允许您使用自己的证书来解密来自 Apple Pay 的 payment token。

在开始之前,您应该准备进行以下步骤:

  1. 创建一个 Apple Pay 的开发者账号,如果您在不同的地区进行展业,同一个账号不能在多个不同地区同时使用,需要在不同的地区分别创建账号。
  2. 您登录到开发者账号后,创建一个商户标志符 merchant identifier ,该标志符要求唯一识别。
  3. 创建一个用于加密从 Apple 返回的 payment token 的支付处理证书 payment processing certificate ,这个证书与第二步中商户标志符进行关联。
  4. 准备一个域名,在 Apple 中进行验证, 该域名必须以 https 开头。登录到开发者账号后,进入商户域名部分,输入域名名称,保存后。可以下载一个 Apple 的域名关联文件,将这个文件上传到域名所在服务器指定目录下,具体路径可参考 https://yourdomain.com/.well-known/apple-developer-merchantid-domain-association 。 当上传到该目录后,再进行 Verify 操作。如果提示 OK ,说明域名绑定成功。
  5. 创建一个用于拉起 Apple Pay 会话到认证证书。打开终端,输入以下命令,
openssl req -out uploadMe.csr -new -newkey rsa:2048 -nodes -keyout certificate_sandbox.key

然后进入商家证书部分,上传 uploadMe.csr 文件,然后可以下载到一个 merchant_id.cer 证书文件,输入以下命令,将该证书文件进行转换为 .pem 。

openssl x509 -inform der -in merchant_id.cer -out certificate_sandbox.pem
  1. 测试验证你的 Apple Pay 会话证书是否正确,可输入以下命令,
curl -gv \
  --data '{
    "merchant_id": "xxx.xxx.xxx.xxx",
    "display_name": "xxxxxxxx"
  }' \
  --cert /path/to/certificate_sandbox.pem \
  --key /path/to/certificate_sandbox.key \
https://apple-pay-gateway.apple.com/paymentservices/paymentSession

如果返回完整的会话信息,说明商家证书创建成功,可进行后续集成 Apple Pay 的操作。

PayKKa 证书

如果您想快速地集成 Apple Pay 功能,可以选择使用 PayKKa 的 Apple 证书。PayKKa 已经申请成为 Apple Pay 的 PSP 身份,允许接入不同的商家来集成 Apple Pay 。

在开始之前,您应该准备以下步骤:

  1. 在 PayKKa 商家后台注册账号,并开通 Apple Pay 的支付方式,通过提交资料,审核,KYC 等认证流程。
  2. 如果您选择在自己的付款页面集成 Apple Pay , 请联系 PayKKa 的对接人员,会协助您完成域名的绑定。

测试

  1. Apple Pay 提供了 sandbox 环境 Sandbox Testing - Apple Pay ,您可以在自己钱包中添加测试卡来模拟交易。
  2. 您需要准备一台兼容的 Apple 设备 Devices compatible with Apple Pay - Apple Support , 进行测试。