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方面的要求。

具体请阅读下面文档。

https://www.paypal-knowledge.com/infocenter/index?page=content&widgetview=true&id=FAQ1916&viewlocale=zh_CN

注: 本模块实现了上述流程的(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及更高版本