前言:

我们在2017年,在我们的业务中接入了paypal支付,当时使用的PayPal Android SDK,github地址  ,期间一切正常,最近paypal官方发来一封邮件,重要集成变更

在PayPal,我们始终将为用户及其客户提供安全、可靠的网上购物和移动支付体验作为我们的一项首要任务。为最大程度确保客户和交易数据的安全,我们将从2020年12月7日起停止使用PayPal的手机软件开发工具包(SDK)和通过Braintree JS SDK版本2进行的PayPal付款。

我们的记录显示,您的账户正在使用PayPal手机软件开发工具包(SDK)或Braintree的JS SDK v2在您的应用程序中进行PayPal支付。为避免在使用PayPal时遭遇服务中断,您必须在12月7日之前以其他方式与PayPal Checkout进行集成。

您需要做什么?

为避免服务停用,我们建议您使用以下集成选项之一:

选项1:直接与v2/订单 API集成

此选项是一种基于网络的结账体验,必须与API集成。如需详细了解如何通过此API集成,请参阅以下开发者参考资料:

•    订单API集成指南
•    也可与Direct SDK一起使用
•    Direct SDK快速入门指南

选项2:与PayPal JavaScript SDK集成

通过此基于网络的选项,交易将通过添加到您网站的按钮重定向到PayPal或Venmo移动应用程序。

您还可以参考以下开发者资源指南:

•    概述
•    集成指南
•    自定义SDK脚本
•    最佳做法
•    用于服务器端集成的Direct SDK

选项3:从Braintree JS SDK v2升级到JS SDK v3以支持PayPal付款。

PayPal Android SDK ,github上也早就标注:是的,12月7日要修改,不然要停服!

Important: PayPal Mobile SDKs are Deprecated. The APIs powering them will remain operational long enough for merchants to migrate, but the SDKs themselves will no longer be updated. Please use Braintree Direct in supported countries. In other countries, use Express Checkout and choose the Braintree SDK integration option.

下面开始改造。

针对3种方案:

我优先选择的是Braintree,网上也能查到一些资料,并且我们在沙箱环境下已经验证通过,但是最终放弃,选择的是 选项2:与PayPal JavaScript SDK集成

一些弯路:

与paypal方沟通如下:

关于您现在更换集成Braintree的事宜,首先,Sandbox是PayPal的测试环境,可供我们的用户测试所有的相关产品,没有地域限制。但是在正式环境中,一些产品的集成是有国家或地域限制的,不同国家或地区各有不同的集成产品。而对于Braintree来说,在正式环境中,中国大陆的PayPal账户是不支持的,也就是您无法集成Braintree,目前仅支持美国等少数一些国家和地区的PayPal账户。

而针对于此次的PayPal手机软件开发工具包更换集成的工作,您其实只需要选择以下两种方案之一即可,无需更换集成BrainTree,这两种方式较之Braintree来说,是比较简单且易于集成的。您可以参阅以下的详细内容:

我优先准备选择Braintree的, 关于您现在更换集成Braintree的事宜,首先,Sandbox是PayPal的测试环境,可供我们的用户测试所有的相关产品,没有地域限制。但是在正式环境中,一些产品的集成是有国家或地域限制的,不同国家或地区各有不同的集成产品。而对于Braintree来说,在正式环境中,中国大陆的PayPal账户是不支持的,也就是您无法集成Braintree,目前仅支持美国等少数一些国家和地区的PayPal账户。

  • 您说的“对于Braintree来说,在正式环境中,中国大陆的PayPal账户是不支持的”,这个paypal账户 是指商家账户还是终端客户?我们场景是:我们是中国大陆企业,提供服务给海外客户,也就是 海外客户 通过我们的app 向我们付款,请帮忙确认一下。

不支持,指的是收款方PayPal账户,也就是您的中国大陆PayPal账户(xx×××xxx@qq.com)。您的海外客户,乃至全球的其他买家,由于其是付款方,并不涉及到任何技术集成问题,他们仅是按照收款方/卖家的相应技术集成来进行付款,即:收款方/卖家/商家采用什么样的收款集成方式,他们就用什么样的方式来付款。所以,与您的买家/海外客户/终端客户是没有任何关系的。

  • 我大概看了一下方案1 和 方案2 是基于网站的集成方式,我们之前的场景是 通过App 跳转paypal支付,目前根据规则 需要替换“PayPalAndroidSDK-2.16.0.aar”,我们还是 用方案1或者方案2吗?

您是需要替换PayPalAndroidSDK的集成方式,也就是,之前通过以下两种方式集成的手机端App,将会在2020年12月7日以后失效。取而代之的就是之前回复您的几种方案,您可以任选一种。

https://github.com/paypal/PayPal-iOS-SDK
https://github.com/paypal/PayPal-Android-SDK

  • 我们如果在12月7日前 没有更改,我们的用户是不是将无法通过paypal给我们支付

是的,如果您届时还没有进行更改,那么您的用户将无法通过之前的App给您付款。

  • 是否有相关集成示例demo(Android & IOS)?

Android 或者 IOS其本身的SDK是没有的,因为即将失效了。但是您可以参阅以下的Demo,一样可以完成集成技术工作。

- 介绍与集成文档     https://developer.paypal.com/docs/checkout/integrate/
- 在线 DEMO     https://developer.paypal.com/demo/checkout/#/pattern/checkout

另外,如果您希望纯后端API调用的方式集成我们的支付产品,而不需要在HTML页面上展示PayPal支付按钮,也可以选择直接调用我们的REST API 的方式来集成支付功能,详细文档请参考:

- REST API 调用基础 https://developer.paypal.com/docs/api/overview/
- Server端接口调用文档 https://developer.paypal.com/docs/checkout/reference/server-integration/

  • 在 https://github.com/paypal/PayPal-Android-SDK README.md中,有句话:

Important: PayPal Mobile SDKs are Deprecated. The APIs powering them will remain operational long enough for merchants to migrate, but the SDKs themselves will no longer be updated. Please use Braintree Direct in supported countries. In other countries, use Express Checkout and choose the Braintree SDK integration option.

关于这点,首先,Supported country里显示的是“Hong Kong SAR, China”,指的是“中国香港地区”,而不是“中国大陆”,您的PayPal账户是属于“中国大陆”的账户。中国香港地区的PayPal账户是可以集成Braintree的。其次,这句话“In other countries, use Express Checkout and choose the Braintree SDK integration option.”的意思是,您/中国大陆的PayPal收款方/商家账户是可以通过Express Checkout via Braintree来集成(简称ECBT),该集成方式与Braintree SDK是不同的产品,虽然名称上很相近,但却是不一样的集成方式。但是如果您做手机端App的集成,我们不推荐您使用ECBT来完成,因为该产品目前还有一些不完善的地方,所以我们还是依然建议您使用方案1或者方案2。

好了,正文来了。

付款流程:

1.整合Smart PayMent Button 到页面中;

2.用户点击支付按钮

3.按钮自动调用 Order API 创建交易

4.进入paypal支付界面

5.用户参与:登录 、确认等支付

6.集成的paypal自动继续调用Order API 完成交易

7.显示成功信息

整个支付过程都由JS 中完成

代码整合:

在项目assets 中 放入index.html

<!DOCTYPE html>
<html lang="en"><head><!-- Add meta tags for mobile and IE --><meta name="viewport" content="width=device-width, initial-scale=1"><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title> PayPal Smart Payment Buttons Integration | Client Demo </title>
</head><body>
<!-- Set up a container element for the button -->
<div id="paypal-button-container"></div><!-- Include the PayPal JavaScript SDK -->
<script src="https://www.paypal.com/sdk/js?client-id=sb&currency=USD"></script></body></html>

其中client-id = sb 为沙箱环境,也可以替换成子机的沙箱id ,正式环境再更换成正式的id

在js中写入

<script >let invoiceid = '';//服务器下单,订单号let custom = '';//构造的用户id,sourceIDlet amount = '0.0';//金额(美金)//传递参数,用于调起web paypal时,传递订单号+金额等function initData(invoice,customtmp,amounttmp){console.log("initData:"+invoice+","+customtmp+","+amounttmp)invoiceid = invoice;custom = customtmp;amount = amounttmp;return "OK";};// Render the PayPal button into #paypal-button-containerpaypal.Buttons({// Set up the transactioncreateOrder: function(data, actions) {//console.log("invoiceid:"+invoiceid+",custom:"+custom+",amount:"+amount);return actions.order.create({purchase_units: [{invoice_id:invoiceid,custom_id:custom,amount: {value: amount}}]});},// Finalize the transactiononApprove: function(data, actions) {return actions.order.capture().then(function(details) {// Show a success message to the buyer//alert('Transaction completed by ' + details.payer.name.given_name + '!');//这里可以加个回调javascript:obj.onApproveSuccess()});},onError: function (err) {//console.log(err);javascript:obj.onApproveFailue(err);}}).render('#paypal-button-container');</script>

createOrder为创建订单,onApprove为用户授权并付款完成,OnError:出错了,OnCancel:取消了

上面加了个自定义函数:

initData目的为了传参,携带订单号、金额等信息至js

app 调用 并完成支付后,通过后台配置的IPN通知回调,服务器将获取paypal方发来的回调,并通过此订单号对接 相关业务。

demo 附上:

https://download.csdn.net/download/zhangwm1219/13210685

Android 最新版 Paypal 智能付款按钮 Paypal JavaScript SDK 集成:Smart Payment Buttons相关推荐

  1. 使用C#和ASP.NET Core的PayPal智能按钮的客户端/服务器实现

    目录 学习成果 先决条件 创建具有以下行标题的电子表格 创建PayPal商业帐户 获取API凭据--即客户端ID和密码 获取实时的API凭证 什么字段添加到您的数据存储 服务器端代码 从GitHub存 ...

  2. php集成paypal付款流程,在PHP中集成PayPal标准支付

    PayPal支付功能其实一直在更新文档和接口,这里说的是一个简单的支付功能大概流程如下 1,在网站的结账页面,设置一个提交到PayPal网站的form,里面有一些金额,商品名称,商家收款账号.结账成功 ...

  3. PayPal网站付款标准版(for PHP)

    原文:PayPal网站付款标准版(for PHP) 简单整理一下PHP项目整合PayPal支付功能. 一.表单的构建: <form method="post" name=&q ...

  4. PayPal 如何付款

    了解买家如何付款 第一步,登录 www.paypal.com ,点击"付款"选项卡. 第二步,付款,您可以通过两种方式进行付款: 方法1 点击"付款给任何人"子 ...

  5. paypal for php,PayPal网站付款标准版(for PHP),paypal标准版_PHP教程

    PayPal网站付款标准版(for PHP),paypal标准版 简单整理一下PHP项目整合PayPal支付功能. 一.表单的构建: form> 二.IPN验证部分 phpclasspaypal ...

  6. paypal付款,PayPal Subscribe和PayPal Check Out的区别

    又到了VPS续费的时候了,应该有不少朋友和VPS小学生一样收到IDC发来的续费邮件,在点击邮件中的续费链接后,右上角的paypal有两个选项PayPal Subscribe和PayPal Check ...

  7. paypal php接口 下载,PayPal接口集成之:PHP集成PayPal标准支付接口

    1,在网站的结账页面,设置一个提交到PayPal网站的form,里面有一些金额,商品名称,商家收款账号.结账成功后返回URL等内容, 2,用户结账时,通过点击'使用PayPal结账'的按钮到达PayP ...

  8. paypal注册_使用PayPal补习注册(2/3):PayPal项目的真实注册

    paypal注册 解释PayPal的工作方式(IPN和PDT流程). 第一 章第三章 第二章 本章从头到尾介绍一个真实的项目:"通过付款进行注册",以更好地说明PayPal帐户设置 ...

  9. paypal Javascript sdk 笔记

    通过引入第三方npm包下载 javascript sdk插件 可以分正式环境和测试环境 https://developer.paypal.com/sdk/js/ 测试环境: sandbox mode ...

最新文章

  1. 使用Navicat定时备份mysql数据库和创建报表并邮件自动发送
  2. BZOJ 1121 science
  3. varchar和Nvarchar区别 ----转载
  4. python3.5安装pip_win10上python3.5.2第三方库安装(运用pip)
  5. php 中的作用是什么,php中static关键字的作用是什么
  6. android xml图片旋转,如何在Android中进行平滑的图像旋转?
  7. android之AlarmManager 全局定时器
  8. python释放变量内存_2020Python面试题:Python是如何进行内存管理的?
  9. [转]BVH文件介绍
  10. Quartus 实现D触发器及仿真
  11. Ubuntu中安装ns3
  12. excel相同字段多行合并_EXCEL里如何快速把多行数据合并为一行并以逗号隔开?...
  13. C/C++编程学习 - 第20周 ⑩ 量身高
  14. 基于pytorch卷积人脸表情识别--毕业设计
  15. ssh 所选的用户密钥未在远程主机上注册
  16. ajax用户登录注册
  17. 线上教学是计算机在什么方面的应用,浅谈线上线下混合式教学模式在计算机基础教学中应用...
  18. 下载及安装NCCL教程
  19. Ubuntu16.04通过docker安装微信和QQ
  20. Case Study _均值方差模型 MatLab

热门文章

  1. win10 与 ubuntu16.04 通过 secureSCR 建立samba映射
  2. 2019【蓝桥杯】省赛 C++ A组题目
  3. win7蓝屏_电脑蓝屏0x0000007b怎么稳定解决?
  4. (系统的推送)友盟推送
  5. 脉冲函数、阶跃函数和斜坡函数
  6. 蓝桥杯倒计时 | 倒计时10天
  7. 图像中的高频分量和低频分量
  8. SpreadJS 表格控件发布V11版本,新增图表及前端PDF导出!
  9. 华为网络安全论述题解析(2)
  10. Zynq UltraScale+ MPSoC智能视频平台1:Camera Link接收IP