PHP对接PayPal支付接口

2023-07-07 08:52:12
摘要: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环境来完成接口对接。。

你觉得这篇文章怎么样?

64 0

我们立足于合肥面向安徽乃至全国全球市场,我们拥有一支经验丰富、创意独到、团结协作的专业技术团队。我们立志把最好的技术通过最有效、最简单的方式提供给客户,为客户提供最佳的解决方案,我们将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,帮助客户在新经济时代下,把握商机和发展空间,并获得绝对的竞争力!我们专注于高端网站定制、系统开发、商城开发、外贸网站建设、公众号开发、小程序开发、网站优化推广、安全运维等技术领域。是高端定制网站领域著名服务商!

扫描二维码与小二CMS创始人沟通

7*24小时为您服务

小二CMS专注于高端网站定制、系统开发、商城开发、外贸网站建设、公众号开发、小程序开发、网站优化推广、安全运维等技术领域。是高端定制网站领域著名服务商!

本文标题:PHP对接PayPal支付接口
免责声明:文章《PHP对接PayPal支付接口》来至网络,文章表达观点不代表本站观点,文章版权属于原作者所有,若有侵权,请联系本站站长处理!
—— 小二CMS创始人微信 ——
关于我们

小二CMS专注于高端网站建设服务及定制,拥有丰富的企业网站建站经验。 近年来制作并完成了许多网站建设案例,企业品牌官网、营销型网站的建设、B2C网上商城系统开发、行业门户网站等平台开发,我们还提供了网站的策划、设计、开发、布署、安全等一站式专业的网站建设解决方案。小二CMS致力于研发国内最专业、功能最强大,扩展性能最自由灵活的高端行业通用的网站系统。我们做的不仅仅是网站系统,更多的是成就您的成功!

我们的优势

十年建站服务经验
服务1800家企业
资深行业分析策划
前沿视觉设计、研发能力
前端代码深度符合SEO优化
千家成功案例

独家源码出售
具有完备的项目管理
完善的售后服务体系
深厚的网络运营经验
时刻新技术领先研发能力
方便二次开发

我们的不同

我们是一个年轻且富有激情的团队,我们沉迷于代码并陶醉在设计之中。我们非设计,不生活;无兄弟,不编程!可年轻并不意味着没有经验。团队成员均来自各顶尖设计公司及软件公司,我们对网站设计及开发驾轻就熟,有着数百个成功案例。我们坚信用心服务,用实力说话!我们的使命:通过我们的努力,让技术改变命运!我们的宗旨:客户第一,品质至上!我们的信念:唯有客户的成功,才是我们的成功!

不忘初心,方得始终
中高端网站定制开发服务商
与我们取得联系

好作品自己会说话,

我们敬畏您给予的点滴信任 !

期待携手合作,请立即咨询我们:
QQ咨询 微信咨询
我们用心,期待您成为我们的客户

微信号:
添加微信好友, 详细咨询相关信息。

复制并跳转微信
19810950281