资讯专栏INFORMATION COLUMN

PayPal 支付实践

xorpay / 1128人阅读

摘要:相关官网开发者网站的是有的硬需求的,请在你的服务器上面启用支持,可以参考我的这篇文章启用实践虽然是的,但是那段应该同样适用于都是一样的还有一点就是这篇文章只是一个流程的实践一切以官方的为准请考照进行扩展流程注册一个账号自行注册创建登陆输入记

相关

官 网: www.paypal.com
开发者网站: developer.paypal.com
paypal的sdk是有TLS1.2的硬需求的,请在你的服务器上面启用TLS1.2支持,
可以参考我的这篇文章启用TLS1.2实践
虽然是windows的,但是apache那段应该同样适用于linux都是一样的(apache + php 5.5 + php_openssl)

还有一点就是, 这篇文章只是一个流程的实践, 一切以官方的SDK为准, 请考照sdk进行扩展

流程 1. 注册一个paypal账号

自行注册

2. 创建REST API apps

登陆developer.paypal.com > Dashboard > My Apps & Credentials > REST API apps > Create App > 输入App Name > Create App > 记录下Clien ID和Secret

3. 配置SanBox账户

Dashboard > Sandbox > Accounts > Profile > Change password

facilitator和buyer的密码都改了

4. 使用SDK发起一个支付 下载sdk
git clone https://github.com/paypal/PayPal-PHP-SDK.git paypal
cd paypal
composer update

composer怎么安装不是本文讨论的内容, 请google搜索

支付的流程及代码

创建支付获取支付的地址

跳转到支付地址

支付->成功会跳转到回调地址$site["success"]

bb, show code

再说一句, 我是保存到本地的本地地址为 127.0.0.1/paypal/pay.php

setPaymentMethod("paypal");

$item = new Item();
$item->setName($order["title"])
    ->setCurrency($order["currency"])
    ->setQuantity(1)
    ->setPrice($order["price"]);

$itemList = new ItemList();
$itemList->setItems([$item]);

$details = new Details();
$details->setShipping($order["shipping"])
    ->setSubtotal($order["price"]);

$amount = new Amount();
$amount->setCurrency($order["currency"])
    ->setTotal($order["price"] + $order["shipping"])
    ->setDetails($details);

$transaction = new Transaction();
$transaction->setAmount($amount)
    ->setItemList($itemList)
    ->setDescription($order["body"])
    ->setInvoiceNumber(uniqid());

$redirectUrls = new RedirectUrls();
$redirectUrls->setReturnUrl($site["success"])
    ->setCancelUrl($site["cancel"]);

$payment = new Payment();
$payment->setIntent("sale");
$payment->setPayer($payer)
    ->setRedirectUrls($redirectUrls)
    ->setTransactions([$transaction]);

try {
    $payment->create($apiContent);
} catch (PayPalConnectionException $e) {
    // get error by $e->getData();
    return false;
}

$pay_url = $payment->getApprovalLink();

// die($pay_url);
header("Location: " . $pay_url);

回调return.php



捕获到的回调数据

汇率转换接口

paypal支持但不限于美元(USD) 欧元(EUR) 日元(JPY) 港元(HKD) 台币(TWD), 完整支持请看 Currencies and Currency Codes 至今不支持人民币,为什么是至今呢?以后肯定会支持的
由于paypal不支持人民币(CNY)结算, 所以可能在实际的操作中需要把人民币转换为美元或者港元结算, 这里就需要用到汇率转换接口

我收集了3种汇率转换方式Baidu api NOWAPI Yahoo api
我都没有深度用过,这里也说不上哪个好哪个差,很多人都推荐雅虎接口,相比必有他的可取之处,我百度用起来方便,先百度用着,如果有其他的需求再换口接

Baidu api

http://apistore.baidu.com/api...

NOWAPI

https://www.nowapi.com/api/fi...

Yahoo api

这个接口自行搜索,使用起来不是很方便

我这里提供百度的api的例程, 看代码, 在实际操作中肯定需要再加一些东西, 如超时等异常处理, 这里为了简单好懂这里就没加上

function _currency_service($from, $to, $money){
        $apikey = "你的百度的apikey";
        $url_param = [
            "fromCurrency" => $from,
            "toCurrency"   => $to,
            "amount"       => $money
        ];
        // paypal 支持的货币
        $currency_support = ["AUD", "CAD", "CHF", "CZK", "DKK", "EUR", "GBP", "HKD", "HUF", "JPY", "NOK", "NZD", "PLN", "SEK", "SGD", "USD"];
        if (in_array($to, $currency_support)) return false;
        $ch = curl_init();
        $url = "http://apis.baidu.com/apistore/currencyservice/currency?" . http_build_query($url_param);
        $header = array( "apikey: ". $apikey, );

        curl_setopt($ch, CURLOPT_HTTPHEADER  , $header);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        // 执行HTTP请求
        curl_setopt($ch , CURLOPT_URL , $url);
        $res = curl_exec($ch);
        if($ret = json_decode($res)){
            $cny = $ret->retData->convertedamount;
            return $cny;
        }
        return false;
    }

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/30404.html

相关文章

  • paypal支付

    摘要:点击结账,会直接出现中间经历啦支付流程的三个步骤。跳转后会异步根据获取订单信息到此时还没有支付。展示第七步的交易结果若用以下的需要配置参考 paypal的沙箱:https://developer.paypal.com/...商家沙箱登录:https://www.sandbox.paypal.co...paypal的PHP SDK地址:http://paypal.github.io/Pa...

    why_rookie 评论0 收藏0
  • PayPal smart payment buttons

    摘要:简介智能支付按钮,是全球著名在线支付商提供的一项最新收款功能,其目的是尽可能多的消除结账中产生的摩擦,即影响买家完成支付的不利因素。和之前的付款方式相比,这应该也是一个改进。服务端商家中设置及时通知商家登陆地址异步回调地址设置参考这里 简介 Smart Payment Buttons(智能支付按钮),是全球著名在线支付商PayPal提供的一项最新收款功能,其目的是尽可能多的消除结账中...

    ls0609 评论0 收藏0
  • PayPal smart payment buttons

    摘要:简介智能支付按钮,是全球著名在线支付商提供的一项最新收款功能,其目的是尽可能多的消除结账中产生的摩擦,即影响买家完成支付的不利因素。和之前的付款方式相比,这应该也是一个改进。服务端商家中设置及时通知商家登陆地址异步回调地址设置参考这里 简介 Smart Payment Buttons(智能支付按钮),是全球著名在线支付商PayPal提供的一项最新收款功能,其目的是尽可能多的消除结账中...

    刘德刚 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<