
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环境来完成接口对接。。
扫描二维码与小二CMS创始人沟通:
小二CMS专注于高端网站定制、系统开发、商城开发、外贸网站建设、公众号开发、小程序开发、网站优化推广、安全运维等技术领域。是高端定制网站领域著名服务商!
上一篇: 修改DNS解决个别网站无法访问的问题
下一篇: 使用PHP安全的方式存储和管理密码哈希值
SSL证书是保障网站数据传输安全的基础,也是提升用户信任与SEO排名的必要条件。本文从原理到实操,详解SSL证书的获取、安装与验证全流程,并结合小二CMS的配置技巧,帮助企业快速完成HTTPS部署,让网站既安全又符合搜索引擎规范。
很多企业把内容运营和社会化媒体营销混为一谈,导致策略分散、资源浪费。本文深度解析两者的核心差异、目标导向与执行方式,并结合小二CMS在多平台内容管理与分发上的优势,教你如何让二者相辅相成,构建从内容生产到社交裂变的完整营销闭环,提升品牌影响力与转化效率。
很多企业在建站后发现“不知道写什么”,内容断更导致排名下滑、用户流失。本文针对“企业网站没有内容可写”的常见困境,结合小二CMS的智能选题、素材管理与协作功能,提供从内部挖潜到外部延展的实用方法,帮你建立可持续的内容生产体系,让网站始终有料可发、有吸引力。
许多企业为凑更新量随便写文章,结果排名不升反降、用户流失严重。本文将揭秘“应付性内容”对SEO的伤害,结合小二CMS的智能创作与数据优化功能,分享如何用高质量内容驱动排名与转化,让每一篇文章都成为网站的“流量引擎”。
企业网站是品牌线上门面,但建设与维护中暗藏诸多细节易踩坑!本文结合小二CMS功能优势,梳理从前期规划、技术选型到日常运营的核心注意事项,助企业打造稳定、高效、安全的官网,降低维护成本的同时提升用户体验与转化效率。
本文提供打造高效互动社区论坛网站的全方位指南与实用技巧,涵盖定位规划、功能设计、用户运营、内容管理与技术优化,并结合小二CMS的强大功能,帮助团队快速构建高粘性、高活跃的论坛平台。
本文系统讲解医院网站优化排名的具体流程,涵盖关键词研究、站内优化、内容建设、技术SEO及数据监测,并结合小二CMS的强大功能,助力医疗机构提升搜索引擎可见度与患者访问转化率。
本文深入解析模板网站建设与定制网站设计的核心区别,结合小二CMS的功能优势,帮助企业明确建站需求与投入方向,找到兼顾效率、成本与个性化的最佳方案,提升品牌竞争力。