近期项目需要研究paypal支付,官网上的指导写的过于复杂,可能是老外的思维和中国人不一样吧。难得是发现下面这篇文章:

http://www.androidhive.info/2015/02/android-integrating-paypal-using-php-mysql-part-1/

在这篇文章的基础上,查看SDK简化了代码,给出下面这个例子,测试通过。

其实集成paypal还是非常简单的,真正的输入账户、付款都在SDK自带的Activity和service上完成,我们要做的事情,是从自己的Activity跳转过去,跳转的同时带一个Payment参数(即付款明细),Paypal SDK处理完后,会回到你的Activity(此时已经完成支付)。

在上面提到的那篇文章中,流程是这样的:

这里服务端通过Android端传回的paymentID(类似流水号),获取支付明细判断是否为正确单据。但要注意的是此时支付已经完成,在实际应用中(根据官网SDK)的说法,主要是卡流程的下一步,比如物流发货。

在编写代码前要准备如下:

1、在https://developer.paypal.com中注册一个开发账号(通常是卖家),这个账号提供一个客户ID和密码,需要写在代码里,买家实际上是支付到客户ID和密码生成的账户;

2、在上面这个页面下,Paypal提供了沙盒功能,通过沙盒你可以虚拟一个买家账号,供测试所用;

3、新建一个Android工程,在里面整合android paypal的SDK;

备注:根据我实际的操作,eclipse没法导入该jar包,会一直提示没有定义的类,可能是因为SDK是由Gradle构建的原因。在stackoverflow上说用android studio不会出现类似问题,我本地是用的IDEA,也一样OK。

下面把主要代码附带如下,之前要注意在manifest中增加权限和SDK中涉及的Activity和Service。

public class MyActivity extends Activity {private static final String TAG = "MainActivity";private Button button;private static final int REQUEST_CODE_PAYMENT = 1;private static PayPalConfiguration paypalConfig = new PayPalConfiguration().environment(PayPalConfiguration.ENVIRONMENT_SANDBOX).clientId(Config.PAYPAL_CLIENT_ID);private List<PayPalItem> productsInCart = new ArrayList<PayPalItem>();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);button = (Button) findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {addToCart(new Product("1", "sinny", "fredric_sinny", null, new BigDecimal(1), "1232131"));PayPalPayment thingsToBuy = prepareFinalCart();Intent intent = new Intent(MyActivity.this,PaymentActivity.class);intent.putExtra(PayPalService.EXTRA_PAYPAL_CONFIGURATION, paypalConfig);intent.putExtra(PaymentActivity.EXTRA_PAYMENT, thingsToBuy);startActivityForResult(intent, REQUEST_CODE_PAYMENT);}});}private PayPalPayment prepareFinalCart() {PayPalItem[] items = new PayPalItem[productsInCart.size()];items = productsInCart.toArray(items);// Total amountBigDecimal subtotal = PayPalItem.getItemTotal(items);// If you have shipping cost, add it hereBigDecimal shipping = new BigDecimal("0.0");// If you have tax, add it hereBigDecimal tax = new BigDecimal("0.0");PayPalPaymentDetails paymentDetails = new PayPalPaymentDetails(shipping, subtotal, tax);BigDecimal amount = subtotal.add(shipping).add(tax);PayPalPayment payment = new PayPalPayment(amount,Config.DEFAULT_CURRENCY,"Description about transaction. This will be displayed to the user.",PayPalPayment.PAYMENT_INTENT_SALE);payment.items(items).paymentDetails(paymentDetails);payment.custom("This is text that will be associated with the payment that the app can use.");return payment;}public void addToCart(Product product) {PayPalItem item = new PayPalItem(product.getName(), 1,product.getPrice(), Config.DEFAULT_CURRENCY, product.getSku());productsInCart.add(item);Toast.makeText(getApplicationContext(),item.getName() + " added to cart!", Toast.LENGTH_SHORT).show();}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);PaymentConfirmation confirm = data.getParcelableExtra(PaymentActivity.EXTRA_RESULT_CONFIRMATION);String paymentId;try {paymentId = confirm.toJSONObject().getJSONObject("response").getString("id");String payment_client = confirm.getPayment().toJSONObject().toString();Log.e(TAG, "paymentId: " + paymentId + ", payment_json: "+ payment_client);} catch (JSONException e) {// TODO Auto-generated catch block
            e.printStackTrace();}}
}

其他:

1、后台的接口都是标准的REST的接口,我例子里没有实现,但要注意的是node的SDK包在windows7下是不可用的,好像是里面一个CRC的包不支持,在Linux下没问题。

2、该程序运行后,会跳转到Paypal界面,你可以用沙盒里注册的虚拟买家账号登陆消费,消费完后在paypal网站上可以查到相应记录:

转载于:https://www.cnblogs.com/Fredric-2013/p/4608473.html

Android下集成Paypal支付相关推荐

  1. 详细教程: android项目集成PayPal 支付

    2017年7月5日  更新了, 总体该说的都说了, 后面再看看还有啥细节补充吧. 项目是跨境电商,国外的支付需要集成paypal支付,在网上搜了好久,教程都是断断续续,对开发者来说不太友好! 好在现在 ...

  2. Java集成PayPal支付

    Java集成PayPal支付 1.申请账号 浏览器中输入:https://www.paypal.com,点击 "注册" 选择 "企业账号" ,信息可以随意填写 ...

  3. Android端集成支付宝支付

    Android端集成支付宝支付 1.申请账号及配置变量 支付宝快速接入链接点击打开链接 支付宝扫码或者账号密码登录 下面是支付宝给出的接入介绍 第一步:创建应用并获取APPID 要在您的应用中接入支付 ...

  4. Android app集成微信支付

    Android app集成微信支付 鉴于微信支付的文档入口不太容易找到.以及文档中有些逻辑不通或者容易产生歧义或者缺失一些信息的情况,记录下此次接入的流程和需要关注的一些点. 使用的是app支付-&g ...

  5. [chatgpt] golang集成paypal支付接口

    go 语言集成paypal支付接口 PayPal 是一种常用的在线支付服务.如果要在 Go 语言项目中使用 PayPal 支付接口,您需要使用 PayPal 提供的 API.下面是 Go 语言中如何集 ...

  6. java集成paypal支付,含Android,服务端代码

    支付流程 1. 前端选择商品,调用paypal支付 2. 支付完成,paypal会返回payment信息,将payment的id返回给自己服务端 3. 服务端根据paymentId,调paypal,查 ...

  7. Android集成Paypal支付Braintree

    最新发现Paypal的官方SDK已经不再维护了,所以需要把项目的支付做一下升级. 文档链接:点击这里 根据文档来看Paypal支付的集成相比以前简单了许多,下面我们讲一下集成步骤: 1:在 build ...

  8. TP5集成PayPal支付

    项目需要使用到PayPal支付,在网上找了一圈大多写的太过简陋不易看懂,在这里详细记录集成过程方便后期使用. 第一步:下载PayPal-PHP-SDK集成到项目中 最新SDK下载地址: https:/ ...

  9. 2022年集成paypal支付的相关心得

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.paypal是什么? 二.使用步骤 1.准备 :注册一个paypa账号 2.编写paypal后端接口demo 总结 ...

最新文章

  1. 插槽 查看硬盘状态_摄影路上的“全能”伴侣 | LaCie DJI Copilot 移动硬盘
  2. Cloud Foundry技术资料汇总
  3. LAMP 系统性能调优:第2 部分: 优化Apache 和PHP-学习笔记
  4. sip gw功能包括_道哥漫谈:大话有趣的SIP通信
  5. 切点、切面:@Aspect、@PointCut相关的个人总结
  6. 拥抱.NET Core,学习.NET Core的基础知识补遗
  7. wxpython wx listctrl_wxPython - ListCtrl列表排序
  8. 绝地求生服务器维护内容,绝地求生最新更新维护几点开始? 绝地求生10.30更新维护内容...
  9. Android大事记(不断更新中)
  10. Remix恢复已部署的合约
  11. 怎么写化学反应方程式?
  12. 如何把多张图片快速的拼接在一起?如何拼接多张图片?
  13. 一步步用python制作游戏外挂
  14. Unlocking Information in the Microsoft Office System Using XML
  15. SQLserver中的内连接和左连接
  16. 什么是ERP系统?为何工厂都要上erp软件?
  17. 分享一个开源的QT的串口示波器
  18. gps和惯性组合matlab程序,北航卡尔曼滤波与组合导航 第三次作业 SINS/GPS组合动态实验...
  19. 设计模式 - 行为型设计模式 - 观察者模式(Java)
  20. 《赢在中国-蓝天碧水间》观后感

热门文章

  1. python123基本数据类型_python 基本数据类型
  2. 一个菜鸟从高一到大二的作品整理
  3. Codeforces 845 A. Chess Tourney 思路:简单逻辑题
  4. Android Studio安装应用时报错 installation failed with message Failed to finalize session......
  5. 每天一道LeetCode-----有序数组右移n位后查找某个元素
  6. 二叉树最大宽度与leetcode662的二叉树最大宽度
  7. vue实现接受后端传过来的zip数据,axios实现
  8. SQL2000自动备份
  9. 并查集 - 由斜杠划分区域
  10. Python装饰器学习笔记