美文网首页
PayPal的使用

PayPal的使用

作者: 晓序东风 | 来源:发表于2018-06-05 18:26 被阅读0次

在阅读PayPal使用相关的博客文章后,发现很多人其实都没有对PayPal的使用有比较好的理解,他们不清楚使用的究竟是哪种支付解决方案?调用的APIs究竟是哪一类APIs?我想可能是对于一些基本的概念并没有理解
本篇主要是对PayPal中一些基本概念的介绍和梳理,并没有对PayPal的使用做过多的介绍,因为PayPal的使用真的很简单,当然最后也包含一个PayPal使用的简单例子,希望能对你有所帮助

PayPal提供的支付方案

PayPal针对不同的支付场景提供了不同的支付解决方案,主要包括如下几种:

  • Express Checkout
  • PayPal Payments Standard
  • Custom
  • In-Store
  • Marketplaces
  • Invoicing
    关于每种支付方式的说明请参见官网说明

PayPal APIs

PayPal提供了APIs用于我们实现一个支付方案,APIs主要分成两类:REST和name-value(NVP)/SOAP
REST和NVP/SOAP APIs最主要的不同点在于请求或者响应数据的格式不同和使用的授权框架不同,例如REST APIs主要使用JSON格式数据,使用OAuth2.0授权框架

PayPal SDKs

SDK可以看作是PayPal对APIs的封装和打包,可以从两个宏观方面认识SDK:
编程语言的角度,Node、PHP、Python、Ruby、Java、.NET等SDK
支付技术角度,Braintree and PayPal Mobile SDKs、PayPal Here SDKs、PayPall NVP/SOAP API SDKs、PayPal REST SDKs等SDK

PayPal开发的过程

使用REST和NVP/SOAP APIs的开发过程是不一样的,不一样的原因在于两者使用的授权方式不同,但一般需要有经历以下一些过程:

例子

Node中使用REST APIs支付的简单例子,具体代码请参见paypal-test

  1. 注册商家账号
    登录PayPal官网,注意选择红色箭头所选的按钮,然后需要填入一些资料,即可完成注册
    image.png
  2. 创建一个测试应用
    使用上面创建的账号登录网站,PayPal为了你测试方便,默认为你生成了两个测试账号,一个是BUSINESS,一个PERSONAL,你可以点击Create Accout创建自己的账户
    image.png
    然后点击左侧菜单栏的My Apps & Credentials,在REST API apps中点击Creat App,在新出现的页面Create New App中输入App Name的名字,然后点击Create App即可创建一个应用
    image.png
    image.png
  3. 选取SDK
    使用npm安装相关依赖,主要是express和rest-sdk,package.json文件内容如下:
{
    "name": "paypal-test",
    "version": "1.0.0",
    "description": "paypal test",
    "private": true,
    "main": "index.js",
    "scripts": {
        "start": "node index.js"
    },
    "keywords": [
        "paypal test"
    ],
    "author": "Gong",
    "license": "Apache-2.0",
    "dependencies": {
        "paypal-rest-sdk": "1.8.1",
        "express": "4.x"
    }
}
  1. 编写程序测试
    PayPal已经封装的很简单了,主要调用两个函数:create、execute
    其中create用于创建支付相关的信息、打开PayPal支付页面等,execute用于支付完成后需要执行的工作
    paypal.js相关代码
var paypal = require('paypal-rest-sdk');
require('./configure');
exports.getPassCode = function (req, res) {
    //商品参数信息
    var create_payment_json = {
        "intent": "sale",
        "payer": {
            "payment_method": "paypal"
        },
        "redirect_urls": {
            "return_url": "http://localhost:8080/notify",    //返回地址
            "cancel_url": "http://localhost:8080/cancel",     //取消完成后的返回地址
        },
        "transactions": [{
            "item_list": {
                "items": [{
                    "name": "item",   //
                    "sku": "item",
                    "price": "1.00",
                    "currency": "USD",
                    "quantity": 1
                }]
            },
            "amount": {
                "currency": "USD",
                "total": "1.00"
            },
            "description": "Apple"
        }]
    };
    //打开付款页面
    paypal.payment.create(create_payment_json, function (error, payment) {
        if (error) {
            throw error;
        } else {
            for (var i = 0; i < payment.links.length; i++) {
                if (payment.links[i].rel === 'approval_url') {
                    console.log("getPassCode###" +payment.links[i].href);
                    var payUrl = payment.links[i].href;
                    res.redirect(payUrl);
                }
            }
        }
    });
}
//支付成功处理
exports.paySuccess = function (req, res) {
    console.log('paySuccess');
    var paymentId = req.query.paymentId;
    var payerId = { payer_id: req.query.PayerID };

    var execute_payment_json = {
        "payer_id": payerId,
        "transactions": [{
            "amount": {
                "currency": "USD",
                "total": "1.00"
            }
        }]
    };
    //支付完成后需要执行的任务
    paypal.payment.execute(paymentId, payerId, function(error, payment){
        if(error){
          console.error(JSON.stringify(error));
        } else {
          if (payment.state == 'approved'){
            console.log('payment completed successfully');
            res.redirect('http://localhost:8080/success');
          } else {
            console.log('payment not successful');
          }
        }
    });
}

configure.js相关的代码

var paypal = require('paypal-rest-sdk');

paypal.configure({
    'mode': 'sandbox', //sandbox or live
    'client_id': 'AXcoXXXXXXXXXXXXXXXXXXXXXXXXXXP4e',  
    'client_secret': 'EEOXXXXXXXXXXXXXXXXXXXXX4EXAQFm'
});

相关文章

  • PayPal的使用

    在阅读PayPal使用相关的博客文章后,发现很多人其实都没有对PayPal的使用有比较好的理解,他们不清楚使用的究...

  • Brain Tree

    最新接入PayPal的SDK,已经不能够直接使用原有的PayPal SDK,需要使用Brain Tree SDK。...

  • Paypal最新提现方法

    相信做外贸的人,很多都是使用Paypal来收取样品费,我们也是如此。 之前我一直都是使用连连支付来把Paypal中...

  • ios使用paypal支付

    1、导入PayPal的SDK 2、添加-lc++和-ObjC到Other Linker Flags 4.导入框架:...

  • PayPal使用安全技巧

    PayPal是第三方公司,顾名思义,在交易双方中起着调节的作用。当买家通过PayPal支付货款后,买方可以在交易4...

  • PayPal iOS SDK 使用

    更新日期:2017-11-20下载链接:密码: qj5i目录0 基本信息 10.1 参考文献 10...

  • shopify 建站日记

    2018-11-04-设置好支付方式 PayPal注册失败了。 不知道具体的原因是什么。使用PayPal的时候注意...

  • iOS 集成PayPal付款

    1、使用cocoapods pod'PayPal-iOS-SDK' 2、AppDelegate 中key 的设置...

  • PayPal学堂 | 识别钓鱼邮件,让骗子无处遁形!

    经常使用PayPal的用户都知道,PayPal账户里的注册邮箱十分重要,因为它关系着你的账户安全,也就是在PayP...

  • paypal 支付流程

    推荐资料 接入 paypal PHP-sdk 支付 / 回调 / 退款全流程 paypal/PayPal-PHP-...

网友评论

      本文标题:PayPal的使用

      本文链接:https://www.haomeiwen.com/subject/jttmsftx.html