国产精品一区二区三区……-大杳蕉伊人欧美一本遒在饯-日本不卡一区免费在线观看-国产亚洲欧美中文字幕

400-800-9385
網(wǎng)站建設(shè)資訊詳細(xì)

商城網(wǎng)站對(duì)接paypal支付接口

發(fā)表日期:2023-07-18 17:18:05   作者來(lái)源:劉紅旺   瀏覽:1819   標(biāo)簽:商城網(wǎng)站建設(shè)    
第一步申請(qǐng)賬號(hào):

1.注冊(cè)paypal開(kāi)發(fā)者賬號(hào)  
 

paypal支付


 
2.創(chuàng)建自己的應(yīng)用
live:是上線模式
sendbox:沙盒模式

創(chuàng)建應(yīng)用
 

paypal沙盒
 

 

 

 


 
3. 獲取client id和 client secret

 獲取密鑰
 
4.創(chuàng)建支付訂單
 
初始化參數(shù)
   public function _initialize()
    {
        parent::_initialize();
        $PaymentModel = new PaymentModel();
       
        $config = $PaymentModel->getCacheClass('paypal');
        //dump($config);exit;
        if(empty($config)) {
            echo '支付參數(shù)未配置!';
            exit();
        } else {
            $this->clientId =   $config['app_id'];
            $this->clientSecret = $config['app_key'];
        }
       
        $request = Request::instance();
        $base_url = $request->domain();
 
        $this->accept_url = $base_url.'/paypal/callback';//回調(diào)地址
     
       
        $this->PayPal = new ApiContext(
            new OAuthTokenCredential(
                $this->clientId,
                $this->clientSecret
            )
        );
       // 如果是沙盒測(cè)試環(huán)境不設(shè)置,請(qǐng)注釋掉
        $this->PayPal->setConfig(
            array(
              'mode' => 'live',
            )
        );
    }
 
生成訂單并且跳轉(zhuǎn)到paypal
 public function pay($product, $price, $shipping = 0, $description,$currency)
    {
        $paypal = $this->PayPal;
 
        $total = $price + $shipping;//總價(jià)
 
        $payer = new Payer();
        $payer->setPaymentMethod('paypal');
 
        $item = new Item();
        $item->setName($product)->setCurrency($currency)->setQuantity(1)->setPrice($price);
 
        $itemList = new ItemList();
        $itemList->setItems([$item]);
 
        $details = new Details();
        $details->setShipping($shipping)->setSubtotal($price);
 
        $amount = new Amount();
        $amount->setCurrency($currency)->setTotal($total)->setDetails($details);
 
        $transaction = new Transaction();
        $transaction->setAmount($amount)->setItemList($itemList)->setDescription($description)->setInvoiceNumber(uniqid());
 
        $redirectUrls = new RedirectUrls();
        // $redirectUrls->setReturnUrl(self::accept_url . '?success=true')->setCancelUrl(self::accept_url . '/?success=false');
        $redirectUrls->setReturnUrl($this->accept_url .'?success=true')->setCancelUrl($this->accept_url .'?success=false');
 
        $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();
        //echo $approvalUrl;
        $this->redirect($approvalUrl);
        //header("Location:{$approvalUrl}");
    }
 
 
 /**
     * 回調(diào)
     */
    public function callback()
    {
        // 修改訂單狀態(tài)
        $success = trim($_GET['success']);
 
        if ($success == 'false' && !isset($_GET['paymentId']) && !isset($_GET['PayerID'])) {
           $this->error('Cancal Pay!!', 'member/order');
        }
 
        $paymentId = trim($_GET['paymentId']);
        $PayerID = trim($_GET['PayerID']);
 
        if (!isset($success, $paymentId, $PayerID)) {
            echo 'Failure to pay。';
            exit();
        }
 
        if ((bool)$_GET['success'] === 'false') {
            echo 'Failure to pay,payment ID【' . $paymentId . '】,Payer ID【' . $PayerID . '】';
            exit();
        }
 
        $payment = Payment::get($paymentId, $this->PayPal);
 
        $execute = new PaymentExecution();
 
        $execute->setPayerId($PayerID);
 
        try {
            $data = $payment->execute($execute, $this->PayPal);
           
            $data_arr = $data->toArray();
           
         
            $order_no = $data_arr['transactions'][0]['description'];
            $total_money = $data_arr['transactions'][0]['amount']['total'];
            // 實(shí)例化訂單模型
            $model = $this->getOrderModel($order_no, OrderTypeEnum::MASTER);
            // 訂單信息
            $order = $model->getOrderInfo();
            if(empty($order)){
               echo 'Order not exist';
            }
            $update_data['transaction_id'] = $paymentId;
           
           
            $status = $model->onPaySuccess(PayTypeEnum::PAYPAL, $update_data);
            if ($status == false) {
                echo $model->getError();
            }
        } catch (Exception $e) {
            $this->error('Pay Error!', 'member/order');
           
            //echo $e . ',支付失敗,支付ID【' . $paymentId . '】,支付人ID【' . $PayerID . '】';
            //exit();
        }
}
       
       
 
 
跳轉(zhuǎn)成功后,登入選擇支付卡號(hào)就可以了

商城支付
 
如沒(méi)特殊注明,文章均為方維網(wǎng)絡(luò)原創(chuàng),轉(zhuǎn)載請(qǐng)注明來(lái)自http://pdcharm.com/news/6831.html
建昌县| 肥西县| 文成县| 上高县| 万全县| 忻城县| 保定市| 绥宁县| 大足县| 遂昌县| 上饶县| 常德市| 清新县| 宜宾市| 衡东县| 通辽市| 陇南市| 黄石市| 襄城县| 丰镇市| 永寿县| 常宁市| 上饶市| 同江市| 疏勒县| 孝昌县| 大洼县| 仁布县| 清流县| 灵山县| 陈巴尔虎旗| 洪泽县| 新安县| 乐昌市| 会东县| 达尔| 建昌县| 乐平市| 平阴县| 周至县| 南投县|