如果您所在的公司涉及外贸或者跨境支付业务,那一定听说过大名鼎鼎的PayPal,总的来说,PayPal在跨国贸易里的优势还是比较大的,作为一种外贸支付方式,目前在国际贸易支付服务中倍受亿万用户追捧,是全球商户和消费者最受欢迎的电子支付方式之一,在跨境交易中有着超过90%的卖家和超过85%的买家认可并正在使用PayPal电子支付业务。当然,PayPal国际业务体量如此惊人,肯定不是毫无原因的。

PayPal支付的优势就是其业务网络遍布全球。目前PayPal的庞大网络覆盖了全球200多个国家,可提供20多种语言服务,并接受100多种货币付款和56种货币提现。同时,还允许在账户中持有25种货币余额。换句话说,只要付款人拥有一个PayPal账户,他就拥有了在200多个国家进行电子支付购物,并在需要服务的时候享受到母语支持的各种便捷服务。

之前的几篇文章分别介绍了国内的支付宝支付: Python3.7.2+Django2.0.4 美多商城集成最新版支付宝支付接口(2019.04) 和微信支付: mpvue1.0+python3.7+Django2.0.4实现微信小程序的支付功能

本次我们首次尝试用Django2来集成跨境三方支付接口PayPal

首先注册官网 www.paypal.com 以及开发者平台: developer.paypal.com/developer/a…

注册成功后,在沙盒的账号控制页面: developer.paypal.com/developer/a…

会默认创建两个账号,一个是商户的,另外一个是个人的

我们演示的流程就是以个人账号登录三方网站对商户账号进行支付业务,当然了,如果你不想使用默认账号,也可以点击右边的Create account的蓝色按钮单独创建。

随后进入应用管理页面: developer.paypal.com/developer/a…

这里已经默认创建好了一个支付应用,记录下它的client_id和client_secret,一会要用到

随后,我们可以回到账号管理页面修改一下个人账号的支付余额

额度设置最高

如果愿意,也可以修改一下登录密码,因为一会我们会用这个账号进行登录操作,注意这些登录和支付操作全都会在沙盒环境中完成,完全不会影响生产环境的使用

ok,做完了这些,前置任务就搞定了,现在运行命令安装paypal在python端的sdk

pip3 install paypalrestsdk
复制代码

现在可以在django中新建一个支付视图views.py

import paypalrestsdk  def payment(request):  paypalrestsdk.configure({  "mode": "sandbox", # sandbox代表沙盒  "client_id": "你的client_id,  "client_secret": "你的client_secret" })  payment = paypalrestsdk.Payment({  "intent": "sale",  "payer": {  "payment_method": "paypal"},  "redirect_urls": {  "return_url": "http://localhost:8000/palpay/pay/",#支付成功跳转页面  "cancel_url": "http://localhost:3000/paypal/cancel/"},#取消支付页面  "transactions": [{  "amount": {  "total": "5.00",  "currency": "USD"},  "description": "这是一个订单测试"}]})  if payment.create():  print("Payment created successfully")  for link in payment.links:  if link.rel == "approval_url":  approval_url = str(link.href)  print("Redirect for approval: %s" % (approval_url))  return redirect(approval_url)  else:  print(payment.error)  return HttpResponse("支付失败")
复制代码

这里解释一下重点参数,return_url是支付成功后回调的页面,paypal会将一个支付者id回传,然后服务端需要验证支付才能真的完成支付,total是付款金额,精确到分,currency是币种,支持多钟类型的货币。

当Django的服务端创建好支付订单后,重定向到paypal的沙盒环境,这时候一定要使用沙盒的个人账号进行登录和支付。

支付完成后,会跳回刚刚传过去的回调页面: http://localhost:8000/palpay/pay/?paymentId=PAYID-L3SYORA3C031930S1733650J&token=EC-9TG269735K620131N&PayerID=ETYYRCDN8C3XJ

这里paypal会传过来三个参数,支付id,token和支付者id

此时,在回调方法里,我们需要通过支付者id进行确认验证支付

def payment_execute(request):  paymentid = request.Get.get("paymentId") #订单id  payerid = request.Get.get("PayerID")  #支付者id  payment = paypalrestsdk.Payment.find(paymentid)  if payment.execute({"payer_id": payerid}):  print("Payment execute successfully")  return HttpResponse("支付成功")  else:  print(payment.error) # Error Hash  return HttpResponse("支付失败")
复制代码

最后,回到管理页面,发现已经少了5美元,说明支付流程已经走完。

这次交易就愉快的结束了,当然了,某些时候我们需要对交易流水进行一些核对,也可以通过接口查看交易明细

#明细  payment = paypalrestsdk.Payment.find("订单号")
print(payment)
复制代码

可以看到,通过传入订单id,我们该笔交易的状态,流水id,以及创建日期。

如果用户想要退款的话,可以利用交易明细中的流水号进行退款业务。

#退款
from paypalrestsdk import Sale  sale = Sale.find("流水号")  # Make Refund API call
# Set amount only if the refund is partial
refund = sale.refund({  "amount": {  "total": "5.00",  "currency": "USD"}})  # Check refund status
if refund.success():  print("Refund[%s] Success" % (refund.id))
else:  print("Unable to Refund")  print(refund.error)
复制代码

结语:

总体而言,没有什么特别的难度,整个支付流程相对支付宝来说,更加的紧凑,但是做支付安全是第一要务,就个人体验(仅是个人体验)层面来说,支付宝在安全方面做的还是要比Paypal略强一些,起码在信用卡欺诈和盗刷方面风控做的更好,在风险保障和赔付方面都有提供保险,当然由于金融环境的差异较大,并不是说Paypal的风控做的不好,只是机制不同,在国外,如果持卡人的信用卡被盗刷,一般发卡组织会让商家去承担责任,而国内只能在交易环节设置更多的验证,本质上说是要持卡人承担责任。这也是为什么支付宝的风控看起来更好的原因。

最后就是关于费率问题,Paypal官方给出的费率是每笔交易收取3.9%+$0.3(根据你的交易流水,比例可以优惠,具体下限看接入者的月营业额度),不过这可是美刀,不得不说这个费率是相当的高,但是国内做境外支付的电商,一般还是要接入Paypal作为支付方式。支付宝的费率基本上在1.2%左右,具体的费率也看交易流水,有实力的下限可以做到基本没有,单纯的看费率似乎支付宝更有优势,但是别忘记了,这样对比是不科学的,因为凡是接入Paypal的都是看中覆盖外币业务的地区,费率则是投资人该考虑的问题了。

源码获取私信小编01

Python3集成PayPal跨境支付三方接口以及订单查询和退款业务!相关推荐

  1. Python3+Django2集成PayPal(贝宝)跨境支付三方接口以及订单查询和退款业务

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_157 如果您所在的公司涉及外贸或者跨境支付业务,那一定听说过大名鼎鼎的PayPal,总的来说,PayPal在跨国贸易里的优势还是比 ...

  2. 面对“开门红”,跨境支付如何寻求新增长曲线?

    易观:2022年是第三方支付行业洗牌加剧的一年,在部分机构选择退出的过程中,也有机构开始瞄准跨境业务,成为了支付机构转型的重要方向之一.跨境支付是指两个或及其以上的国家或地区进行国际贸易.国际投资或其 ...

  3. 跨境电商支付方式和如何玩转跨境支付

    跨境电商支付方式推荐 跨境电商的关键问题是支付,我们确实很难身在家乡国家,用家乡国家文化去感知异国文化,商业亦是如此,我们必须摒弃主观,用客观的思想,亲自去沟通,去理解.电商里很重要的关键问题是支付问 ...

  4. 跨境电商支付方式之如何玩转跨境支付

    跨境电商的关键问题是支付,我们确实很难身在家乡国家,用家乡国家文化去感知异国文化,商业亦是如此,我们必须摒弃主观,用客观的思想,亲自去沟通,去理解.电商里很重要的关键问题是支付问题,正确的合适的支付方 ...

  5. Payssion,海外本地支付_海外本地收款_小语种本地支付_外贸收款_外贸网店收款_欧洲本地支付_俄罗斯本地支付_巴西支付_跨境支付_PAYSSION,让跨境支付更轻松!...

    Payssion,海外本地支付_海外本地收款_小语种本地支付_外贸收款_外贸网店收款_欧洲本地支付_俄罗斯本地支付_巴西支付_跨境支付_PAYSSION,让跨境支付更轻松! Payssion,海外本地 ...

  6. Magento微信跨境支付模块V2.1发布

    2019独角兽企业重金招聘Python工程师标准>>> 关于微信跨境支付(WeChat Cross-border Payment) 微信跨境支付的核心功能是实现"人民币收款 ...

  7. VCC 能否解决跨境支付的问题?

    随着这两年监管政策的趋严,对跨境支付行业来说,也走进了"寒冬". 虽然外界对跨境一直高喊着蓝海,但是作为跨境人来说,当跨境面临基于"收单"为前提的窘境,市场的空 ...

  8. 启赟金融 CTO 马连浩:跨境支付系统架构

    10年支付行业老兵 \\ 马连浩, EGO 上海分会会员.启赟金融的技术合伙人\u0026amp; CTO. \\ 我在 2017 年加入启赟金融(以下简称"iPayLinks") ...

  9. 区块链跨境支付模式及其风险监管

    近年来,国内外金融机构相继试水区块链技术,不断探索区块链技术在金融领域的应用与实践,在跨境支付领域,世界各国的金融机构.银行卡组织.第三方支付机构和跨境汇款中间业务国际组织都在尝试利用区块链技术推动跨 ...

最新文章

  1. Codeforces Round #528 (Div. 2, based on Technocup 2019 Elimination Round 4) C. Connect Three 【模拟】...
  2. 【机器学习】机器学习概述
  3. 【Idea解法】Failed to execute goal on project : Could not resolve dependencies for pro
  4. Android studio使用git切换分支开发的方法(图文教程)
  5. 还是动态生成一个控件
  6. [C++11]字符串原始字面量
  7. 1,滑动验证,前后台接口
  8. SpringCloud微服务:Sentinel哨兵组件,管理服务限流和降级
  9. 负载均衡轮询算法和服务器性能,SpringCloud-Ribbon负载均衡机制、手写轮询算法
  10. pandas 画折线图_如何从Pandas数据帧绘制多个折线图
  11. 天才程序员之陨落:业余项目创业 Cloudflare,公司上市前患病失去自理能力
  12. 查询jdk支持的 tsl协议版本
  13. p值小于0.05拒绝还是接受_干货:关乎你的实验成败,0.05这个值不容小觑!
  14. 标准盒子模型简单讲解
  15. 蜀山剑侠传打开服务器更新第一个文件失败,蜀山剑侠传,基础设定
  16. powershell 汉洛塔
  17. 基于cocos2dx的2D手游美术资源制作技术选型(1)(2)
  18. Ubuntu添加新的中文字体
  19. Kubernetes集群高可用方案
  20. QQ宠物客户端2005III新年新版新亮相(转)

热门文章

  1. 外贸公司为什么选择海外域名和海外空间?
  2. EAIDK-610(RK3399)使用体验
  3. 纽约时报网站八月下旬遭黑客攻击的细节
  4. [Flex] 组件Tree系列 —— 运用variableRowHeight和wordWrap设置可变行高
  5. 贪食蛇java源码_JAVA 贪食蛇 源码
  6. 12306抢票插件拖垮GitHub
  7. 美通社企业新闻汇总 | 2019.1.30 | 2019旅行者之选酒店榜发布;《小猪佩奇》动画迎“猪年”...
  8. 【VSCode】切换文件与编辑器的快捷键
  9. Elastic Search — Query DSL
  10. 2.45GHz微带天线PCB设计AD铺铜只显示边框不显示铜皮的解决办法