加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

分析PHP对接paypal支付

发布时间:2022-07-19 14:54:42 所属栏目:PHP教程 来源:互联网
导读:环境准备 注册paypal账号 注册paypal开发者账号 创建paypal沙盒测试账户 创建paypal应用 下载PHP SDK 实现支付 实现支付成功回调 实现退款 更多API代码模板 注册paypal账号 www.paypal.com 注册商家账户 选择,创建商家用户,根据要求填写信息,注册完得去邮
  环境准备
  注册paypal账号
  注册paypal开发者账号
  创建paypal沙盒测试账户
  创建paypal应用
  下载PHP SDK
  实现支付
  实现支付成功回调
  实现退款
  更多API代码模板
  注册paypal账号
 
  www.paypal.com 注册商家账户
  选择,”创建商家用户”,根据要求填写信息,注册完得去邮箱激活
  注册paypal开发者账号
 
  账号默认给创建好了一个Default Application,点击查看获取 ClientId和Secret;保存起来,接下来接口调用会使用到;(上线时请重新创建一个Live的应用)
  查看ClientId和Secret
  下载SDK
 
  本人使用laravel框架,使用composer下载paypal包
  composer require paypal/rest-api-sdk-php
  实现支付
 
  以下是生成支付的代码片段,伪代码
 
 
  function createPayPal(){
 
        $shippingPrice = 2;
 
 
        $itemList = new PayPalApiItemList();
 
        $itemList->addItems([$item1,$item2]);
 
   
 
        // Set payment details
 
        $details = new PayPalApiDetails();
 
        $details->setShipping($shippingPrice)->setTax($taxPrice)->setSubtotal($subTotal);
 
   
 
        // Set payment amount
 
        //注意,此处的subtotal,必须是产品数*产品价格,所有值必须是正确的,否则会报错
 
        $total = $shippingPrice + $subTotal + $taxPrice;
 
        $amount = new PayPalApiAmount();
 
        $amount->setCurrency("USD")->setTotal($total)->setDetails($details);
 
   
 
        // Set transaction object
 
        $transaction = new PayPalApiTransaction();
 
        $transaction->setAmount($amount)->setItemList($itemList)->setDescription("这是交易描述")
 
            ->setInvoiceNumber(uniqid());//setInvoiceNumber为支付唯一标识符,在使用时建议改成订单号
 
   
 
        $payer = new PayPalApiPayer();
 
        $payer->setPaymentMethod('paypal');//["credit_card", "paypal"]
 
        $redirectUrls = new PayPalApiRedirectUrls();
 
        $redirectUrl = "http://test.com/redirect/success";//支付成功跳转的回调
 
        $cancelUrl = "http://test.com/redirect/cancel";//取消支付的回调
 
        $redirectUrls->setReturnUrl($redirectUrl)->setCancelUrl($cancelUrl);
 
   
 
        // Create the full payment object
 
        $payment = new PayPalApiPayment();
 
        $payment->setIntent("sale")->setPayer($payer)->setRedirectUrls($redirectUrls)->addTransaction($transaction);
 
   
 
        try {
 
            $clientId = "xxxxxx";//上面应用的clientId和secret
 
            $secret = "XXXXXX";
 
            $oAuth = new PayPalAuthOAuthTokenCredential($clientId, $secret);
 
            $apiContext =  new PayPalRestApiContext($oAuth);
 
            if(env('APP_DEBUG') === false ){
 
                $apiContext->setConfig(['mode' => 'live']);//设置线上环境,默认是sandbox
 
            }
 
 
        } catch (Exception $e) {
 
            dd($e->getMessage());//错误提示
 
        }
 
    }

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读