首页 > 系统 > Android > 正文

Android 如何集成Paypal支付

2019-11-09 18:34:55
字体:
来源:转载
供稿:网友

最近做一个项目用到Paypal支付,官网上有集成文档,但是感觉有点复杂,我再这里把步骤优化一下,方便大家集成!

1:支付流程:

Paypal 的支付流程很简单,我们把钱支付到商家paypal成功以后,paypal会返回给我们一个支付ID,我们拿着支付ID传给服务器,服务器进行验证(确定客户是否支付完成),验证成功后,这个支付就成功了。

2:如何集成Paypal?

  首先注册Paypal商家账号,注册完成后登录 https://developer.paypal.com/

  我们会看到下面的菜单栏有这一项,

  

  点击My Apps 我们可以在这里面创建APP,APP创建成功以后,我们就可以获得一个Client ID Secret,这个很重要哦!在代码里面要用到的,并且这个ID又两个,一个是测试(sandbox)用的,一个是开发(live)环境用的。

  在里面我们还需要申请测试账号,在里面可以分配虚拟货币,给我们测试用,步骤就不介绍啦,有问题可以留言咨询哈!

 下面我们看一下如何集成到代码里面

 我们可以参考github上的Demo https://github.com/paypal/PayPal-Android-SDK

    1:在项目的gradle里面配置

        compile 'com.paypal.sdk:paypal-android-sdk:2.15.2'    2:初始化配置

   

PRivate static PayPalConfiguration config = new PayPalConfiguration()        // 测试环境(ENVIRONMENT_SANDBOX)        // 正式(ENVIRONMENT_PRODUCTION)        .environment(PayPalConfiguration.ENVIRONMENT_NO_NETWORK)//这里用的是虚拟环境,在没有clientId的时候用这个。        .clientId("<YOUR_CLIENT_ID>");//这里要填我们创建APP的时候给的clientId//注意:这里的ID有两套,一个是测试用的,对应的上面environment就是 ENVIRONMENT_SANDBOX。两个不能用乱了。

    3:启动Paypal服务,并且在onDestroy时停止服务。

@Overrideprotected 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);}@Overridepublic void onDestroy() {    stopService(new Intent(this, PayPalService.class));    super.onDestroy();}

  4:创建支付,进入支付页面

public void onBuyPressed(View pressed) {    // PAYMENT_INTENT_SALE 将导致支付立即完成。.
    // Change PAYMENT_INTENT_SALE to     //   - PAYMENT_INTENT_AUTHORIZE to only authorize payment and capture funds later.    //   - PAYMENT_INTENT_ORDER to create a payment for authorization and capture    //     later via calls from your server. PayPalPayment payment = new PayPalPayment(new BigDecimal("1.75"), "USD", "sample item",            PayPalPayment.PAYMENT_INTENT_SALE);    Intent intent = new Intent(this, PaymentActivity.class);    // send the same configuration for restart resiliency    intent.putExtra(PayPalService.EXTRA_PAYPAL_CONFIGURATION, config);    intent.putExtra(PaymentActivity.EXTRA_PAYMENT, payment);    startActivityForResult(intent, 0);}5:实现支付回调

@Overrideprotected 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:这里我们可以拿到confirm,里面有个id我们需要把这个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.");    }}

6:服务端验证

   我们拿到支付ID后,传给服务器,服务器会验证客户是否支付成功。当然,服务端也是需要集成Paypal的代码,进行验证的。

7:最后mainfests

<activity android:name="com.paypal.android.sdk.payments.PaymentActivity" /> <activity android:name="com.paypal.android.sdk.payments.PaymentMethodActivity" /> <activity android:name="com.paypal.android.sdk.payments.PaymentConfirmActivity" /> <activity android:name="com.paypal.android.sdk.payments.LoginActivity" /> <activity android:name="com.paypal.android.sdk.payments.PayPalFuturePaymentActivity" /> <activity android:name="com.paypal.android.sdk.payments.FuturePaymentConsentActivity" /> <activity android:name="com.paypal.android.sdk.payments.FuturePaymentInfoActivity" /> <activity android:name="com.paypal.android.sdk.payments.PayPalProfileSharingActivity" /> <activity android:name="com.paypal.android.sdk.payments.ProfileSharingConsentActivity" /> <service android:name="com.paypal.android.sdk.payments.PayPalService" android:exported="false" />

到这一步以及算是完成了支付了,下面说说我再集成的时候遇到的问题吧!

1:我再创建APP的时候摸索了很久,网上也找了一些资料,但是都不这么详细,大家有问题可以邮箱给我哈!

2:账号问题,我再进行沙盒测试的时候,测试通过。但是一切换的正式(live)环境的就不行,原因是我们国内的paypal不能用,我的解决办法是,办一张信用卡,开通国际支付,然后注册一个国外的paypal账户,用信用卡绑定的paypal给国外的paypal转钱过去,然后用国外的paypal支付,这样就OK了。

上面集成的Paypal支付里面还包含了信用卡的支付,如果单纯的就集成Paypal支付,还有简单方法哦!

在这个里面 https://repo1.maven.org/maven2/com/paypal/sdk/paypal-android-sdk/ 下载一个最新的aar文件,然后放进项目的lib目录里面。然后我们就可以去掉gradle里面的依赖了。代码和上面的一样。

好啦!大家如果有什么问题,可以留言或者邮箱哈,我会尽量帮大家解决。

 


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表