PayPal Android SDK 2.0 支付

PayPal SDK 2.0支持两种支付方式:立即支付后支付,下面介绍的是立即支付方式。

立即支付

1.用户使用PayPal账户或信用卡支付,支付完成接收返回一个支付ID。

2.在你的服务器端,使用PayPal的API获取付款详情,进行支付验证。

准备

开始之前需要做以下准备:
1. 要有个PayPal账号,且注册为商户。
3. 登录https://developer.paypal.com,注册Sandbox测试账号(买家卖家)。
2. 集成到你的应用中,在https://developer.paypal.com创建一个APP,并选择刚创建好的Sandbox账号,
   APP会生成有ClientID和secret。
4. 提交在Sandbox测试好的应用,PayPal会对你的应用进行审核 。
5. 审核通过后你会获得一个生产环境的ClientID和secret,这一步你已经完成了PayPal付款。

创建Android 项目

1.创建一个Android项目并加入jar包:
2.在 AndroidManifest.xml 文件添加如下权限:
<!-- for card.io card scanning -->
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
<!-- for most things, including card.io & paypal -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>

3.在 AndroidManifest.xml 文件,标签: <application> 内添加 service和activities :
<service android:name="com.paypal.android.sdk.payments.PayPalService" android:exported="false" />
<activity android:name="com.paypal.android.sdk.payments.PaymentActivity" />
<activity android:name="com.paypal.android.sdk.payments.LoginActivity" />
<activity android:name="com.paypal.android.sdk.payments.PaymentMethodActivity" />
<activity android:name="com.paypal.android.sdk.payments.PaymentConfirmActivity" />
<activity android:name="io.card.payment.CardIOActivity" android:configChanges="keyboardHidden|orientation" />
<activity android:name="io.card.payment.DataEntryActivity" />
4.new PayPalConfiguration 实例并初始化配置:
private static PayPalConfiguration config = new PayPalConfiguration()
        // 沙盒测试(ENVIRONMENT_SANDBOX),生产环境(ENVIRONMENT_PRODUCTION)
        .environment(PayPalConfiguration.ENVIRONMENT_SANDBOX)
        //你创建的测试应用Client ID
        .clientId("<YOUR_CLIENT_ID>");

5.在Activity onCreate和onDestroy方法,启动和停止PayPalService 服务:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Intent intent = new Intent(this, PayPalService.class);
    intent.putExtra(PayPalService.EXTRA_PAYPAL_CONFIGURATION, config);
    startService(intent);
}

@Override
public void onDestroy() {
    stopService(new Intent(this, PayPalService.class));
    super.onDestroy();
}

6.创建PayPalPayment intent,当点击按钮进入支付Activity:

public void onBuyPressed(View pressed) {
    /* 
         * PAYMENT_INTENT_SALE will cause the payment to complete immediately.
         * Change PAYMENT_INTENT_SALE to PAYMENT_INTENT_AUTHORIZE to only authorize payment and 
         * capture funds later.
         * Also, to include additional payment details and an item list, see getStuffToBuy() below.
         */
    PayPalPayment payment = new PayPalPayment(new BigDecimal("1.75"), "USD", "hipster jeans",
            PayPalPayment.PAYMENT_INTENT_SALE);
    Intent intent = new Intent(this, PaymentActivity.class);
    intent.putExtra(PaymentActivity.EXTRA_PAYMENT, payment);
    startActivityForResult(intent, 0);
}
7.实现onActivityResult():
@Override
protected void onActivityResult (int requestCode, int resultCode, Intent data) {
    if (resultCode == Activity.RESULT_OK) {
        PaymentConfirmation confirm = data.getParcelableExtra(PaymentActivity.EXTRA_RESULT_CONFIRMATION);
        if (confirm != null) {
            try {
                Log.i("paymentExample", confirm.toJSONObject().toString(4));
                // TODO: 发送支付ID到你的服务器进行验证
                

            } catch (JSONException e) {
                Log.e("paymentExample", "an extremely unlikely failure occurred: ", e);
            }
        }
    }
    else if (resultCode == Activity.RESULT_CANCELED) {
        Log.i("paymentExample", "The user canceled.");
    }
    else if (resultCode == PaymentActivity.RESULT_EXTRAS_INVALID) {
        Log.i("paymentExample", "An invalid Payment or PayPalConfiguration was submitted. Please see the docs.");
    }
}

服务器端验证

在上面我们已完成android 客户端的PayPal支付功能,不过在接下来最后一步,验证Paypal付款详情,确保你的帐户收到实际的付款金额。

1.在Android应用程序,发送支付ID到你的服务器(方法:onActivityResult())。

    当完成支付后,PayPal会返回付款详情:

    {

  "client": {
    "environment": "sandbox",
    "paypal_sdk_version": "2.0.0",
    "platform": "Android",
    "product_name": "PayPal Andorid SDK;"
  },
  "response": {
    "create_time": "2014-02-12T22:29:49Z",
    "id": "PAY-564191241M8701234KL57LXI",
    "intent": "sale",
    "state": "approved"
  },
  "response_type": "payment"
}
//在response中 "id": "PAY-564191241M8701234KL57LXI" 支付ID, 在onActivityResult方法发送支付ID到你的服务器端。

2.在服务器端调用PayPal API ,通过支付ID值来获取付款详情并验证。

如下代码:

public boolean verifyPayment(String paymentId){
  //从PayPal获取付款详情
  String str = getPaymentDetails(paymentId);
  JSONObject detail = JSONObject.fromObject(str);
  //校验订单是否完成
  if("approved".equals(detail.optString("state"))){
   JSONObject transactions = detail.optJSONArray("transactions").optJSONObject(0);
   JSONObject amount = transactions.optJSONObject("amount");
   JSONArray relatedResources = transactions.optJSONArray("related_resources");
   //从数据库查询总金额与Paypal校验支付总金额
   double total = 0;
   if( total != amount.optDouble("total") ){
    return false;
   }
   //校验交易货币类型
   String currency = "USD";
   if( !currency.equals(amount.optDouble("currency")) ){
    return false;
   }
   //校验每个子订单是否完成
   for (int i = 0,j = relatedResources.size(); i < j; i++) {
    JSONObject sale = relatedResources.optJSONObject(i).optJSONObject("sale");
    if( !"completed".equals(sale.optString("state")) ){
     System.out.println("子订单未完成,订单状态:"+sale.optString("state"));
    }
   }
   return true;
  }
  return false;
 }

代码下载

该示例应用程序提供了完整的例子,下载:PayPal SDK Example



要在 Android 应用中集成 PayPal 支付,你需要按照以下步骤进行操作: 1. 创建 PayPal 开发者账号并注册你的应用。 2. 集成 PayPal Android SDK 到你的应用中。 3. 在你的应用中添加一个支付按钮或支付页面,以便用户可以选择 PayPal 作为付款方式。 4. 编写代码来处理 PayPal 支付,包括验证付款和更新你的应用中的订单状态。 下面是一些详细的步骤: 1. 创建 PayPal 开发者账号并注册你的应用。 首先,你需要在 PayPal 上创建一个开发者账号,然后注册你的应用。在注册应用时,你需要提供应用名称和包名,以及其他必要的信息。 2. 集成 PayPal Android SDK 到你的应用中。 接下来,你需要下载和集成 PayPal Android SDK 到你的应用中。你可以从 GitHub 上下载最新版本的 SDK。 集成 SDK 的过程包括将 SDK 添加到你的项目中,添加必要的权限和依赖项,并在你的应用中配置 PayPal 环境。 3. 在你的应用中添加一个支付按钮或支付页面,以便用户可以选择 PayPal 作为付款方式。 你需要在你的应用中添加一个支付页面或按钮,以便用户可以选择 PayPal 作为付款方式。这个页面可以显示商品信息、价格和付款选项。用户可以使用 PayPal 账号或信用卡进行支付。 4. 编写代码来处理 PayPal 支付,包括验证付款和更新你的应用中的订单状态。 最后,你需要编写代码来处理 PayPal 支付。这包括验证付款、更新你的应用中的订单状态,并在付款成功时向用户显示一个成功页面或消息。你可以使用 PayPal 提供的 API 来完成这些任务。 以上是 Android 应用中集成 PayPal 支付的基本步骤。你可以参考 PayPal 的开发文档来获取更详细的信息。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值