paypal tp 对接_Thinkphp对接Paypal支付

1.首先去paypal开发者平台developer.paypal.com,去创建应用;一般我们是先创建sandbox,等sandbox跑通了再改回 live

2.将paypal的sdk放入thinkPHP,我习惯TP3和TP5都放在Vendor文件夹下

3.在控制器里或者自己封装一个paypal配置信息

require "vendor/autoload.php"; //载入sdk的自动加载文件

define('SITE_URL', 'http://localhost/PayPal'); //网站url自行定义

//创建支付对象实例

$paypal = new \PayPal\Rest\ApiContext(

new \PayPal\Auth\OAuthTokenCredential(

//模拟

'AckAgdCn4XCrgnhpUr7JszYo-svo5MQIYP94Y96TJ19saTrTlFkst9V1P75YCNTM_Knxb3OmjIUlcuGM',//clientId

'EKlhu2S9hWjJl9E9sg3YB4voaH7JR6JTXEr1R-lHbVzskMWl0cgFpIju1Fisd3z8HnL5RpMtl723fE7H'//clientSecret

)

);

4.具体接口

public function checkout()

{

$paypal = $this->start();

$product = I('post.product');

$price = I('post.price');

if (empty($product) && empty($price)) {

echo '';

die("lose some params");

}

$shipping = 0.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("支付描述内容1111")

->setInvoiceNumber(uniqid());

$redirectUrls = new RedirectUrls();

$redirectUrls->setReturnUrl(SITE_URL . '/pay?success=true')

->setCancelUrl(SITE_URL . '/pay?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}");

}

public function pay()

{

$paypal = $this->start();

//print_r($_GET);die;

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);

print_r($_GET);die;

try {

$result = $payment->execute($execute, $paypal);

} catch (Exception $e) {

die($e);

}

//print_r($_GET);die;

echo '';

}

接口的具体写法就是这样,有些数据是可以改的.

有不同的意见可以在下方留言。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值