paypal支付接口

作者: 响呼雷 | 来源:发表于2020-03-11 16:29 被阅读0次

一、准备工作

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 function paypal()
{
    $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 function paysuccess()
{
    $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支付接口

    一、准备工作 1、下载:paypal-sdk 1.12 php(放在自己的项目中,如放在vendor文件夹下) 2...

  • paypal支付接口

    一、准备工作 1.下载:paypal-sdk 1.12 php(放在自己的项目中,如放在vendor文件夹下)2....

  • python paypal支付接口开发

    (第一次接触支付,理解可能也不是很深,欢迎批评指正) paypal是目前全球最大的在线支付工具,就像国内的支付宝一...

  • paypal小坑

    paypal完成回调 已经完成和将要完成paypal支付不可同时出现,不然会不走已经完成paypal支付的方法.

  • paypal 支付流程

    推荐资料 接入 paypal PHP-sdk 支付 / 回调 / 退款全流程 paypal/PayPal-PHP-...

  • PayPal 支付

    Git https://github.com/paypal/PayPal-Android-SDK/blob/mas...

  • java服务器端接入paypal移动支付

    前段时间app要推广到香港,那边人微信支付宝用的少,所以就接入了paypal支付,paypal支付比支付宝支付要简...

  • 支付战争 - Paypal 的创业笔记

    支付战争 讲述的是知名的在线支付平台 Paypal 的创业历程。书的作者当时担任 Paypal 的管理职位,给大家...

  • Shopify 支付方式

    1. PayPal:PayPal 允许通过信用卡、银行帐户、买方信用卡或 PayPal 帐户余额进行支付。 要求:...

  • 你知道支付宝,但你知道paypal吗?

    到PayPal,很多人会拿支付宝来比喻,这样听者一下子就明白PayPal是做什么的了。虽然PayPal与支付宝都是...

网友评论

    本文标题:paypal支付接口

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