zoukankan      html  css  js  c++  java
  • thinkphp使用paypal进行支付的做法详细步骤

    1.登录paypal官网注册账户:https://www.paypal.com (根据自己的需求选择对应的类型)

    2.前往paypal开发者平台https://developer.paypal.com/ 进行创建应用(建议使用谷歌浏览器,有个自带的翻译功能):

    默认会生成一个个人和商家的账户:

    3.前往 https://github.com/paypal/PayPal-PHP-SDK 下载Paypal SDK,我只用 lib 里面的 PayPal,把PayPal 文件夹移动到 tp5 根目录extend 里面

    4.在控制器里面:

    <?php
    namespace app\index\controller;
    use think\Controller;
    class Pay extends Controller
    {
        public function index()
        {
            $apiContext = new \PayPal\Rest\ApiContext(
                    new \PayPal\Auth\OAuthTokenCredential(
                        'AX3W0IBtYR5kZYLMi7C1c1N3pw-IskAjzUcMQ1yPpLsOtx3XyGyqt-8a1HQnNCV4yhqUY4SQfzZIQlPA1',
                        'EGU60KWNx63LMNl0IHmmejAUSCmWu4IxtStqHVCp5TkWJT7wU9nzkYaixbuAC0DXIqapISfMz14a1PWd1'
                      //  'AYQ34DFba39JOpZMu4i9eWy6ywOQd4PrtDl08J-inDofww_kijPZ0MDnGO5G1JPjnRaKapQtZGrwiiwe2',
                      //  'EPw-_9yEgYJBwYYH2UNsDqkOa7zZh9mfl3jZygaw5GUaUTU50Gt9D9toE4GsMnLs9NMdbkMsXRT2YEiW2'
                      //   'ASB5bpbbpPTz8fgiL-an9xjVM3q0V0e_jprRozVgEhyJFqcY6zpn977J8LFlcXyMDJf0XrBdKzYdRTtB2',     // ClientID
                      //  'EO0b3hvD0eseJRYqzrfVspVmsaLj54pXgN3Y8aBoIRtGwGXdGc4qZBmzonOK-HUZHgBnApdx5oH8IIYB3'      // ClientSecret
                    )
            );
            /*sandbox 模式*/
            $apiContext->setConfig(array('mode' => 'live'));
     
     
            $payer = new \PayPal\Api\Payer();
            $payer->setPaymentMethod('paypal');
     
            $amount = new \PayPal\Api\Amount();
            $amount->setTotal('1.00');
            $amount->setCurrency('USD');
     
            $transaction = new \PayPal\Api\Transaction();
            $transaction->setAmount($amount);
     
            $redirectUrls = new \PayPal\Api\RedirectUrls();
            $sn=time();
            $redirectUrls->setReturnUrl("https://mccj.wyzdjg.top/index/pay/Index/returnUrl/sn/".$sn)
                ->setCancelUrl("https://mccj.wyzdjg.top/index/pay/Index/cancelUrl/sn/".$sn);
     
            $payment = new \PayPal\Api\Payment();
            $payment->setIntent('sale')
                ->setPayer($payer)
                ->setTransactions(array($transaction))
                ->setRedirectUrls($redirectUrls);
     
            try {
                $payment->create($apiContext);
                echo $url=$payment->getApprovalLink();
                echo "<br><a href='".$url."'>点击支付</a>\n";
            }
            catch (\PayPal\Exception\PayPalConnectionException $ex) {
                echo $ex->getData();
            }
        }
     
        public function returnUrl(){
            $apiContext = new \PayPal\Rest\ApiContext(
                    new \PayPal\Auth\OAuthTokenCredential(
                            'AYQ34DFba39JOpZMu4i9eWy6ywOQd4PrtDl08J-inDofww_kijPZ0MDnGO5G1JPjnRaKapQtZGrwiiwe1',
                        'EPw-_9yEgYJBwYYH2UNsDqkOa7zZh9mfl3jZygaw5GUaUTU50Gt9D9toE4GsMnLs9NMdbkMsXRT2YEiW1'
                    )
            );
            /*sandbox 模式*/
            $apiContext->setConfig(array('mode' => 'sandbox'));
     
     
            // Get payment object by passing paymentId
            $paymentId = $this->request->param('paymentId');
            $payment = new \PayPal\Api\Payment();
            $payment = $payment->get($paymentId, $apiContext);
            $payerId = $this->request->param('PayerID');
     
            // Execute payment with payer ID
            $execution = new \PayPal\Api\PaymentExecution();
            $execution->setPayerId($payerId);
     
            try {
                // Execute payment
                $result = $payment->execute($execution, $apiContext);
                if ($result && isset ( $result->state ) && $result->state == 'approved') {
                    echo "支付成功";
                }else{
                    echo "支付失败";
                    var_dump($result);
                }
            } catch (PayPal\Exception\PayPalConnectionException $ex) {
              echo $ex->getCode();
              echo $ex->getData();
              die($ex);
            } catch (Exception $ex) {
              die($ex);
            }
        }
        public function cancelUrl(){
            echo '取消支付';
        }
    }
    路是自己走出来的,而不是选出来的。
  • 相关阅读:
    [梦]2005.2.10
    日语广播总汇
    数词与量词
    切忌望文生义的日文汉字
    特別な読み方の漢字
    日本语能力考简介
    一天三练
    兴趣记忆法(1)顺口溜记忆
    兴趣记忆(3)谚语
    兴趣记忆(2)学歌
  • 原文地址:https://www.cnblogs.com/mo3408/p/15741746.html
Copyright © 2011-2022 走看看