下载文档

uexApplePay
更新时间:2016-09-27

1、简介

Apple Pay 支付插件

1.1、说明

该插件实现了iPhone手机的Apple Pay 支付功能。

1.2、UI展示

1.3、开源源码

插件测试用例与源码下载:点击 插件中心至插件详情页 (插件测试用例与插件源码已经提供)

2、API概览

在进行插件调试之前,请先阅读接入指引并按其步骤进行接入操作,否则无法进行支付操作。

2.1、方法

canMakePayment 检测是否可以进行ApplePay支付

uexApplePay.canMakePayment(params)

说明:

  • 检测能否进行ApplePay

参数:

params是JSON字符串

  1. var params = {
  2. networks:[],
  3. };

各字段含义如下:

参数名称 参数类型 是否必选 说明
networks Array 指定进行ApplePay的支付网络,由UexApplePayNetworkKey构成的数组,详见[术语表-UexApplePayNetworkKey]。不传时默认为系统可选的所有支付网络

返回值:

返回值类型 说明
Number 检测结果,是一个UexAppleCanMakePaymentStatus,详见术语表-UexAppleCanMakePaymentStatus

注 : 仅3.3+的iOS引擎才会有返回值,对于旧版本的引擎,请用cbCanMakePayment 回调方法获取返回值。

平台支持:

iOS 9.2+

版本支持:

iOS 3.2.0+

示例:

  1. var params = {
  2. networks:["ChinaUnionPay"]
  3. };
  4. var data = JSON.stringify(params);
  5. var result = uexApplePay.canMakePayment(data);
  6. if (result != 0){
  7. alert ("不能进行ApplePay支付!")
  8. }

startChinaUnionPay 调起银联ApplePay支付

uexApplePay.startChinaUnionPay(params)

说明:

  • 调用银联封装的ApplePay方法。
  • 开发者需注册成为银联的商户并开通ApplePay支付功能,通过银联后台得到交易流水号,再调用此接口。
  • 和StartPay方法相比,此方法集成更加简单,但可定制化程度低,并且只支持中国银联支付。
  • 调用此接口前,请先调用uexApplePay.canMakePayment接口并限定支付网络为"ChinaUnionPay"来检测是否可以进行支付。

参数:

params是JSON字符串

  1. var params = {
  2. orderInfo:,
  3. mode:,
  4. merchantIdentifier:,
  5. };

各字段含义如下:

参数名称 参数类型 是否必选 说明
orderInfo String 银联提供的交易流水号.
mode String 测试类型,取值为”00”、”01”。”00”表示银联正式环境,若开发者已经入网银联支付,可用正式环境测试;”01”表示银联测试环境,测试环境仅用于测试插件功能是否正常
merchantIdentifier String 在苹果开发者中心配置的merchant证书的ID

返回值:

返回值类型 说明
Number 打开支付页面的结果,是一个UexApplePayStartPayResult,详见术语表-UexApplePayStartPayResult

注 : 仅3.3+的iOS引擎才会有返回值,对于旧版本的引擎,请在cbStartChinaUnionPay回调方法获取返回值。

平台支持:

iOS 9.2+

版本支持:

iOS 3.2.0+

示例:

  1. var params = {
  2. merchantIdentifier:"merchant.com.zywx.devTest",
  3. orderInfo:"201603011028451152878",//
  4. mode:"01",
  5. };
  6. var data = JSON.stringify(params);
  7. var result = uexApplePay.startChinaUnionPay(JSON.stringify(data));
  8. if (result != 0 ){
  9. alert("调起支付失败");
  10. }

注:从http://101.231.114.216:1725/sim/getacptn可以获取测试用的orderInfo。

startPay 调起Apple Pay支付

uexApplePay.startPay(params)

说明:

  • 调用iOS原生的ApplePay方法。
  • 和startChinaUnionPay方法相比,此方法集成较复杂,但可定制化程度高,支持所有ApplePay支持的支付渠道
  • 调用此接口前,请先调用uexApplePay.canMakePayment接口并限定支付网络为你的后台支持的支付网络来检测是否可以进行支付。

参数:

params是JSON字符串

  1. var params = {
  2. merchantIdentifier:,
  3. merchantCapability:,
  4. networks:,
  5. currencyCode:,
  6. countryCode:,
  7. payment{
  8. payee:,
  9. totalPrice:,
  10. items:[
  11. {
  12. label:,
  13. price:,
  14. }
  15. ]
  16. },
  17. billingContactRequiredFlag:,
  18. shippingContactRequiredFlag:,
  19. shippingType:,
  20. shippingMethods:[
  21. {
  22. label:,
  23. identifier:,
  24. price:,
  25. detail:
  26. }
  27. ]
  28. };

各字段含义如下:

参数名称 参数类型 是否必选 说明
merchantIdentifier String 在苹果开发者中心配置的merchant证书的ID
merchantCapability Number 账单处理标准,是一个UexApplePayMerchantCapability,详见术语表-UexApplePayMerchantCapability,不传时默认为15
networks Array 进行ApplePay的支付网络,由UexApplePayNetworkKey构成的数组,详见术语表-UexApplePayNetworkKey。不传时默认为系统可选的所有支付网络
currencyCode String 标准货币代码,表示此次支付的默认货币。不传时默认为"CNY",既人民币
countryCode String 2位的ISO Country Code ,表示处理此次支付的区域。不传时默认为"CN",既中国
payment Object 是一个Payment Object,表示这个订单中的账单信息,各字段说明详见下方表格
billingContactRequiredFlag Number 表示此订单的账单联系人的信息需求情况。是一个UexApplePayContactRequiredFlag,详见术语表-UexApplePayContactRequiredFlag.不传时默认为0
shippingContactRequiredFlag Number 表示此订单的运输接受者的信息需求情况。是一个UexApplePayContactRequiredFlag,详见术语表-UexApplePayContactRequiredFlag.不传时默认为0
shippingType Number 表示此订单货物的物流类型。是一个UexApplePayShippingType,详见术语表-UexApplePayShippingType 。不传时默认为0
shippingMethods Array 表示此订单支持的物流方式 。 是由ShippingMethod Object 构成的数组。各字段说明详见下方表格。此字段可通过其他接口更新,开始时可以不传
applicationData String 校验字段。传任何字符串。传入此参数,即可在最后获取的支付token中解析出传入字段的SHA-256 Hash

Payment Object表示这个订单中的账单信息,其各字段含义如下

参数名称 参数类型 是否必选 说明
payee String 表示这个订单的收款人员/机构
items Array 表示此次订单的明细清单,是由Item Object 构成的数组。 Item Object各字段说明详见下方表格。此参数可以不传,表示不提供明细。此参数不传时,totalPrice必传
totalPrice Number 表示这个订单的总金额,此参数唯一确定了此订单的支付金额。见下方说明

说明:对于totalPrice

  • 不传此参数时,插件会自动将传入的所有items中的价格相加作为totalPrice。
  • 若items参数不传,则此参数必传,否则支付会报错。
  • 若传入此参数,则不会进行items价格计算,以传入的参数为准。

Item Object 表示账单中的一个项目,各字段含义如下

参数名称 参数类型 是否必选 说明
label String 项目说明,比如物品名称/运费/折扣名称/税费 等等
price Number 项目价格,支持用负数表示折扣。不传时表示此项目价格还未确定,会用...表示

注:价格未确定的项目在计算totalPrice时,按0处理。

ShippingMethod Object表示一种物流方式,各字段含义如下

参数名称 参数类型 是否必选 说明
label String 物流名称
price Number 物流价格。不传时表示此价格还未确定,会用...表示
identifier String 唯一标识符,传非空字符串,同一个订单内不可重复
detail String 此物流方式的一些额外说明,比如”3天内送达”等等。可以不传

返回值:

返回值类型 说明
Number 打开支付页面的结果,是一个UexApplePayStartPayResult,详见术语表-UexApplePayStartPayResult

注 : 仅3.3+的iOS引擎才会有返回值,对于旧版本的引擎,请在cbStartPay回调方法获取返回值。

平台支持:

iOS 9.2+

版本支持:

iOS 3.2.0+

示例:

  1. var params = {
  2. merchantIdentifier:"merchant.com.zywx.devTest",
  3. merchantCapability:4,
  4. networks:["AMEX","ChinaUnionPay","VISA"],
  5. currencyCode:"CNY",
  6. countryCode:"CN",
  7. billingContactRequiredFlag:4,
  8. payment:{
  9. payee:"AppCan",
  10. items:[
  11. {
  12. label:"item1",
  13. price:5
  14. },
  15. {
  16. label:"item2",
  17. price:8.5
  18. },
  19. {
  20. label:"discount",
  21. price:-1.2
  22. },
  23. ]
  24. },
  25. shippingContactRequiredFlag:2,
  26. shippingType:3,
  27. shippingMethods:[
  28. {
  29. label:"shippingMethod1",
  30. price:1,
  31. detail:"detail1",
  32. identifier:"method1",
  33. },
  34. {
  35. label:"shippingMethod2",
  36. price:2,
  37. detail:"detail2",
  38. identifier:"method2",
  39. }
  40. ],
  41. applicationData:"applicationData",
  42. };
  43. var data = JSON.stringify(params);
  44. var result = uexApplePay.startPay(JSON.stringify(data));
  45. if (result != 0 ){
  46. alert("调起支付失败");
  47. }

commitPaymentMethodChange 确认支付方式变化

uexApplePay.commitPaymentMethodChange(params)

说明:

  • 在onPaymentMethodChange 监听触发之后必须调用此方法,否则支付无法正常进行下去
  • 可以在此方法中更新此次订单的账单,实现诸如信用卡具有额外折扣等功能

参数:

params是JSON字符串

  1. var params = {
  2. payment:,
  3. };

各字段含义如下:

参数名称 参数类型 是否必选 说明
payment Object 是一个Payment Object,同StartPay中的payment参数。不传时表示账单无变化

返回值:

返回值类型 说明
Boolean 调用接口结果。若为false,一般为参数错误或者不完整引起,必须重新调用此接口

注 : 仅3.3+的iOS引擎才会有返回值,对于旧版本的引擎,请在onCommitError监听方法获取返回值。

平台支持:

iOS 9.2+

版本支持:

iOS 3.2.0+

示例:

  1. var params = {
  2. payment:{
  3. payee:"AppCan",
  4. items:[
  5. {
  6. label:"item1",
  7. price:5
  8. },
  9. {
  10. label:"item2",
  11. price:8.5
  12. },
  13. {
  14. label:"discount",
  15. price:-1.2
  16. },
  17. {
  18. label:"信用卡打折",
  19. price:-3
  20. },
  21. ]
  22. }
  23. }
  24. var result = uexApplePay.commitPaymentMethodChange(JSON.stringify(params));
  25. if(!result){
  26. alert("传入参数错误");
  27. //此时应该重新调用uexApplePay.commitPaymentMethodChange方法
  28. }

commitShippingMethodChange 确认物流方式变化

uexApplePay.commitShippingMethodChange(params)

说明:

  • 在onShippingMethodChange 监听触发之后必须调用此方法,否则支付无法正常进行下去
  • 可以在此方法中更新此次订单的账单,实现诸如对不同的物流方式有不同的总价格等功能

参数:

params是JSON字符串

  1. var params = {
  2. payment:,
  3. };

各字段含义如下:

参数名称 参数类型 是否必选 说明
payment Object 是一个Payment Object,同StartPay中的payment参数。不传时表示账单无变化

返回值:

返回值类型 说明
Boolean 调用接口结果。若为false,一般为参数错误或者不完整引起,必须重新调用此接口

注 : 仅3.3+的iOS引擎才会有返回值,对于旧版本的引擎,请在onCommitError监听方法获取返回值。

平台支持:

iOS 9.2+

版本支持:

iOS 3.2.0+

示例:

  1. var params = {
  2. payment:{
  3. payee:"AppCan",
  4. items:[
  5. {
  6. label:"item1",
  7. price:5
  8. },
  9. {
  10. label:"item2",
  11. price:8.5
  12. },
  13. {
  14. label:"discount",
  15. price:-1.2
  16. },
  17. {
  18. label:"运费",
  19. price:5
  20. },
  21. ]
  22. }
  23. }
  24. var result = uexApplePay.commitShippingMethodChange(JSON.stringify(params));
  25. if(!result){
  26. alert("传入参数错误");
  27. //此时应该重新调用uexApplePay.commitShippingMethodChange方法
  28. }

commitShippingContactChange 确认物流信息变化

uexApplePay.commitShippingContactChange(params)

说明:

  • 在onShippingContactChange 监听触发之后必须调用此方法,否则支付无法正常进行下去
  • 可以在此方法中更新此次订单的账单和物流方式,实现诸如对不同的地点提供不同的物流方式等功能

参数:

params是JSON字符串

  1. var params = {
  2. payment:,
  3. shippingMethods,
  4. isPostalAddressInvalid:,
  5. };

各字段含义如下:

参数名称 参数类型 是否必选 说明
payment Object 是一个Payment Object,同StartPay中的payment参数。不传时表示账单无变化
shippingMethods Array 是一个由ShippingMethod Object,同StartPay中的shippingMethods参数。不传时表示订单支持的物流方式无变化
isPostalAddressInvalid Boolean 地址是否无效。传true时会让支付界面提示用户修改当前的地址。默认为false。

返回值:

返回值类型 说明
Boolean 调用接口结果。若为false,一般为参数错误或者不完整引起,必须重新调用此接口

注 : 仅3.3+的iOS引擎才会有返回值,对于旧版本的引擎,请在onCommitError监听方法获取返回值。

平台支持:

iOS 9.2+

版本支持:

iOS 3.2.0+

示例:

  1. var params = {
  2. isPostalAddressInvalid:false,
  3. shippingMethods:[
  4. {
  5. label:"shippingMethod1",
  6. price:10,
  7. detail:"detail1",
  8. identifier:"method1",
  9. },
  10. {
  11. label:"shippingMethod2",
  12. price:5,
  13. detail:"detail2",
  14. identifier:"method2",
  15. }
  16. ]
  17. }
  18. var result = uexApplePay.commitShippingContactChange(JSON.stringify(params));
  19. if(!result){
  20. alert("传入参数错误");
  21. //此时应该重新调用uexApplePay.commitShippingContactChange方法
  22. }

commitAuthorizedResult 确认订单支付结果

uexApplePay.commitAuthorizedResult(params)

说明:

  • 在onPaymentAuthorized 监听触发之后必须调用此方法,告知系统订单支付结果,否则支付无法完成。

参数:

params是JSON字符串

  1. var params = {
  2. result:,//
  3. };

各字段含义如下:

参数名称 参数类型 是否必选 说明
result Boolean 若此次订单支付成功,则传true,否则传false.

返回值:

返回值类型 说明
Boolean 调用接口结果。若为false,一般为参数错误或者不完整引起,必须重新调用此接口

注 : 仅3.3+的iOS引擎才会有返回值,对于旧版本的引擎,请在onCommitError监听方法获取返回值。

平台支持:

iOS 9.2+

版本支持:

iOS 3.2.0+

示例:

  1. var params = {
  2. result:true
  3. }
  4. var result = uexApplePay.onPaymentAuthorized(JSON.stringify(params));
  5. if(!result){
  6. alert("传入参数错误");
  7. //此时应该重新调用uexApplePay.onPaymentAuthorized方法
  8. }

addButton 添加ApplePay按钮

uexApplePay.addButton(params)

说明:

  • 提供一个符合Apple的ApplePay设计规范的支付按钮
  • 注意,Apple的ApplePay设计规范指出此类按钮必须用于ApplePay支付,用于其他用途会导致你的App被Apple Store拒绝。

参数:

params是JSON字符串

  1. var params = {
  2. id:,
  3. x:,
  4. y:,
  5. width:,
  6. height:,
  7. type:,
  8. style:,
  9. scrollWithWeb:,
  10. };

各字段含义如下:

参数名称 参数类型 是否必选 说明
id String 按钮的唯一标识符
x Number 按钮距离屏幕左侧的距离,单位px
y Number 按钮距离屏幕上方的距离,单位px
width Number 按钮宽度,单位px
height Number 按钮宽度,单位px
type Number 按钮类型,插件提供了3中不同的按钮类型,请传0、1或者2,不传时默认为0
style Number 按钮风格,插件提供了3中不同的按钮风格,请传0、1或者2,不传时默认为0
scrollWithWeb Boolean 设置按钮是否跟随网页滑动,不传时默认为false

返回值:

返回值类型 说明
Boolean 是否添加按钮成功。若为false,一般为参数错误或者不完整引起

注 : 仅3.3+的iOS引擎才会有返回值,对于旧版本的引擎,请在cbAddButton回调方法获取返回值。

平台支持:

iOS 9.2+

版本支持:

iOS 3.2.0+

示例:

  1. var data = {
  2. x : 200,
  3. y : 170,
  4. width : 180,
  5. height : 60,
  6. id : "button",
  7. scrollWithWeb : false,
  8. type:0,
  9. style:1,
  10. }
  11. var suc = uexApplePay.addButton(JSON.stringify(data));
  12. alert(suc)

removeButton 移除ApplePay按钮

uexApplePay.removeButton(params)

说明:

  • 移除由addButton接口添加的ApplePay按钮

参数:

params是JSON字符串

  1. var params = {
  2. id:,
  3. };

各字段含义如下:

参数名称 参数类型 是否必选 说明
id String 按钮的唯一标识符

返回值:

返回值类型 说明
Boolean 是否删除按钮成功。若为false,一般为参数错误或者不完整引起

注 : 仅3.3+的iOS引擎才会有返回值,对于旧版本的引擎,请在cbRemoveButton回调方法获取返回值。

平台支持:

iOS 9.2+

版本支持:

iOS 3.2.0+

示例:

  1. var data = {
  2. id : "button",
  3. }
  4. var suc = uexApplePay.removeButton(JSON.stringify(data));
  5. alert(suc)

2.2、回调方法

cbCanMakePayment 检测是否可以进行ApplePay支付的回调方法

uexApplePay.cbCanMakePayment(params)

说明:

  • 在调用uexApplePay.canMakePayment接口后,总是会执行此方法异步返回结果。

参数:

params是JSON字符串

  1. var params = {
  2. status:,//
  3. };

各字段含义如下:

参数名称 参数类型 是否必选 说明
status Number 检测结果,是一个UexAppleCanMakePaymentStatus,详见术语表-UexAppleCanMakePaymentStatus

平台支持:

iOS 9.2+

版本支持:

iOS 3.2.0+

示例:

  1. uexApplePay.cbCanMakePayment = function(info){
  2. alert(info);
  3. }

cbStartChinaUnionPay 进行银联ApplePay支付的回调方法

uexApplePay.cbStartChinaUnionPay(params)

说明:

  • 在调用uexApplePay.startChinaUnionPay接口后,总是会执行此方法异步返回结果。

参数:

params是JSON字符串

  1. var params = {
  2. result:,//
  3. };

各字段含义如下:

参数名称 参数类型 是否必选 说明
result Number 打开支付页面的结果,是一个UexApplePayStartPayResult,详见术语表-UexApplePayStartPayResult

平台支持:

iOS 9.2+

版本支持:

iOS 3.2.0+

示例:

  1. uexApplePay.cbStartChinaUnionPay = function(info){
  2. alert(info);
  3. }

cbStartPay 进行ApplePay支付的回调方法

uexApplePay.cbStartPay(params)

说明:

  • 在调用uexApplePay.startPay接口后,总是会执行此方法异步返回结果。

参数:

params是JSON字符串

  1. var params = {
  2. result:,//
  3. };

各字段含义如下:

参数名称 参数类型 是否必选 说明
result Number 打开支付页面的结果,是一个UexApplePayStartPayResult,详见术语表-UexApplePayStartPayResult

平台支持:

iOS 9.2+

版本支持:

iOS 3.2.0+

示例:

  1. uexApplePay.cbStartPay = function(info){
  2. alert(info);
  3. }

cbAddButton 添加ApplePay按钮的回调方法

uexApplePay.cbAddButton(params)

说明:

  • 在调用uexApplePay.addButton接口后,总是会执行此方法异步返回结果。

参数:

params是JSON字符串

  1. var params = {
  2. result:,//
  3. };

各字段含义如下:

参数名称 参数类型 是否必选 说明
result Boolean 操作是否成功。若为false,一般为参数错误或者不完整引起

平台支持:

iOS 9.2+

版本支持:

iOS 3.2.0+

示例:

  1. uexApplePay.cbAddButton = function(info){
  2. alert(info);
  3. }

cbRemoveButton 移除ApplePay按钮的回调方法

uexApplePay.cbRemoveButton(params)

说明:

  • 在调用uexApplePay.removeButton接口后,总是会执行此方法异步返回结果。

参数:

params是JSON字符串

  1. var params = {
  2. result:,//
  3. };

各字段含义如下:

参数名称 参数类型 是否必选 说明
result Boolean 操作是否成功。若为false,一般为参数错误或者不完整引起

平台支持:

iOS 9.2+

版本支持:

iOS 3.2.0+

示例:

  1. uexApplePay.cbRemoveButton = function(info){
  2. alert(info);
  3. }

2.2、监听方法

onChinaUnionPayFinish 银联ApplePay支付结束的监听方法

uexApplePay.onChinaUnionPayFinish(params)

说明:

  • 在调用uexApplePay.startChinaUnionPay接口后,通过此接口来监听支付结果

参数:

params是JSON字符串

  1. var params = {
  2. result:,
  3. errorInfo:,
  4. otherInfo:,
  5. };

各字段含义如下:

参数名称 参数类型 是否必选 说明
result Number 支付结果 0-支付成功 1-支付失败 2-用户取消了支付 3-支付结果不确定,此时应需查询商户后台以确认支付状态
errorInfo String 支付失败时会通过此字段返回失败的原因
otherInfo String 支付的额外信息会通过此字段返回, 此字段由银联SDK直接提供,请参考银联的相关文档

平台支持:

iOS 9.2+

版本支持:

iOS 3.2.0+

示例:

  1. uexApplePay.onChinaUnionPayFinish = function(info){
  2. alert(info);
  3. }

onPaymentMethodChange 支付方式变化的监听方法

uexApplePay.onPaymentMethodChange(params)

说明:

  • 在调用uexApplePay.startPay接口后,当用户选择或者更改支付方式时,会触发此监听
  • 触发此监听之后,必须调用commitPaymentMethodChange来确认支付方式变化

参数:

params是一个PaymentMethod Object转换而成的JSON字符串。

PaymentMethod Object结构如下

  1. var paymentMethod = {
  2. type:,
  3. displayName:,
  4. network:,
  5. };

各字段含义如下:

参数名称 参数类型 是否必选 说明
type Number 支付方式,是一个UexApplePayPaymentMethodType,详见术语表-UexApplePayPaymentMethodType
displayName String 支付的展示名,仅在申请支付许可时才会有此字段
network String 支付网络,仅在申请支付许可时才会有此字段

平台支持:

iOS 9.2+

版本支持:

iOS 3.2.0+

示例:

  1. uexApplePay.onPaymentMethodChange = function(info){
  2. alert(info);
  3. }

onShippingContactChange 物流联系人变化的监听方法

uexApplePay.onShippingContactChange(params)

说明:

  • 在调用uexApplePay.startPay接口后,当用户选择或者更改物流联系人时,会触发此监听
  • 触发此监听之后,必须调用commitShippingContactChange来确认物流联系人变化

参数:

params是一个Contact Object序列化得到的JSON字符串,Contact Object结构如下

  1. var contact = {
  2. addressInfo:{//联系人地址
  3. country:,//国家
  4. ISOCounrtyCode:,//ISO国家编码
  5. state:,//省/州名
  6. city:,//城市
  7. street:,//街道
  8. postalCode:,//邮编
  9. }
  10. phoneNumber:,//电话号码
  11. emailAddress:,//电子邮件地址
  12. nameInfo:{//电子邮件信息
  13. nameSuffix:,//姓名后缀
  14. namePrefix:,//姓名前缀
  15. middleName:,//中间名
  16. givenName:,//名
  17. familyName:,//姓
  18. nickName:,//昵称
  19. }
  20. };

注:

  • 以上4个主参数分别对应了UexApplePayContactRequiredFlag的4个枚举值
  • 以上参数均为可选参数,具体参数是否存在,取决于用户是否填入相应的信息。

平台支持:

iOS 9.2+

版本支持:

iOS 3.2.0+

示例:

  1. uexApplePay.onShippingContactChange = function(info){
  2. alert(info);
  3. }

onShippingMethodChange 物流方式变化的监听方法

uexApplePay.onShippingMethodChange(params)

说明:

  • 在调用uexApplePay.startPay接口后,当用户选择或者更改物流方式时,会触发此监听
  • 触发此监听之后,必须调用commitShippingMethodChange来确认物流方式变化

参数:

params是一个ShippingMethod Object序列化得到的JSON字符串,字段介绍详见startPay接口中的ShippingMethod Object参数介绍

  1. var param = {
  2. label:,
  3. identifier:,
  4. price:,
  5. detail:
  6. }

平台支持:

iOS 9.2+

版本支持:

iOS 3.2.0+

示例:

  1. uexApplePay.onShippingMethodChange = function(info){
  2. alert(info);
  3. }

onPaymentAuthorized 用户进行支付的监听方法

uexApplePay.onPaymentAuthorized(params)

说明:

  • 在调用uexApplePay.startPay接口后,当用户确认进行支付时,会触发此监听
  • 触发此监听之后,必须调用commitAuthorizedResult来确认支付结果

参数:

params是JSON字符串,结构如下

  1. var param = {
  2. shippingMethod:,//可选,一个ShippingMethod Object,描述了用户最终选择的物流方式
  3. billingContact:,//可选,一个Contact Object(字段可参考onShippingContactChange方法中的介绍),描述了账单接收人的联系人信息
  4. shippingContact:,//可选,一个Contact Object(字段可参考onShippingContactChange方法中的介绍),描述了货物接收人的联系人信息
  5. paymentInfo:{//必选,支付信息
  6. paymentMethod:,//必选,一个PaymentMethod Object(字段可参考onPaymentMethodChange方法中的介绍),描述了支付方式信息
  7. transactionIdentifier:,//必选,苹果ApplePay模块生成的订单标识符
  8. token:{//支付Token,
  9. data:,//加密过的支付信息
  10. signature:,//签名信息,用于校验此token是否有效
  11. version:,//解密key的二次加密方式,为"EC_v1"或者"RSA_v1"之一
  12. header:{//加密Header,
  13. applicationData:,//调用startPay接口时传入的applicationData的SHA256 Hash,用Base64编码得到的字符串
  14. transactionId:,//支付卡ID,根据支付的银行卡由设备的ApplePay模块唯一生成
  15. wrappedKey:,//RSA加密过的解密Key,用于解密data,仅version为"RSA_v1"时存在
  16. ephemeralPublicKey:,//Ephemeral公钥 仅version为"EC_v1"时存在
  17. publicKeyHash:,//二次加密key所用到的公钥的SHA256 Hash,用Base64编码得到的字符串
  18. },
  19. }
  20. }
  21. }
  22. }
  • 支付Token的具体解密方法请参考苹果官方的解密文档
  • 除非测试,否则绝对不要在前端进行解密工作!
  • 正常的操作流程应该是
    • 前端发送paymentInfo到后台
    • 后台校验加密内容是否有效
    • 进行解密工作。
    • 根据解密后的信息调用相应的支付网关进行支付操作
    • 后台得到支付结果 返回给前端
    • 前端调用commitAuthorizedResult告诉插件支付结果,并展示给用户

平台支持:

iOS 9.2+

版本支持:

iOS 3.2.0+

示例:

  1. uexApplePay.onPaymentAuthorized = function(info){
  2. alert(info);
  3. }

onCommitError ApplePay支付提交变化发生错误的监听方法

uexApplePay.onCommitError(params)

说明:

  • 在调用uexApplePay.commitShippingMethodChange、uexApplePay.commitShippingContactChange、uexApplePay.commitPaymentMethodChange、uexApplePay.commitAuthorizedResult这4个接口后,若提交失败,会触发此方法
  • 提交失败的原因多为必要参数缺失/参数格式错误/参数内容不合法引起

参数:

params是JSON字符串,结构如下

  1. var param = {
  2. type:,//触发这个监听的方法类型 0 - uexApplePay.commitAuthorizedResult,1 - uexApplePay.commitShippingMethodChange,2 - uexApplePay.commitPaymentMethodChange ,3 - uexApplePay.commitShippingContactChange,
  3. }

平台支持:

iOS 9.2+

版本支持:

iOS 3.2.0+

示例:

  1. uexApplePay.onCommitError = function(info){
  2. alert(info);
  3. }

onPayFinish ApplePay支付结束的监听方法

uexApplePay.onPayFinish(params)

说明:

  • 在调用uexApplePay.startPay接口后,完成支付或者用户取消支付时,会调用此方法

参数:

params是JSON字符串,结构如下

  1. var param = {
  2. result:,//Number 必选 0-成功 1-失败 2-支付被取消
  3. }

平台支持:

iOS 9.2+

版本支持:

iOS 3.2.0+

示例:

  1. uexApplePay.onPayFinish = function(info){
  2. alert("onPayFinish:" + info );
  3. }

onButtonClick ApplePay支付按钮被点击的监听方法

uexApplePay.onButtonClick(params)

说明:

  • 用户点击由uexApplePay.addButton设置的ApplePay按钮时,会触发此监听。

参数:

params是一个JSON字符串,结构如下

  1. var params = {
  2. id:,//按钮的唯一标识符
  3. };

平台支持:

iOS 9.2+

版本支持:

iOS 3.2.0+

示例:

  1. uexApplePay.onButtonClick = function(info){
  2. alert(info);
  3. }

3、 术语表

UexApplePayNetworkKey

UexApplePayNetworkKey 是一系列字符串,代表了各个银行卡发行商的支付网络

含义
ChinaUnionPay 中国银联发行的借记卡和信用卡
AMEX American Express 美国运通
VISA VISA信用卡
MasterCard MasterCard 万事达卡
Discover Discover Card 发现卡
PrivateLabel 汇丰银行发行的 Private Label Card
Interac Interac 借记卡

UexAppleCanMakePaymentStatus

  • UexAppleCanMakePaymentStatus是一个Number类型的枚举值,表示检测是否支持ApplePay的结果,非0时均表示不能进行ApplePay支付
含义
0 可以进行ApplePay支付
1 系统不支持,uexApplePay插件需要iOS 9.2+的系统 
2 设备不支持,见注1
3 账号不支持,见注2

注1 : 目前支持ApplePay的设备型号有

  • iPhone : iPhone 6,iPhone 6 Plus,iPhone 6s,iPhone 6s Plus
  • iPad : iPad Pro,iPad Air 2,iPad mini 3,iPad mini 4

注2 : 账号不支持包含但不限于以下几种情况

  • 设备登录的苹果账号未在Wallet中绑定指定支付网络的银行卡
  • 设备登录的苹果账号处于锁定状态,或者处于家长监控状态下

UexApplePayStartPayResult

  • UexApplePayStartPayResult是一个Number类型的枚举值,表示调用开始支付接口的结果,非0时均表示打开支付界面失败
含义
0 支付成功
1 传入的参数有误 
2 设备或者系统不支持
3 其他未知错误

UexApplePayMerchantCapability

  • UexApplePayMerchantCapability是一个Number类型的枚举值,表示支持的支付处理标准。
  • 如果需要支持多种处理标准,请将需要支持的标准的值相加后作为最终结果传入。 比如,要同时支持3DS和EMV,请传3。
含义
1 3D Secure 协议
2 EMV 协议 
4 信用卡支持
8 借记卡支持

其中3DS和EMV均同时支持信用卡和借记卡。因此假设你需要限此订单只支持信用卡支付,传4可达到此效果。

UexApplePayContactRequiredFlag

  • UexApplePayContactRequiredFlag是一个Number类型的枚举值,表示需要的联系人信息。
  • 如果同时需要多种信息,请将需要信息的值相加后作为最终结果传入。比如,同时需要联系人的名称和电话号码,请传10。
含义
1 需要联系人详细地址
2 需要联系人电话号码 
4 需要联系人Email
8 需要联系人名称

UexApplePayShippingType

  • UexApplePayShippingType是一个Number类型的枚举值,表示此订单货物的物流类型。
含义
0 表示由商家委托第三方进行运输
1 表示由商家自己进行运输 
2 表示此商品需要去商家店铺提取
3 表示商家会将商品运送至第三方自提点,需要用户去第三方自提点提取商品

UexApplePayPaymentMethodType

  • UexApplePayPaymentMethodType是一个Number类型的枚举值,表示此支付方式的类型。
含义
0 未知类型
1 Debit,借记卡 
2 Credit,信用卡
3 Prepaid,部分商家的预付费卡
4 Store,部分商家联合银行发行的联名信用卡,比如Amazon Store Card

4、 FAQ常见问题

startPay 和 startChinaUnionPay 这2个接口都能进行ApplePay支付,我该用哪个?

  • 如果您需要快速实现ApplePay功能,并且只需要支持中国银联渠道,那么使的startChinaUnionPay接口
  • 如果您的应用需要进行非中国银联渠道的ApplePay 支付,那么只能选择startPay接口
  • 您应该视您的实际使用情况选择用哪个接口。它们的主要区别如下表所示
startChinaUnionPay startPay
前端代码实现难度 简单 较复杂
后端服务器压力 只需和银联服务器进行交互,简单,压力小 需要进行解密工作,解密后还要组织报文进行支付,较复杂,压力较大
前端UI可定制程度 极低,所有UI均有银联SDK定死,无法更改 高,基本所有的UI均可修改,提供更好的用户体验
适用范围 只支持国内,且必须是银联发布的支持ApplePay的银行卡 国外可以使用,支持所有支持ApplePay的银行卡

为什么我无法打开支付的界面?

  • 请确认您在调用startPay或者startChinaUnionPay接口时传入的merchantIdentifier无误,并且此merchantIdentifier在comfig.xml中被正确配置

我能否不用插件提供的ApplePay按钮?

  • 若您的App不需要考虑上架问题(比如企业内部的OA等App),那么完全可以用自己的UI
  • 若您的App需要发布至AppStore,您可以用自己设计的UI,但必须要符合《Apple Pay 识别标志指南》,否则您的应用会无法通过审核

我的应用在启用ApplePay之后被拒了!为什么?

ApplePay有如下原因会导致您的应用审核被拒

  • Apple Pay 页面的UI不符合《Apple Pay 识别标志指南》
  • Apple Pay 按钮不是用于进行ApplePay支付
  • 在不能进行ApplePay支付的设备上提示或者可以选择进行Apple Pay支付(正确的做法是先判断是否可以进行ApplePay支付,再展示ApplePay支付的UI)

5、 接入指引

开发者集成及使用此插件,需要到Apple开发者中心申请Merchant证书,并且在Config.xml中配置相关的MerchantIdentifier才能使用。以下是具体步骤。

一、注册商用ID标识

  • Apple开发者中心登录后,选择”Certificates,Identifiers&Profiles”
  • 在Identifiers下,选择Merchant IDs
  • 在右上角点击”+”按钮
  • 在Description栏、ID栏输入相应信息,点击”Continue”。此处配置的ID,即为merchantIdentifier。
  • 浏览下配置参数,点击”Register”
  • 点击”Done”

二、为你的商用ID标识配置一个证书

  • Apple开发者中心登录后,选择”Certificates,Identifiers&Profiles”
  • 在Identifiers下,选择Merchant IDs
  • 选择列表中的商用ID标识,点击Edit
  • 点击”Create Certificate”,按照指示获取或生成签名证书请求(CSR),点击”Continue”
  • 点击”Choose File”,选择你的CSR,点击”Generate”
  • 关于CSR文件:
    • 有的的支付渠道(比如中国银联)可能会要求上传指定的.CSR文件才能使用其支付功能。
    • 但上传不适配的.CSR文件只影响最后支付的结果
    • 由于从支付渠道申请.CSR文件可以需要一定的时间,因此可以先上传自己生成的.CSR文件进行插件与前端页面调试,待正式的.CSR文件申请成功之后再进行替换,并测试前后端交互。

如果你需要为不同的支付项目配置不同的商用ID标识,步骤一、和二、会进行多次。

三、在你的APP中使用商用ID标识

  • Apple开发者中心登录后,选择”Certificates,Identifiers&Profiles”
  • 在Identifiers下,选择App IDs
  • 选择你的App,点击Edit
  • 在新打开的页面中启用 Apple Pay
  • 点击 Apple Pay 选项栏中的Edit 并勾选你这个App需要使用的所有商用ID标识
  • 完成编辑

注意:每当你编辑了你的App ID,你都需要重新下载mobileprovision文件并用新的mobileprovision文件去打包,否则你的更改将不会生效

四、在config.xml中配置商用ID标识

  • 在config.xml中添加如下配置
  1. <config desc="uexApplePay" type="ENTITLEMENTS">
  2. <entitlement type="merchant" value="merchantIdentifier1"/>
  3. <entitlement type="merchant" value="merchantIdentifier2"/>
  4. </config>
  • 其中<entitlement>节点数量取决于你的App中会用到的商用ID标识数量。你应该为每一个商用ID标识设置一个<entitlement>节点,并修改其中的value值为此商用ID标识的merchantIdentifier。(type值不要更改!)

6、更新历史

iOS

API版本:uexApplePay-3.0.0

最近更新时间:2016-3-2

历史发布版本 更新内容
3.0.0 uexApplePay 插件

Android

uexApplePay不支持Android