返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP对接paypal支付的方法
  • 621
分享到

PHP对接paypal支付的方法

2023-06-06 16:06:24 621人浏览 薄情痞子
摘要

本文将为大家详细介绍“PHP对接paypal支付的方法”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“php对接paypal支付的方法”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体内容如下,一起去

本文将为大家详细介绍“PHP对接paypal支付的方法”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“php对接paypal支付的方法”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体内容如下,一起去收获新知识吧。

php有什么用

php是一个嵌套的缩写名称,是英文超级文本预处理语言,它的语法混合了C、Java、Perl以及php自创新的语法,主要用来做网站开发,许多小型网站都用php开发,因为php是开源的,从而使得php经久不衰。

环境准备

  • 注册paypal账号

  • 注册paypal开发者账号

  • 创建paypal沙盒测试账户

  • 创建paypal应用

  • 下载PHP SDK

  • 实现支付

  • 实现支付成功回调

  • 实现退款

  • 更多api代码模板

注册paypal账号

  • www.paypal.com 注册商家账户

  • 选择,”创建商家用户”,根据要求填写信息,注册完得去邮箱激活

注册paypal开发者账号

  • developer.paypal.com 使用上一步注册的账号登录

  • 在左侧导航栏点击Accounts,创建两个sandbox账号,一个个人账号(personal)用于付款,一个商家账号(business)用于收款,系统已经默认创建了两个,可以自己选择创建,方便记忆; 创建账号后记得给当前账号添加余额用于接下来的测试。
    PHP对接paypal支付的方法

  • 用刚才创建的测试账号登录沙盒测试站点,查看金额和交易信息www.sandbox.paypal.com

创建沙盒应用APP

  • 账号默认给创建好了一个Default Application,点击查看获取 ClientId和Secret;保存起来,接下来接口调用会使用到;(上线时请重新创建一个Live的应用)
    PHP对接paypal支付的方法

下载SDK

  • 本人使用laravel框架,使用composer下载paypal包

  • composer require paypal/rest-api-sdk-php

实现支付

  • 以下是生成支付的代码片段,伪代码

    function createPayPal(){      $shippingPrice = 2;      $taxPrice = 0;      $subTotal = 26;      $item1 = new PayPal\Api\Item();      $item1->setName("产品2")->setCurrency("USD")->setQuantity(1)->setPrice(10);      $item2 = new PayPal\Api\Item();      $item2->setName("产品1")->setCurrency("USD")->setQuantity(2)->setPrice(8);      $itemList = new PayPal\Api\ItemList();      $itemList->addItems([$item1,$item2]);      // Set payment details      $details = new PayPal\Api\Details();      $details->setShipping($shippingPrice)->setTax($taxPrice)->setSubtotal($subTotal);      // Set payment amount      //注意,此处的subtotal,必须是产品数*产品价格,所有值必须是正确的,否则会报错      $total = $shippingPrice + $subTotal + $taxPrice;      $amount = new PayPal\Api\Amount();      $amount->setCurrency("USD")->setTotal($total)->setDetails($details);      // Set transaction object      $transaction = new PayPal\Api\Transaction();      $transaction->setAmount($amount)->setItemList($itemList)->setDescription("这是交易描述")          ->setInvoiceNumber(uniqid());//setInvoiceNumber为支付唯一标识符,在使用时建议改成订单号      $payer = new PayPal\Api\Payer();      $payer->setPaymentMethod('paypal');//["credit_card", "paypal"]      $redirectUrls = new PayPal\Api\RedirectUrls();      $redirectUrl = "Http://test.com/redirect/success";//支付成功跳转的回调      $cancelUrl = "http://test.com/redirect/cancel";//取消支付的回调      $redirectUrls->setReturnUrl($redirectUrl)->setCancelUrl($cancelUrl);      // Create the full payment object      $payment = new PayPal\Api\Payment();      $payment->setIntent("sale")->setPayer($payer)->setRedirectUrls($redirectUrls)->addTransaction($transaction);      try {          $clientId = "xxxxxx";//上面应用的clientId和secret          $secret = "XXXXXX";          $oAuth = new \PayPal\Auth\OAuthTokenCredential($clientId, $secret);          $apiContext =  new \PayPal\Rest\ApiContext($oAuth);          if(env('APP_DEBUG') === false ){              $apiContext->setConfig(['mode' => 'live']);//设置线上环境,默认是sandbox          }          $payment->create($apiContext);          $approvalUrl = $payment->getApprovalLink();          dd($approvalUrl);//这个是请求支付的链接,在浏览器中请求此链接就会跳转到支付页面      } catch (\Exception $e) {          dd($e->getMessage());//错误提示      }  }

    PHP对接paypal支付的方法

  • 以下是支付成功的回调代码片段,伪代码

    function payRedirect(Request $request)  {      $paymentID = $request->get('paymentId');      $payerId = $request->get('PayerID');      $clientId = "xxxxxx";//上面应用的clientId和secret      $secret = "XXXXXX";      $oAuth = new \PayPal\Auth\OAuthTokenCredential($clientId, $secret);      $apiContext =  new \PayPal\Rest\ApiContext($oAuth);             if(env('APP_DEBUG') === false ){          $apiContext->setConfig(['mode' => 'live']);//设置线上环境,默认是sandbox      }      $payment = \PayPal\Api\Payment::get($paymentID, $apiContext);      $execute = new \PayPal\Api\PaymentExecution();      $execute->setPayerId($payerId);      try{          $payment = $payment->execute($execute, $apiContext);//执行,从paypal获取支付结果          $paymentState = $payment->getState();//Possible values: created, approved, failed.          $invoiceNum = $payment->getTransactions()[0]->getInvoiceNumber();          $payNum = $payment->getTransactions()[0]->getRelatedResources()[0]->getSale()->getId();//这是支付的流水单号,必须保存,在退款时会使用到          $total = $payment->getTransactions()[0]->getRelatedResources()[0]->getSale()->getAmount()->getTotal();//支付总金额          $transactionState = $payment->getTransactions()[0]->getRelatedResources()[0]->getSale()->getState();//Possible values: completed, partially_refunded, pending, refunded, denied.          if($paymentState == 'approved' && $transactionState == 'completed'){              //处理成功的逻辑,例如:判断支付金额与订单金额,更新订单状态等              return "success";//返回成功标识          }else{              //paypal回调错误,paypal状态不正确              return "error";//返回错误标识          }      }catch(\Exception $e){          dd($e->getMessage());      }  }

退款

  • 退款必须要有支付成功的流水单号

  • 一个流水单号可以进行多次退款

  • 退款成功之后,在账号的交易记录中不体现,测试时请登录测试账号自己记录一下余额的变化情况,以确定退款是否成功

  • 商家账号会减少余额并增加手续费(手续费是之前付款多收的),用户账号会增加余额

    function refundOrder()  {      try{          $refundRequest = new \PayPal\Api\RefundRequest();          $amount = new \PayPal\Api\Amount();          $amount->setCurrency("USD")->setTotal(10);//退总金额          $refundRequest->setAmount($amount);          $refundRequest->setDescription("退款测试");          $sale = new \PayPal\Api\Sale();          $sale->setId("XXXXXXXXX");//支付单号,支付成功时保存的支付流水单号          $clientId = "xxxxxx";//上面应用的clientId和secret          $secret = "XXXXXX";          $oAuth = new \PayPal\Auth\OAuthTokenCredential($clientId, $secret);          $apiContext =  new \PayPal\Rest\ApiContext($oAuth);          if(env('APP_DEBUG') === false ){              $apiContext->setConfig(['mode' => 'live']);//设置线上环境,默认是sandbox          }          $detailedRefund = $sale->refundSale($refundRequest, $apiContext);//调接口          $refundState = $detailedRefund->getState();//Possible values: pending, completed, cancelled, failed.          //var_dump($refundedSale);          if($refundState == 'completed'){              //退款成功,返回          }else{              dd('paypal 退款失败, 状态不正确');          }      }catch (\Exception $exception){          dd($exception->getMessage());//发生异常      }  }

如果你能读到这里,小编希望你对“PHP对接paypal支付的方法”这一关键问题有了从实践层面最深刻的体会,具体使用情况还需要大家自己动手实践使用过才能领会,如果想阅读更多相关内容的文章,欢迎关注编程网PHP编程频道!

--结束END--

本文标题: PHP对接paypal支付的方法

本文链接: https://lsjlt.com/news/247869.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • PHP对接paypal支付的方法
    本文将为大家详细介绍“PHP对接paypal支付的方法”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“PHP对接paypal支付的方法”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体内容如下,一起去...
    99+
    2023-06-06
  • PHP支付-Stripe支付对接支付宝
    安装stripe包 composer require stripe/stripe-php 注册stripe账号,获取公钥和秘钥 获取公钥和秘钥 对接支付宝 $secret_key = 密钥$total_price = 0.5 //支付金额$...
    99+
    2023-10-11
    java junit mysql
  • 码支付易支付等接口对接方法
    有点基础的朋友看看这个,一般网站之类的对接就会简单很多,把接口文件上传到网站运行目录。 html目录:展示付款页面的3种不同方式 includes,lib目录:一些类及函数 不用改动 qr目录:二维码目录 不用管...
    99+
    2023-09-01
    支付对接 对接api Powered by 金山文档
  • PHP对接Ios支付
    流程:   1、前端在调起苹果支付前,先请求到服务端,服务端先生成一条充值记录,但是状态为:未支付;然后把这个订单id发给前端。   2、前端在支付完成的时候,会收到苹果的支付凭证,将此凭证和订单id回传给服务端。订单id的作用是用来确定是...
    99+
    2023-09-04
    php
  • 【连连支付】PHP第三方连连支付对接
    前言: 前不久刚搞定了易宝支付,运营说,不用易宝支付了,改用连连支付。🆗🆗🆗 连连支付搞起~ 对接过程: 一 在商户后台,下载连连提供的密钥生成工具。 获取公私密钥后,在商户后台配置公钥。 ...
    99+
    2023-10-04
    php 连连支付 第三方支付
  • PHP支付,TP5.0接入支付宝支付流程
    一、本地环境的话,首先需要有沙箱 登录支付宝,蚂蚁金服账号(个人支付宝账号)戳这里!戳这里! 点击 右上角的控制台,然后在拉倒最下面,就能看到 沙箱环境 需要自己开启,配置一下信息,特别...
    99+
    2023-09-21
    php mysql
  • thinkphp6 对接支付宝支付 手机网站支付 踩坑
    代码中选择的公钥模式或者证书模式 对应的支付宝后台的https://open.alipay.com开发设置的 接口加签方式(密钥/证书)也要相同 2.tp6引入支付宝的demo 用require_on...
    99+
    2023-09-12
    php 开发语言
  • 对接支付宝php版easysdk接口分享
    在网上没有找到支付宝easysdk接口的对接详细说明,自己一步一步的摸索,其中使用chatgpt的帮助作用不少。 根据官方给的文档 需要执行composer require alipaysdk/eas...
    99+
    2023-09-21
    chatgpt php 开发语言
  • java对接支付宝支付接口开发是怎样的
    本篇文章为大家展示了java对接支付宝支付接口开发是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。第一步(先要在支付宝进行操做,拿到我们需要开发的信息后在动代码)进入蚂蚁金服,我们先要创建应用...
    99+
    2023-06-22
  • PHP语言开发Paypal支付demo的具体实现是怎样的
    这篇文章将为大家详细讲解有关PHP语言开发Paypal支付demo的具体实现是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、开发前准备https://developer.paypa...
    99+
    2023-06-17
  • 微信支付、支付宝支付等常用第三方支付通道接口手续费对比
    目录一、支付市场的份额二、支付手续费与限额三、常用第三方支付通道接口手续费对比支付宝支付接口费率:微信支付接口费率:QQ钱包支付接口费率:银联支付接口费率:京东支付接口费率:通联代付...
    99+
    2023-01-28
    微信支付手续费 支付宝手续费 银联支付手续费 第三方支付手续费
  • Android 支付宝支付、微信支付、银联支付 整合第三方支付接入方法(后台订单支付API设计)
    客户端获取后台支付API请求参数的设计 参数样例: { data: { method: 1, platform: 1, version:"1.0", relate_orde...
    99+
    2022-06-06
    方法 微信支付 支付宝 api Android
  • java对接支付宝支付项目的实战记录
    目录java对接支付宝支付演示成功演示图讲解一下实际支付的时候所需要的参数吧总结java对接支付宝支付演示 现在有不少的项目都需要对接支付,这里主要是进行讲解对接支付宝H5支付 废话...
    99+
    2024-04-02
  • java对接支付宝支付接口开发详细步骤
    目录第一步第二步第三步第四步对接支付宝支付接口,官方文档已经写的很清楚了,但是也有很多像我一样的小白,第一次对接支付宝支付接口,会有些迷茫,所以我在此写下这篇文章,给我和我一样的同学...
    99+
    2024-04-02
  • java对接支付宝支付项目怎么实现
    本篇内容主要讲解“java对接支付宝支付项目怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java对接支付宝支付项目怎么实现”吧!java对接支付宝支付演示现在有不少的项目都需要对接支付...
    99+
    2023-07-02
  • 【超详细,全流程】java对接支付宝支付
    支付流程 一、对接前的准备1.1创建应用,获取参数:APPID(使用沙箱环境可跳过)1.1.1添加产品1.1.2配置密钥,获取第二个参数:商户的私钥1.1.3支付宝网关1.1.4生成参数密钥对...
    99+
    2023-10-21
    java
  • PHP接入微信官方支付(native·APIv3)
    一、项目介绍 两个文件实现微信官方支付(native·APIv3)的发起支付和回调应答功能 二、准备资料 商户号:需要使用到营业执照注册商户appid:小程序或者订阅号的appidAPIv3秘钥:32位秘钥,APIv2秘钥为16位...
    99+
    2023-09-02
    微信 php
  • 〔支付接入〕微信的 h5 支付和 jsapi 支付
    ✨ 目录 🎈 申请商户号🎈 申请商户证书🎈 设置APIv3密钥🎈 下载 SDK 开发包🎈 下载平台证书🎈 关联 AppID 账...
    99+
    2023-08-16
    微信支付 支付 H5支付 php 微信 经验分享 开发语言
  • springboot接入微信app支付的方法
    1.前戏 1.1请先完成微信APP支付接入商户服务中心 1.2详情请参考微信官方文档:https://open.weixin.qq.com/ 2.application.yml文...
    99+
    2024-04-02
  • Android app第三方支付宝支付接入教程
    支付宝的接入相对比较简单,看看支付宝官网的文档基本都能搞定,但是切记一点让你们的后台也要搞清楚支付宝的流程,重中之重。 1、注意事项 开发前一定要阅读支付宝官方文档 强烈建...
    99+
    2022-06-06
    app 支付宝 教程 Android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作