Paypal支付接口

一、准备工作

1、下载:paypal-sdk 1.12 php(放在自己的项目中,如放在vendor文件夹下)

2、Thinkphp3.2.3

二、创建项目

1、创建自己的项目,如:文件夹app

2、在自己项目下创建四个php文件:UserupController.class.php,PaysuccessController.class.php,function.php.

function.php:

//实例化payapl

functionpayer(){

vendor('paypal.autoload');

$paypal=new\PayPal\Rest\ApiContext(

new\PayPal\Auth\OAuthTokenCredential(

'你的clientId',’你的Secret‘

));

return$paypal;

}

UserupController.class.php

public functionpaypal(){

$paypal= payer();

$uid=$_POST['uid'];

$product=$_POST['product'];

$price=$_POST['price'];

$url=$_POST['url'];

if(!isset($product,$price)) {

die("lose some params,失去一些参数");

}

$shipping=0.00;//运费

$total=$price+$shipping;

//设置付款人,将支付方式设置为paypal

$payer=newPayer();

$payer->setPaymentMethod('paypal');

$item=newItem();//项目

$item->setName($product)//名称

->setCurrency('USD')//货币

->setQuantity(1)//数量

->setPrice($price);//价格

//项目组

$itemList=newItemList();

$itemList->setItems([$item]);

//额外的付款细节

$details=newDetails();

$details->setShipping($shipping)//运输,运费

->setSubtotal($price);//小计

//付款量

$amount=newAmount();

$amount->setCurrency('USD')//货币

->setTotal($total)//交易金额

->setDetails($details);

//交易

$transaction=newTransaction();

$transaction->setAmount($amount)

->setItemList($itemList)

->setDescription("支付描述内容")

->setInvoiceNumber(uniqid());

//重定向网址(设置买方在付款批准/取消后必须重定向到的网址。)

$redirectUrls=newRedirectUrls();

$redirectUrls->setReturnUrl("http://111.11.1.11/DatingNetwork/index.php/Admin/Paysuccess/paysuccess?success=true&uid=$uid&price=$price&product=$product&url=$url")

->setCancelUrl("http://111.11.1.11/DatingNetwork/index.php/Admin/Paysuccess/paysuccess?success=false&uid=$uid&price=$price&product=$product&url=$url");

//付款

$payment=newPayment();

$payment->setIntent('sale')

->setPayer($payer)

->setRedirectUrls($redirectUrls)

->setTransactions([$transaction]);

try{

$payment->create($paypal);//错误点

}catch(PayPalConnectionException$e) {

echo$e->getData();

die();

}

$approvalUrl=$payment->getApprovalLink();

$this->ajaxReturn($approvalUrl);//这个是paypal用户授权地址,你可以用header跳转

}

}

PaysuccessController.class.php

public functionpaysuccess(){

$paypal= payer();

if(!isset($_GET['success'],$_GET['paymentId'],$_GET['PayerID'])){

die();

}

if((bool)$_GET['success']==='false'){

echo'Transaction cancelled!';

die();

}

$funds= M('funds');

$user=new\Admin\Model\UserModel();

$url=$_GET['url'];

$paymentID=$_GET['paymentId'];

$payerId=$_GET['PayerID'];

$token=$_GET['token'];

$price=$_GET['price'];

$product=$_GET['product'];

$uid=$_GET['uid'];

$time=date('Y-m-d H:i:s',time());

$arr=array(

'userid_funds'=>$uid,

'money'=>$price,

'time'=>$time,

'product'=>$product,

'token'=>$token,

'paymentid'=>$paymentID,

'payerid'=>$payerId,

'type'=>0,

);

$user->where('id='."'$uid'")->setInc('user_money',$price);

$user->total($uid,$price);

$funds->add($arr);

$payment= Payment::get($paymentID,$paypal);

$execute=newPaymentExecution();

$execute->setPayerId($payerId);

try{

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

}catch(Exception$e){

die($e);

}

header("Location:$url");

}

}

如有疑问可以随时留言,一起商讨。

你可能感兴趣的:(Paypal支付接口)