开发前准备

在我的博客中 有介绍如何获取ID 和 secret ;

好了 在上一篇博客中详细介绍了也不少;

跨境网上收款 找PayPal没错(如何获取ID 和 secret)

http://blog.csdn.net/qiandublog/article/details/52809731

那么我们在这里就不废话了。

直接上Demo;

随便在本地建立一个开发代码根目录、先建立一个index.html里面就放一个简单的产品名称和产品价格两个input项即可、代码和截图如下:

    <!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>支付页面</title></head><body><div><form action="checkout.php" method="post" autocomplete="off"><label for="item">产品名称<input type="text" name="product"></label><br><label for="amount">价格<input type="text" name="price"></label><br><input type="submit" value="去付款"></form></div></body></html>
  • 输入产品名称 和 价格。点击去付款就会到paypal的付款页面。用你的sandbox测试买家账号去付款。就会发现付款成功。然后登陆你的测试卖家账号。会发现卖家账号已经收到付款。当然这里会扣除paypal收取的手续费。手续费收的是卖家的。
  • 下面来具体看看php是怎么实现的。首先先要把paypal提供的 php-sdk给弄到你的代码目录中来。这里介绍使用php的包管理器composer来获取最新sdk、当然你可以可以从github等其他渠道获取最新的paypal php-sdk。
  • 默认你的电脑已经安装composer了。如果没有自己去度娘或者google下composer安装。
  • 然后在你的代码根目录写一个composer.json文件来获取包内容。json文件代码如下:
{"require" : {"paypal/rest-api-sdk-php" : "1.5.1"}
}
  • 这里如果是 Linux/unix系统就直接再根目录执行composer install来获取包内容。

  • 安装好之后。根目录下面会产生一个vendor目录。里面有composer 和 paypal两个子目录。composer里面实现了自动加载、paypal则是你的sdk内容。
  • 接下来我们来写一个公共文件(这里默认用 app/start.php、你的项目中可以自定义)、其实里面就只是实现了 sdk的autoload.php自动加载 和 创建刚才上面的的client id  和 secret生成的paypal支付对象实例。start.php代码如下:
  • <?php
    require "vendor/autoload.php"; //载入sdk的自动加载文件
    define('SITE_URL', 'http://www.paydemo.com'); //网站url自行定义  如果是本地是 localhost/后面的看你自己的代码位置pay.php的位置 写到文件夹的位置就可以
    //创建支付对象实例
    $paypal = new \PayPal\Rest\ApiContext(new \PayPal\Auth\OAuthTokenCredential('你的Client ID''你的secret')
    );
  • 接下来就来实现表单中提交的处理文件 checkout.php。代码内容如下:
<?php
use \PayPal\Api\Payer;
use \PayPal\Api\Item;
use \PayPal\Api\ItemList;
use \PayPal\Api\Details;
use \PayPal\Api\Amount;
use \PayPal\Api\Transaction;
use \PayPal\Api\RedirectUrls;
use \PayPal\Api\Payment;
use \PayPal\Exception\PayPalConnectionException;require "app/start.php";
if (!isset($_POST['product'], $_POST['price'])) {die("lose some params");
}
$product = $_POST['product'];
$price = $_POST['price'];
$shipping = 2.00; //运费$total = $price + $shipping;$payer = new Payer();
$payer->setPaymentMethod('paypal');$item = new Item();
$item->setName($product)->setCurrency('USD')->setQuantity(1)->setPrice($price);$itemList = new ItemList();
$itemList->setItems([$item]);$details = new Details();
$details->setShipping($shipping)->setSubtotal($price);$amount = new Amount();
$amount->setCurrency('USD')->setTotal($total)->setDetails($details);$transaction = new Transaction();
$transaction->setAmount($amount)->setItemList($itemList)->setDescription("支付描述内容")->setInvoiceNumber(uniqid());$redirectUrls = new RedirectUrls();
$redirectUrls->setReturnUrl(SITE_URL . '/pay.php?success=true')->setCancelUrl(SITE_URL . '/pay.php?success=false');$payment = new Payment();
$payment->setIntent('sale')->setPayer($payer)->setRedirectUrls($redirectUrls)->setTransactions([$transaction]);try {$payment->create($paypal);
} catch (PayPalConnectionException $e) {echo $e->getData();die();
}$approvalUrl = $payment->getApprovalLink();
header("Location: {$approvalUrl}");
  • checkout.PHP通过表单提交上来的参数对支付具体细节和参数进行初始化和设置。这里只列出了常用的部分。paypal提供了很多参数设置。具体更丰富的可以自己参考paypal官方开发者文档。

  • checkout.php设置完参数之后。会生成一个支付链接。用header跳转到这个支付链接(就是paypal的支付页面)到这个支付页面上面就可以用你的sandbox提供的buyer账号去支付了。截图如下:
  • 用buyer账号支付完成之后。去看看你的sandbox的商家账户余额吧。就会发现已经收到了扣除手续费外的钱了。
  • 这里支付成功 或者 失败后还有一个回调的处理。回调处理的php文件再上面的checkout.php里面的setReturnUrl处设置。这里设置的是/pay.php?success=true
  • 接下来我们来看看pay.php是怎么简单处理回调的。先贴上pay.php的代码:
  •     <?phprequire 'app/start.php';use PayPal\Api\Payment;use PayPal\Api\PaymentExecution;if(!isset($_GET['success'], $_GET['paymentId'], $_GET['PayerID'])){die();}if((bool)$_GET['success']=== 'false'){echo 'Transaction cancelled!';die();}$paymentID = $_GET['paymentId'];$payerId = $_GET['PayerID'];$payment = Payment::get($paymentID, $paypal);$execute = new PaymentExecution();$execute->setPayerId($payerId);try{$result = $payment->execute($execute, $paypal);}catch(Exception $e){die($e);}echo '支付成功!感谢支持!';

  • 以上代码如果有不完善的地方  或有什么意见或疑问    请私信或者在评论区评论

跨境网上收款 找PayPal没错(php如何实现paypal支付)相关推荐

  1. Paypal+本地支付,是跨境外贸收款最好的解决方案!

    我是一个做跨境支付行业的从业者,虽然工作时间只有两年多,但对于中国跨境电商的最终环节:收款,有着比较深刻的认识,尤其是外贸行业,尤其是中小B2B/B2C商户的收款. 在目前这个阶段,Paypal和信用 ...

  2. 离岸人民币和跨境人民币收款业务

    离岸人民币 CNH 人民币实质上是政府信用背书的两套货币, 分为在岸人民币和离岸人民币. 日常使用的是CNY, 是在中国大陆流通的货币, 这是在岸人民币, 岸即指中国大陆. 离岸人民币则指在中国大陆以 ...

  3. 跨境电商独立站怎么选择收款方式?

    随着21世纪信息技术的进步,电子商务蓬勃发展不仅仅止步于国内,逐渐突破国界,衍生出了国际电子商务.跨境支付及跨境第三方支付等新业务.跨境电商独立站是通过线上平台把商品卖给外国人,但如何把钱顺利收回来呢 ...

  4. PayPal账户遭大规模冻结!跨境卖家如何自救?

    最近跨境圈最戏谑的一幕应该就是PayPal上海总部下聚集着的声讨者! 依稀记得2021年这一幕也有发生,但在当时只是当个乐子就过了,没有太大的关注:没想到在2022年跨境卖家们却感同身受. 自3月以来 ...

  5. 面对封号潮,跨境收款如何做到不受牵连?

    中国品牌跨境出海的话题不断,但是总绕不开"封号潮",从亚马逊封店到PayPal封禁独立站卖家.汇付国际作为您身边的跨境支付专家给出了这样的见解. 汇付国际盘点:独立站的拦路虎有哪几 ...

  6. 武汉星起航跨境电商到底靠不靠谱?亚马逊跨境收款方式有哪些?

    对于很多卖家来说,搞明白了亚马逊开店需要的资料,还没搞明白开店之后,用什么方式来收款.今天星起航就跟大家分享一下,亚马逊收款有哪些方式? 亚马逊一般都采用第三方收款账户收款的方式,常用的如派安盈Pay ...

  7. Python3+Django2集成PayPal(贝宝)跨境支付三方接口以及订单查询和退款业务

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_157 如果您所在的公司涉及外贸或者跨境支付业务,那一定听说过大名鼎鼎的PayPal,总的来说,PayPal在跨国贸易里的优势还是比 ...

  8. Python3集成PayPal跨境支付三方接口以及订单查询和退款业务!

    如果您所在的公司涉及外贸或者跨境支付业务,那一定听说过大名鼎鼎的PayPal,总的来说,PayPal在跨国贸易里的优势还是比较大的,作为一种外贸支付方式,目前在国际贸易支付服务中倍受亿万用户追捧,是全 ...

  9. 弘辽科技跨境电商创业,你了解多少?看老司机怎么说

    原标题<弘辽科技跨境电商创业,你了解多少?看老司机怎么说> 先不要希望来一个人就把所有事情全给你打理清楚,如果你不了解跨境电商,就永远没办法把握人才.如果是做第三方平台,那就需要先花一周时 ...

最新文章

  1. 在RHEL-4下半小时搭建Sendmail邮件服务器(下)
  2. C#中串口通信编程 收藏
  3. 算法导论8.3-4习题解答(基数排序)
  4. matlab编程ode45,matlab 中ode45的源代码如何看懂
  5. 解析html生成xpath,html使用xpath解析xml
  6. python可以做特效吗_学习mel语言,Python,JavaScript到什么程度才能做一下大型特效,要自已开发插件脚本呢?...
  7. springmvc+mybatis+ehcache+redis+dubbo架构
  8. (21)System Verilog按时间顺序的通知需求(变量驱动)
  9. c语言倒计时不影响进程_初学C语言没有项目练手怎么行,这17个小项目收下不谢...
  10. 数据结构与算法python—14.排序之九种排序详解
  11. ttl接地是高电平还是低电平_TTL 门电路输入端分别接大电阻接地,小电阻接地,或空接,输入的是什么电平???跟是什么类型的门电路......
  12. HTTP请求tomcat版本升级无法识别问题
  13. 鼠标移动让图片倾斜45度
  14. PyTorch深度学习快速入门教程(绝对通俗易懂!!!)
  15. 常用正则表达式,常用表单验证javascript代码(转)
  16. PyMc01短信推断
  17. python现成项目_搭建python项目
  18. Java餐厅点餐系统uniapp源码带安装教程
  19. Docker教程(1)Docker 入门
  20. 元旦给计算机老师发贺词,元旦对老师的祝福语

热门文章

  1. 局域网lan_什么是局域网(LAN)?
  2. 1348:【例4-9】城市公交网建设问题——Kruskal算法
  3. Beta冲刺总结随笔
  4. 调试winddows程序(windbg 和 Debug Diagnostic Tool)
  5. 微型计算机原理中BX是什么,微型计算机原理第7章答案
  6. java file delete 不及时_java中File的delete()方法刪除文件失敗的原因
  7. 从头认识Spring-1.14 SpEl表达式(3)-SpEl表达式的两个坑:Bean的顺序与Bean的toString方法
  8. 【正则表达式】字符与运算符
  9. vue实现物流时间轴效果
  10. 技术前沿---5G技术的实现原理