做过跨境电商或者在海外购物网站逛过的朋友都应该知道PayPal,类似于国内流行的支付宝和微信支付,都属于第三方支付平台。在做外贸支付的时候不得不提到的就是PayPal了,毕竟它在国外的市场占有率摆在哪里,当然据做外贸的朋友介绍在东南亚某些国家和地区支付宝的市场份额反超了PayPal。

背景介绍

由于在国内,做的项目需要使用PayPal的并不多,就算有时候需要做外贸项目,很多选择第四方集成。据做外贸的朋友介绍,之所以选择第四方支付是因为虽然在海外PayPal的市场占有率是最高的,然而这种在线支付的普及率远不如国内。而如果分别对接各种第三方支付或者银行支付,将需要对接很多平台,开发成本太高;而做的项目服务不在乎多一点支付的手续费。比如PayPal的手续费是3.9%+0.3美元(每笔),而第四方的相对高个1%左右;从中也可以看得出虽然我们经常吐槽支付宝和微信手续费是暴利,但从此看来国内的支付公司很良心了。

好了,步入正题,对接PayPal支付有多种支付方式,比如按钮支付之类的,而今天我们要跟大家介绍的就是基于PayPal官方提供的PayPal-PHP-SDK进行支付(也就是REST API Samples的方式)的简洁版指南;希望帮助大家能花尽可能少的时间快速实现支付对接。

前期准备

其实跟微信支付宝类似,就是注册帐号然后成为开发者;当然PayPal跟支付宝一样有沙箱模式,因此在开发阶段我们可以使用沙箱帐号来做开发,这样可以不用签约也可以进行开发工作。主要步骤如下:

1.首先去官网注册一个paypal账号。

2.申请完毕并登录,进入开发者中心(https://developer.paypal.com)。创建沙箱应用:

3.点击沙箱应用名称查看接入资料,并配置webhook(正式环境必须配置对应的事件和url地址才能进行相应操作)

4.创建沙箱测试账号,点击查看测试账号登录密码

5.composer安装SDK https://packagist.org/packages/paypal/paypal-checkout-sdk,官方SDK地址为:https://developer.paypal.com/docs/api/rest-sdks/。这个地址包含所有SDK的下载入口,都是托管到github上面的。

6.接入示例

<?php
namespace app\home\controller;
use PayPalCheckoutSdk\Core\PayPalHttpClient;
use PayPalCheckoutSdk\Core\SandboxEnvironment;
use PayPalCheckoutSdk\Core\ProductionEnvironment;
use PayPalCheckoutSdk\Orders\OrdersCreateRequest;
use PayPalCheckoutSdk\Orders\OrdersCaptureRequest;
use PayPalCheckoutSdk\Orders\VerifyWebhookSignature;
class Paypal
{protected $clientId;protected $clientSecret;protected $environment;protected $client;//初始化paypal资料public function __construct($clientId=false,$clientSecret=false){// Creating an environmentif(!$clientId){$clientId = "";}if(!$clientSecret){$clientSecret = "";}//沙箱$this->environment = new SandboxEnvironment($clientId, $clientSecret);正式//$this->environment = new ProductionEnvironment($clientId, $clientSecret);$this->client = new PayPalHttpClient($this->environment);}//生成订单public function create(){$reference_id = @$_GET['balance_sn'];$value = @$_GET['bpprice'];if(!$reference_id || !$value){exit('交易失败');}$request = new OrdersCreateRequest();$request->prefer('return=representation');$request->body = ["intent" => "CAPTURE","purchase_units" => [["reference_id" => $reference_id,"amount" => ["value" => $value,"currency_code" => "USD"]]],"application_context" => ["cancel_url" => "{$_SERVER['REQUEST_SCHEME']}://{$_SERVER['SERVER_NAME']}/Index/PayPal/cancel","return_url" => "{$_SERVER['REQUEST_SCHEME']}://{$_SERVER['SERVER_NAME']}/index/PayPal/returnd"] ];try {// Call API with your client and get a response for your call$response = $this->client->execute($request);if($response->result->links){foreach($response->result->links as $link){if($link->rel == "approve"){header("location:".$link->href);exit;}}}exit("订单生成失败");}catch (HttpException $ex) {echo $ex->statusCode;print_r($ex->getMessage());exit("订单生成失败");}}//关闭订单页面public function cancel(){exit("关闭交易");}//返回确认支付页面public function returnd(){$request = new OrdersCaptureRequest($_GET['token']);$request->prefer('return=representation');try {// Call API with your client and get a response for your call$response = $this->client->execute($request);exit("交易完成");}catch (HttpException $ex) {echo $ex->statusCode;print_r($ex->getMessage());}}//回调public function notify(){$data  = json_decode(file_get_contents("php://input"),true);dump($data);// file_put_contents("notify.log", date("Y-m-d H:i:s")." = ".json_encode($data)."\r\n\r\n",FILE_APPEND);}
}
?>

7.webhook正式环境配置示例,域名必须是https加密,不配置无法请求对应接口,事件参考

Events tracked参考
生成订单 Payment order created
执行付款 Payment authorization created
回调地址 Payment capture completed
订单关闭 Payment order cancelled
其他未测试。。。。

paypal的支付流程跟国内的支付宝支付还是有区别的,总体而言我感觉支付方式不管开发体验还是使用体验都不如国内的支付宝和微信支付。下面把过程中几个可能被大家误解的地方说明下,防止大家入坑。

支付的基本流程是:创建一个支付,发送到paypal服务端并返回一个用户授权地址(在客户端,即我们自己的服务端,并设置一个支付)–>转链到用户授权地址(paypal网站)–>用户授权用户授权完毕(paypal网站,用户登录帐号并同意支付)–>paypal返回到客户端设置的execute地址(这个地址是第一步设置的,在客户端),付款实现。

paypal接入指南相关推荐

  1. C#微信公众号开发系列教程二(新手接入指南)

    此系列前面已经更新了两篇博文了,都是微信开发的前期准备工作,现在切入正题,本篇讲解新手接入的步骤与方法,大神可直接跳过,也欢迎大神吐槽. 微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教 ...

  2. Apollo使用指南(二)公共组件接入指南

    2.1 公共组件和普通应用的区别 公共组件是指那些发布给其它应用使用的客户端代码,比如CAT客户端.Hermes Producer客户端等. 虽然这类组件是由其他团队开发.维护,但是运行时是在业务实际 ...

  3. Apollo使用指南(一)普通应用接入指南

    写在前面: 最近在学习apollo方面的知识,apollo目前托管在GitHub上,相关文档也主要在GitHub上.出于学习的需要,也因为最近众所周知的旧问题和新阻碍,为了能更方便和稳定的访问到这些内 ...

  4. RePlugin插件接入指南

    RePlugin插件接入指南 只需两步,就能让您的App变成"RePlugin插件": 有关"混淆" RePlugin的AAR自带Proguard文件,您无需关 ...

  5. RePlugin 主程序接入指南

    RePlugin 主程序接入指南 只需三步,就能让您的"主程序"接入RePlugin: 注意:目前有开发同学反馈,开启Instant Run时可能会出现运行时异常情况,请临时关掉此 ...

  6. 【微信服务号开发】01.接入指南

    前言 当作为小白,来开发微信的时候,只依据官方文档来开发是很痛苦的,怎么配置,怎么编写代码文件,怎么让映射到外网访问,问题很多,比较痛苦. 下面内容来解决这些痛点,有不懂的问题,可以在下面留言评论哦. ...

  7. 中国电信CTWing物联网平台接入指南(一)之开发流程

    近期研究了下电信NB设备接入平台这一块,整理下电信的物联网平台的接入开发的流程,仅作为经验分享,流程梳理之用,不足之处欢迎指正. 中国电信CTWing物联网平台接入指南(一)之开发流程 中国电信CTW ...

  8. 腾讯云直播SDK接入指南

    现如今直播类的app,如映客,抖音,火山视频等APP,基本大家手里都会安装,很多公司都可能会研发自己的直播系统,在2020年疫情阶段,很多老师采用了远程直播授课的方式.在国内如果你想使用直播技术,那么 ...

  9. 微店开放平台接入指南

    微店开放平台接入指南 1.什么是微店开放平台? 微店平台为ISV和有独立开发能力的店家提供的开发接口,可以独立自主开发出属于自己的应用服务,或者是第三方通用软件服务,跟微信公众平台一个样. 2.类型 ...

  10. 图灵机器人SDK接入指南

    图灵机器人SDK接入指南 图灵机器人:官网 注册账号 注册个账号,创建个应用,进入后台,点开机器人接入,你会看到API key和secret 下载SDK 点击下载Android SDK,解压以后会有l ...

最新文章

  1. Microsoft Web 平台安装程序 (Web PI) Microsoft Web Platform Installer
  2. Docker 安装redis(四)
  3. UA MATH523A 实分析1 集合论基础2 序关系与Zorn引理
  4. mongodb索引--1亿条记录的查询从55.7秒到毫秒级别补充版
  5. centos7 安装Golang环境
  6. java 货架高度摆放最优算法_商铺内部空间摆放竟暗藏玄机
  7. C#/ASP.NET完善的DBHelper,配套Model生成器
  8. Altlas M1 and Tips of Debugger Visualizers
  9. android安全攻防实践_Android安全攻防实战 PDF 下载
  10. [转载] Python中产生随机数
  11. 论文推荐 | 一文了解百度10篇ACL 2019概况和该技术的实际可落地应用
  12. OpenCV——距离变换与分水岭算法的(图像分割)
  13. 一个简单的JavaWeb项目
  14. Bloombox:iPhone陶瓷底座,还能当花盆和扩音器
  15. 爬取哔哩哔哩单个视频
  16. 量子计算机进行量子传输,量子技术新突破:按一下按钮就能实现量子传输!
  17. 微信小程序旋转动画,图片转动view旋转等
  18. 如何成功搭建一个游戏平台?
  19. C# 用Microsoft.Office.Interop.PowerPoint类库操作PPT
  20. 4412开发板UT-Exynos4412三星A9四核4412开发平台调试android4.0GPS功能信号超强

热门文章

  1. 《数字图像处理》:直方图处理的几种方式
  2. 数组除重和运用随机点名的简单运用
  3. 中国神话--学术性研究
  4. 成都信息工程大学校友小程序设计方案
  5. 值得收藏-50个免费可商用图库
  6. 什么是zone?如何做zone?如何做好zone?
  7. php mail 标题乱码
  8. 几何图形识别 python_pygame能识别简单的几何图形吗?
  9. wpf 鼠标拖动绘制几何图形
  10. 【期刊推荐】JCR2区数学算法优化类重点SCI期刊征稿中~