全国|切换城市 小程序开发 · APP开发 · 网站建设首选小二CMS,专业高端品牌企业网站制作设计公司,欢迎来电:198-1095-0281 网站软件开发首选小二CMS
NEWS CENTER

建站问题

小二CMS · 专注企业数字化转型的资讯与干货

PHP对接PayPal支付接口

2023-07-07 595 阅读 建站问题 字号
文章摘要

PayPal是一个第三方支付系统,类似于我国的支付宝。PayPal于1998年12月建立,总部在美国加利福尼亚州圣荷塞市。2002年,PayPal在纳斯达克首次上市,随后被eBay收购。

核心要点

PayPal是一个第三方支付系统,类似于我国的支付宝。PayPal于1998年12月建立,总部在美国加利福尼亚州圣荷塞市。2002年,PayPal在纳斯达克首次上市,随后被eBay收购。

PayPal也和一些电子商务网站合作,成为它们的货款支付方式之一。但是用这种支付方式转账时,PayPal收取一定数额的手续费。

由于客户网站对国外用户也需要友好支持,所以需要支持国外的支付,选来选去最终确定了使用PAYPAL支付来接入。。下面就把我接入PAYPAL的流程和方法用流水账的方式记录一下吧。。

首先 在PAYPAL网站上注册了账号,然后不记得是怎么弄的了,就得到了一个客服邮箱,经过与客服不断的沟通客服最终确认回复如下。

居然回复用的都是中文,惊喜吧。。。很人性化吧。。。

通过这个邮件我们可以确认 REST API 是目前来说他们用的最新的接口,这个接口的流程就是

1.首先要获取TOKEN 2.然后根据TOKEN创建订单,response中会返回approve_link,以及后续调用capture接口的URL地址 3.使用浏览器(或者APP中的webview)打开approve_link,让买家登录PayPal账号并确认支付(之后可以通过在创建订单是指定的return URL参数跳转回您自己的页面进行后续流程) 4.在确认买家approve后,调用capture接口执行扣款(需要使用post方法调用),成功的话就表示交易完成并且资金已转入您的账户。

知道流程之后就好说了。。

接下来我们到官方网站看一下API的使用方法就好了。

https://developer.paypal.com/docs/api/overview/

文档里面说首先我们需要创建一个应用,创建了应用之后会有专属的 clientId 和 clientSecret 并且很人性化的提供了沙箱环境以便测试。。

应用创建页面

那些说使用沙箱环境的大神们我不知道他们怎么弄的,,但我用了沙箱之后慢的要死,根本没办法测试,所以最终直接使用真实环境完成对接测试。。

如果你也是国内网络 并且在使用沙箱的时候慢的要死,就直接别考虑了,用真实环境吧。我们点击那个 LIVE标签进入到真实环境 。

点击下面的 CREAT APP 按纽

给你的应用起个名字,然后下一步 你就会看到你需要的ID 和 SECRET。

把ID 和 SECRET 这两个参数保存起来,在调用接口中的时候会用到。。

从文档中我们可以看到,要调用REST API接口首先要获取TOKEN。

这个图截的大了一些,是为了让大家看到下面的代码,,一般情况下大多数人会认为下面的代码就是获取TOKEN的,但有的时候写API文档的人就是这么奇怪,你也不知道他是怎么想的。。本来获取API 一个CURL命令,写了说明之后应该跟上示例。但它这个还真就不是这样的,获取TOKEN的只给出一个链接,想要看示例的话就必须点进去看。。。没办法文档是人家写的就得按人家的方法来。。

点击上图中红框圈起来的链接进入到TOKEN说明文档。

https://developer.paypal.com/docs/api/get-an-access-token-curl/

可以看到这块就是获取TOKEN的方法。。。因为我是用PHP写的代码,所以直接用curl的方法 配合 两个参数去获取TOKEN。 具体代码如下:

$url = "https://api.paypal.com/v1/oauth2/token";
$clientId = "你的ID";
$clientSecret = "你的密钥";
$ch = curl_init ();
  curl_setopt ( $ch, CURLOPT_URL, $url );
  curl_setopt ( $ch, CURLOPT_HEADER, false );
  curl_setopt ( $ch, CURLOPT_HTTPHEADER, array(
  "Content-Type: application/json",
  "Accept-Language: en_US"
));
  curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, false );
  curl_setopt ( $ch, CURLOPT_POST, true );
  curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
  curl_setopt ( $ch, CURLOPT_USERPWD, $clientId . ":" . $clientSecret );
  curl_setopt ( $ch, CURLOPT_POSTFIELDS, "grant_type=client_credentials" );
  $result = curl_exec($ch);
  curl_close($ch);
  echo $result;
这样直接跑就可以,跑完之后得到的接果如下:

{"scope":"https://uri.paypal.com/services/invoicing https://uri.paypal.com/services/disputes/read-buyer https://uri.paypal.com/services/payments/realtimepayment https://uri.paypal.com/services/disputes/Update-seller https://uri.paypal.com/services/paypalhere openid https://uri.paypal.com/services/payments/payment/authcapture https://uri.paypal.com/services/disputes/read-seller https://uri.paypal.com/services/payments/refund https://uri.paypal.com/services/identity/activities https://api.paypal.com/v1/vault/credit-card https://api.paypal.com/v1/payments/.* https://uri.paypal.com/services/reporting/search/read https://uri.paypal.com/payments/payouts https://api.paypal.com/v1/vault/credit-card/.* https://uri.paypal.com/services/subscriptions https://uri.paypal.com/services/applications/webhooks https://api.paypal.com/v1/payments/refund https://api.paypal.com/v1/payments/sale/.*/refund","access_token":"A21AAFoNkPzjPl9Kxuw-1rGgMSA4FY65N3qAgO8OKcqyfmrk6fO1QZN4j6l3V3rc5B2cpBFrAvYf0SbVqdeSsrfwVhxE17G_Q","token_type":"Bearer","app_id":"APP-80W284485P519543T","expires_in":32400,"nonce":"2020-08-12T05:39:26ZAwiJIywrfnIvhNxCYJDjNwufSAj47doGRsin47VPGFo"}
这是一个JSON字符串,里面包含了TOKEN,通过转JSON的方式把TOKEN取出来就好。

至此我们就获取了使用 PAYPAL最初的入门卡,,接下来我们就可以按照一般流程来创建一个订单

$url = "https://api.paypal.com/v2/checkout/orders";
$Token = '你的TOKEN';
$postfilds ='{
 "intent": "CAPTURE",
 "purchase_units": [
    {
      "amount": {
        "currency_code": "HKD",
        "value": "1"
        },
   
   
    "description": "purchase_units_Green XL",
    "custom_id":109,
    
  }],
  "application_context":{
    "cancel_url":"用户取消后你网站的地址",
    "return_url":"用户确认后你网站的地址"
   }
}';     
  $ch = curl_init ();
  curl_setopt ( $ch, CURLOPT_URL, $url );
  curl_setopt ( $ch, CURLOPT_HEADER, false );
  curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, false );
  curl_setopt ( $ch, CURLOPT_POST, true );
  curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
  curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Authorization: Bearer ' . $Token,
    'Accept: application/json',
    'Content-Type: application/json'
));
  curl_setopt ( $ch, CURLOPT_POSTFIELDS, $postfilds );
  $result = curl_exec($ch);
  curl_close($ch);
  echo $result;
这里面最重要的就是 application_context 这里面带的两个网址,一个是用户取消支付后需要跳转的,一个是用户登陆之后确认订单后要跳转的。

PAYPAL的订单流程是这样,先通过接口生成一个订单,成功创建订单后会返回几个链接,其中一个属性为approve 的链接地址就是用户确认订单流程 ,你通过跳转到这个网址后让用户登陆 确认订单。


用户确认订单之后会返回到你设置的 返回网址,并跟了两个参数 其中 token 就是订单的ID。这一步用户只是确认订单,并没有完成真正的付款。。

所以在你返回页面里面你还需要根据参数TOKEN来完成扣款,官方说明叫 “捕获订单”

$url = "https://api.paypal.com/v2/checkout/orders/你获取的token/capture";
$Token = '你的TOKEN';
  $ch = curl_init ();
  curl_setopt ( $ch, CURLOPT_URL, $url );
  curl_setopt ( $ch, CURLOPT_HEADER, false );
  curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, false );
  curl_setopt ( $ch, CURLOPT_POST, true );
  curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
  curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Authorization: Bearer ' . $Token,
    'Content-Type: application/json'
));
  curl_setopt ( $ch, CURLOPT_POSTFIELDS, $postfilds );
  $result = curl_exec($ch);
  curl_close($ch);
  echo $result;
在返回网址里面执行 捕获订单的过程,这样才会完成扣款。

至止,PAYPAL的订单生成 确认 捕获并扣款流程才算走完。。

以上就是接入PAYPAL REST API 的最终成功方法。。

挺早之前我就走过一次它的流程,因为当时用的是沙箱环境,速度慢的要死,一次都没成功过,后来就放弃了。。现在有需求没办法,必须走通。所以直接使用了LIVE环境来完成接口对接。。

文章声明

本文标题:PHP对接PayPal支付接口

文章内容来源于网络,文章表达观点不代表本站观点,文章版权归原作者所有。若有侵权,请联系本站站长处理!

小二CMS介绍

我们立足合肥,业务覆盖安徽、全国及全球市场。我们凭借一支经验丰富、富有创意、协作无间的专业技术团队,专注于将前沿技术通过高效简捷的途径呈现给客户,量身打造优质解决方案。我们致力于通过持续努力,成为客户在信息化领域值得托付、共创价值的长期战略合作伙伴,协助客户在新经济时代敏锐捕捉商机,拓展发展空间,构筑强大竞争力。小二CMS专注企业数字化转型的智能建站与营销系统,提供从官网搭建、品牌推广到运营增长的一站式服务,助力中小企业低门槛拥有专业级互联网阵地。

了解全部业务
小二CMS微信二维码
扫码咨询 · 关注微信

这篇文章对你有帮助吗?

你的每一次鼓励,都是我们持续打磨优质内容的动力

全部评论
0
ABOUT US

关于我们

以 AI 驱动创新,以品质铸造口碑

关于我们

小二CMS一家融合AI人工智能与前沿互联网技术的数字化解决方案服务商,专注于高端网站建设、微信小程序开发、移动端应用研发及企业数字化转型服务。我们将AI技术深度融入产品研发与服务流程,通过智能算法、大模型应用与自动化工具,为客户提供更高效、更精准的数字化解决方案。

自2013年成立以来,我们已成功交付3000+个精品项目,服务客户遍布金融、零售、制造、教育、医疗、互联网等多个行业领域。我们拥有资深的技术团队与丰富的实战经验,在AI智能应用、复杂业务建模、高性能架构设计、跨平台开发及企业级安全保障等方面具备专业能力。

我们相信,AI不是替代人,而是赋能人。选择小二CMS,就是选择一支懂技术、懂AI、更懂您业务痛点的数字化创新团队。让我们以AI之力,将您的品牌愿景与市场机遇转化为可落地的数字现实,共同驱动业务增长与品牌价值升级。

3000+ 精品项目 12年 行业深耕 98% 客户满意
我们的优势
01
AI深度融合大模型+智能自动化
02
十三年深耕专注高端网站建设
03
全栈技术能力前后端+跨平台开发
04
资深策划团队深度洞悉行业需求
05
SEO深度优化搜索引擎友好排名
06
完善售后体系全程无忧技术支持
07
数据安全保障多重防护体系
08
弹性架构灵活支持二次开发
我们的不同

我们是一支充满激情与创造力的团队,痴迷代码,沉醉设计,深耕AI技术。我们坚信:技术不是冰冷的工具,而是驱动商业增长的核动力。

AI先行

将AI融入产品与服务全流程

品质至上

客户第一,追求卓越用户体验

彼此成就

客户的成功,才是我们真正的成功

产品演示

产品演示二维码

请使用微信扫描二维码

查看产品演示

QQ 客服

扫码添加好友 · 专属客服在线

QQ二维码
QQ号:460623785

微信客服

扫码添加 · 一对一专属服务

微信二维码
微信号:yanboss0901
PROFESSIONAL SERVICE

联系我们

选择最适合您的方式 · 专属顾问 7×24 在线为您服务

微信客服

扫码添加 · 一对一专属服务

微信二维码
微信号 yanboss0901

QQ 客服

扫码添加 · 专属客服在线

QQ二维码
QQ号 460623785

电话咨询

工作日 9:00-21:00 · 极速响应

立即拨打

在线客服

智能 + 人工 · 即时沟通

遇到问题?点击进入在线客服,智能助手与人工顾问随时为您解答。

进入在线客服
微信咨询
QQ咨询
电话咨询
在线客服
回到顶部
预约演示 · FREE DEMO

预约产品演示

留下联系方式,顾问将尽快为您安排一对一演示

信息严格保密,仅用于与您联系

提交成功

我们已收到您的预约,顾问将尽快与您联系。