paypal
概述
因为PayPal的Mobile SDK早已经弃用,不再支持新的集成,SDK设备系统的适配也不会再进行, 此模块不再更新维护。
目前在Mobile App里集成PayPal的话,推荐通过Webview的方式集成PayPal Checkout方案。
最新的PayPal Checkout方案: https://developer.paypal.com/docs/checkout/
PayPal 移动端支付有两种方案:
方案一:跳转到浏览器方式(webview)的快速结账
方案二:原生的 MobileSDK
一:快速结账
快速结账(Express Checkout)是移动端和网页端通用的接口,IOS和android通用,支持paypal支付和信用卡直接支付,可以使用手机浏览器(webview)跳转实现支付。
集成指南
英文:https://developer.paypal.com/webapps/developer/docs/classic/mobile/ht_mec-itemPayment-website/
API签名是使用 Paypal 的身份标识
如何申请参考
Demo及示例代码下载:https://demo.paypal.com/c2/home?locale.x=zh_XC
二:Mobile SDK
内嵌式的mobileSDK,暂时不开放信用卡直接支付功能(只能接收paypal账户付款),仅支持paypal账户登录支付。另外注意发布渠道是否对内嵌式的支付方式有限制。
关于移动支付的集成:本模块即封装的 mobileSDK,按照本模块接口文档即可快速集成此功能。
模块概述
paypal封装了 PayPal 支付的 mobileSDK,使用此模块可在应用内接入 PayPal 支付。接入 PayPal 支付前需要先到 PayPal 注册开发者账号,然后在创建App页面创建 App 获取 Client ID。Client ID 包括测试id(Sandbox)和正式上线id(Live)。使用此模块需云编译或自定义loader
PayPal 支持的货币种类参考
PayPal 的常见问题 FAQ
商户服务器向 PayPal 服务器验证支付结果方法请参看
PayPal支付流程如下:
PayPal支付流程分为两种方式,开发者可根据自身情况自行选择。
商户服务器主动验证:
(1)用户在客户端中点击购买商品,携带商品信息向 PayPal 服务器发起支付请求;
(2)PayPal 服务器收到支付请求,处理后将结果返回客户端;
(3)客户端收到 PayPal 服务器返回的支付结果,将其发送给商家服务器端;
(4)商家服务器收到客户端发来的支付结果,然后向 PayPal 服务器请求验证;
(5)PayPal 服务器端验证结果返回商家服务器;
(6)商家服务器验证本次支付,得到支付结果,本次支付结束;
商户服务器被动动验证:
(1)用户在客户端中点击购买商品,携带商品信息向 PayPal 服务器发起支付请求;
(2)PayPal 服务器收到支付请求,处理后将结果返回客户端;
(3)客户端收到 PayPal 服务器返回的支付结果,将其发送给商家服务器端;
(4)商家服务器等待 PayPal 的异步消息通知(IPN 或者 Webhooks),一般异步消息通知会有一段时间的延迟,通常在几分钟;
(5)PayPal 服务器端验证结果返回商家服务器;
(6)商家服务器验证本次支付,得到支付结果,本次支付结束;
注意:IPN 为 nvp 格式,Webhooks 为 json 格式,都是异步消息通知。 IPN 不在 developer 网站下设置,在 paypal 账户下设置。 Webhooks 的 url 设置是在 的地方完成的。
Paypal 最近是有过对 IPN 的要求更新,PayPal 过去允许使用HTTP进行回发。为了进一步提高安全性,回发到PayPal将仅允许采用HTTPS。 目前,对于从PayPal到商家IPN侦听程序的出站IPN呼叫,没有HTTPS方面的要求。
具体请阅读下面文档。
注: 本模块实现了上述流程的(1)、(2)步骤
使用本模块需先配置key.xml文件
注意:配置 文件是为了初始化支付组件,从 1.0.6 版本起,可以不配置该文件,而通过 initializeWithClientIds 接口初始化支付组件,该接口需要在调用 pay 接口之前调用。
将申请到的 CLIENT_ID_FOR_PRODUCTION 和 CLIENT_ID_FOR_SANDBOX 配置到 (本文件放在 widget 包里的 res 文件夹下)文件内,其格式如下:
字段描述:
paypal_sandboxID:在 PayPal 开发者中心创建 App 后得到的 Client ID For Sandbox。
模块接口
initializeWithClientIds
初始化支付组件,从 1.0.6 版本开始支持本接口。1.0.5之前的版本需要配置 文件才能初始化支付组件。
initializeWithClientIds({params})
params
paypal_productionID:
- 类型:字符串
- 描述:在 PayPal 开发者中心创建 App 后得到的 Client ID For Live
paypal_sandboxID:
- 类型:字符串
- 描述:在 PayPal 开发者中心创建 App 后得到的 Client ID For Sandbox
可用性
iOS系统 Android系统
可提供的1.0.6及更高版本
pay
支付
pay({params}, callback(ret, err))
params
currency:
- 类型:字符串
description:
- 类型:字符串
- 描述:交易商品描述
price:
- 类型:字符串
- 描述:交易商品的价钱,单位:元($)
mode:
- 类型:字符串
- 描述:支付环境,取值范围如下:
- production:线上环境,真实扣款
- sandbox:开发测试环境
- noNetwork:不跟 PayPal 服务器交互,可伪装支付成功状态。用于单元测试
language:
- 类型:字符串
- 描述:(可选项)支付页面语音设置,若不传则默认当前系统语言
- 取值范围:
- ar:阿拉伯文
- da:丹麦文
- de:德文
- en:英文
- en_AU:英文(澳大利亚)
- en_GB:英文(加拿大)
- es:西班牙文
- fr:法文
- he:
- it:意大利文
- ja:日文
- ko:朝鲜文
- ms:蒙特塞拉特岛文
- nb:
- nl:荷兰文
- pl:波兰文
- pt:葡萄牙文
- pt_BR:葡萄牙文(巴西)
- ru:俄文
- sv:瑞典文
- th:泰文
- tr:土耳其文
- zh-Hans:中文(简体)
- zh-Hant:中文(繁体)
- zh-Hant_TW:中文(泰文)
ret:
- 类型:JSON 对象
示例代码
可用性
iOS系统 Android系统
可提供的1.0.0及更高版本