分析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());//错误提示 } } (编辑:应用网_丽江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |



浙公网安备 33038102330468号