Paypal支付接口

作者: 响呼雷 | 来源:发表于2017-08-17 17:29 被阅读167次

    一、准备工作

    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支付接口

        本文链接:https://www.haomeiwen.com/subject/psggrxtx.html