Android下集成Paypal支付
近期项目需要研究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 (); @Override protected 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 amount BigDecimal subtotal = PayPalItem.getItemTotal(items); // If you have shipping cost, add it here BigDecimal shipping = new BigDecimal("0.0"); // If you have tax, add it here BigDecimal 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(); @Override protected 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://developer.paypal.com/
paymentwall.com
原文链接:[http://wely.iteye.com/blog/2382628]
Android 银联控件支付开发流程 项目中要用到支付功能,需要支付宝支付、微信支付、银联支付,所以打算总结一下,方便以后的查阅,也方便大家, 用到的地方避免再次被坑。 今天我们就主要介绍一下银联控件支付,其他支付也写了对应教程,并且给出了连接。
Android 支付宝支付开发流程 项目中要用到支付功能,需要支付宝支付、微信支付、银联支付,所以打算总结一下,方便以后的查阅,也方便大家, 用到的地方避免再次被坑。 今天我们就主要介绍一下支付宝支付,其他支付也给出了对应的连接。
Android ONE store支付 什么是ONE store应用内支付(IAP) 一家商店应用内部支付(下称IAP)是一家商店使用的,支付服务,开发者销售手机应用程序的应用内部商品时,利用一个商店的验证和支付系统完成向用户支付费用,解决等价流程。一店服务(一店服务,OSS)替代开发的应用商品,OSS与一店总服务器连接执行支付工作,用于响应用户的应用内部商品购买请求。
Android MyCard支付 MyCard支付: 1、通过商务联系MyCard进行技术对接,获得最新MyCardPaySDK.jar和接入文档 2、导入MyCardPaySDK.jar 3、根据MyCard提供文档设置AndroidManifest.xml 4、根据自身需求确定是走SDK支付方式还是WebView支付方式
Android微信支付和支付宝支付快速接入 创建应用并获取APPID 开发者中心中创建您的应用,会为您生成应用唯一标识(APPID),并且可以申请开通开放产品使用权限,通过APPID您的应用才能调用开放产品的接口能力。在“我的应用”中按下图方式查看APPID。
相关文章
- Android Studio(四):Android Studio集成Genymotion
- [Android] 解析android framework下利用app_process来调用java写的命令及示例
- [Android Pro] android中permission_group与permisson区别、作用
- [Android Pro] ant 编译android工程
- Android教程-android studio 制作.9 图片
- Failed to fetch URl https://dl-ssl.google.com/android/repository/addo Android SDK更新以及ADT更新出现问题的解决办法
- Android API之android.os.Parcelable
- android电池信息简介
- android app 集成 支付宝支付 微信支付
- android中判断网络是否连接及各种系统服务
- android java 堆栈_Android下打印调试堆栈方法
- android 证书验证流程分析_Android签名机制之---签名验证过程详解
- Android 控件系列篇
- android 7.0 8.1 9.0 10.0 添加自定义api(类) 给app调用
- 【Android 逆向】Android 进程注入工具开发 ( 调试进程中寄存器的作用 | 通过 EIP 寄存器控制程序运行 | EIP 寄存器的存档与恢复 )
- 【Android 逆向】Android 权限 ( Android 逆向中使用的 android.permission 权限 | Android 系统中的 Linux 用户权限 )
- android 当屏幕截图,你如何改变屏幕内容,他们俩bitmap将合并的图像被一起显示
- Android中Menu的基本使用方法
- Android培训班(78)Dalvik虚拟机的寄存器操作
- Android Log详解(Log.v,Log.d,Log.i,Log.w,Log.e)
- Android 驱动文档资料 蜗窝科技
- Android的java的报错提示:Could not find com.android.tools.build:gradle:4.2.2.