• Yii2 對接 PayPal 支付接口


    PayPal 的開發者中心: https://developer.paypal.com

    PayPal對接比較複雜,而且文檔多,接口也多,不知道要調用哪個。

    我用的是PHP的Releases版本 , https://paypal.github.io/PayPal-PHP-SDK/,點進Releases下載就行

    下載完後,直接放到components(我用的是yii2框架)

    直接引用進來

    require_once dirname(dirname(__FILE__)).'/components/PayPal/autoload.php';

    先看前端

    $("#pay").click(function(){
            var pay_way = $("input[type='radio']:checked").val();
            if(pay_way == 1){
                wap_pay(1)  //支付寶
            }else if(pay_way == 2){
                wap_pay(2)  //微信
            }else if(pay_way == 3){
                paypal_pay() //調用paypal
            }
        });        

    paypal_pay()函數

    function paypal_pay(){
            var CREATE_PAYMENT_URL = "<?php echo Yii::$app->request->getHostInfo().'/'.Yii::$app->params['paypal_url'];?>";
            paypal.request.post(CREATE_PAYMENT_URL,{_csrf:_csrf,ssid:ssid}).then(function(data){
                window.location.href = data 
            })
        }
    上面的 CREATE_PAYMENT_URL ,其實就是後臺的一個路由:

    'paypal_url' => 'order/paypal',
    內容如下
    public function actionPaypal()
        {
            $ssid = Yii::$app->request->post("ssid");
            $online_order = OnlineOrder::find()->where('order_code = :ssid',[':ssid'=>$ssid])->one();
            $data = OnlineOrder::findOrderDetail($online_order);
            $url = Helper::PayPal($data);
            echo $url;
        }

    Helper.php 的 PayPal函數

    public static function PayPal($data)
            {
                $clientId = Yii::$app->params['clientId'];
                $clientSecret = Yii::$app->params['clientSecret'];
               
                $paypal = new ApiContext( new OAuthTokenCredential($clientId, $clientSecret));
                
                //汇率
                $mop = Helper::HKDrate();   //第三方匯率轉換
                $money = $data['total_money'] * $mop;
               
                $product = '商品名';
                
                $payer = new Payer();
                $payer->setPaymentMethod('paypal');
                
                $item = new Item();
                $item->setName($product)
                ->setCurrency('HKD')
                ->setQuantity(1)
                ->setPrice($money);
                
                $itemList = new ItemList();
                $itemList->setItems([$item]);
                
                $details = new Details();
                $details->setShipping(0)
                ->setSubtotal($money);
                
                $amount = new Amount();
                $amount->setCurrency('HKD')
                    ->setTotal($money)
                    ->setDetails($details);
                
                $transaction = new Transaction();
                $transaction->setAmount($amount)
                ->setItemList($itemList)
                ->setDescription("商品描述")
                ->setInvoiceNumber(uniqid());
                
                $redirectUrls = new RedirectUrls();
                $redirectUrls->setReturnUrl(Yii::$app->request->getHostInfo().'/'. Yii::$app->params['pay_success_url'])
                ->setCancelUrl(Yii::$app->request->getHostInfo().'/'. Yii::$app->params['pay_cancel_url']);
                
                $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();
                return $approvalUrl;
            }


  • 相关阅读:
    [转载]MAXIMO数据收集的要素探究
    cmctrl和lsnrctl
    word2007如何从第三页开始插入页码(转)
    广东电信测网速软件下载地址
    投标书如何写?(转)
    sql server 2000安装中出现:command line option syntax error,type command/? for help解决方法(转)
    LAPACK(2)——使用基础
    LAPACK(1)——安装与测试
    Ubuntu11.04网络配置与问题排除
    LAPACK(4)——矩阵特征值和特征向量的求解
  • 原文地址:https://www.cnblogs.com/weishuan/p/7464190.html
Copyright © 2020-2023  润新知