在开发有关于购物的app时经常需要涉及到有关付费的方式,这里我只实现了利用paypal实现用户在线付款,使用的是第三方包
使用的流程是:
1、导入paypal所需要的包,通过paypal提供的类库,创建Pay with PayPal显示在页面上。
2、点击PayPal按钮后,将进行PayPal的支付流程
3、当付款成功后回到应用程序中
好吧,不多说了,直接说下流程,导包之后,首先创建paypal按钮,页面上会出现如下图所示
1 //ENVIRONMENT_NO_NETWORK;测试平台 2 private static final String CONFIG_ENVIRONMENT = PaymentActivity.ENVIRONMENT_PRODUCTION; //正式付款平台-------注意,测试的时候用测试平台就行了 3 //配置客户机id(app应用程序ID) 4 //private static final String CONFIG_CLIENT_ID = "APP-80W284485P519543T";//测试ID 5 private static final String CONFIG_CLIENT_ID = "AWA00hBR8almg0HGK-MZ9QP3VoWhilm1Vvs93bVcERdKZFr0jjlsrq4quQRc"; 6 //收款人的邮箱 7 private static final String CONFIG_RECEIVER_EMAIL = "XXX@163.com";
要使用paypal就必须要先加载PayPal
1 //加载Paypal 2 public void loadpaypal(){ 3 Intent intent = new Intent(this, PayPalService.class); 4 intent.putExtra(PaymentActivity.EXTRA_PAYPAL_ENVIRONMENT, CONFIG_ENVIRONMENT);//测试平台 5 intent.putExtra(PaymentActivity.EXTRA_CLIENT_ID, CONFIG_CLIENT_ID);//客户端id 6 intent.putExtra(PaymentActivity.EXTRA_RECEIVER_EMAIL, CONFIG_RECEIVER_EMAIL);//邮箱 7 startService(intent); 8 }
点击按钮后创建PayPal页面
1 //点击事件(点击付费按钮) 2 @Override 3 public void onClick(View v) { 4 //BigDecimal第一个参数是表示当前订单的总金额,第二个参数表示:当前付款的币种,第三个参数是订单的描述 5 PayPalPayment paypalment = new PayPalPayment(new BigDecimal(payProductMoney), "HKD", "總額:"); 6 Intent intent = new Intent(this, PaymentActivity.class); 7 intent.putExtra(PaymentActivity.EXTRA_PAYPAL_ENVIRONMENT, CONFIG_ENVIRONMENT); 8 intent.putExtra(PaymentActivity.EXTRA_CLIENT_ID, CONFIG_CLIENT_ID); 9 intent.putExtra(PaymentActivity.EXTRA_RECEIVER_EMAIL, CONFIG_RECEIVER_EMAIL); 10 //app应用程序ID 11 intent.putExtra(PaymentActivity.EXTRA_CLIENT_ID, CONFIG_CLIENT_ID); 12 //客户端ID 13 intent.putExtra(PaymentActivity.EXTRA_PAYER_ID, "AQO6LxC7oVspFUW24bXk57W0ZOjcSDOr4lCnwL4WVQhZm_yZBlhQcLv31iNs"); 14 intent.putExtra(PaymentActivity.EXTRA_PAYMENT, paypalment); 15 startActivityForResult(intent, 0); 16 }
如下图所示:
有PayPal账户的直接选择付款方式,然后来到此处
只要输入你的电子邮件和密码就能实现付款了,申明一下,这里的电子邮件是PayPal账户的电子邮件,大家如果在PayPal官网注册用过就知道了,这里我不多讲了。
付款成功后,自动回到程序,此时可以上网查看自己的paypal账户是否产生了一条交易记录
这里我贴上付款成功的代码,以供参考
1 @Override 2 protected void onActivityResult (int requestCode, int resultCode, Intent data) { 3 if (resultCode == Activity.RESULT_OK) { 4 PaymentConfirmation confirm = data.getParcelableExtra(PaymentActivity.EXTRA_RESULT_CONFIRMATION); 5 if (confirm != null) { 6 try { 7 //付款成功之后,才开始下订单 8 insertOrder();//下单 9 10 Toast.makeText(ConfirmOrderActivity.this, "付款成功", Toast.LENGTH_LONG).show(); 11 getName.paymoneyFlag=null; 12 Intent in=new Intent(ConfirmOrderActivity.this,UserOrderListActivity.class); 13 startActivity(in); 14 finish(); 15 Log.i("paymentExample", confirm.toJSONObject().toString(4)); 16 } catch (JSONException e) { 17 System.out.println("==========支付失败============="); 18 } 19 } 20 } 21 else if (resultCode == Activity.RESULT_CANCELED) { 22 getName.paymoneyFlag=null; 23 System.out.println("===========取消订单==============="); 24 getName.paymoneyFlag=null; 25 // int ooid=getName.ooid; 26 // if(ooid>0){ 27 // //改變訂單狀態 28 // new updateorderstatus(ooid).execute(); 29 // }else{ 30 // System.out.println("您還沒有下單哦!"); 31 // } 32 } 33 else if (resultCode == PaymentActivity.RESULT_PAYMENT_INVALID) { 34 System.out.println("=============无效的支付============"); 35 } 36 }
当以上步骤都实现了之后别忘记了在AndroidMainifest.xml中配置相关代码,如:
1 <!-- PayPal付款 --> 2 <service android:name="com.paypal.android.sdk.payments.PayPalService" 3 android:exported="false" /> 4 <activity android:name="com.paypal.android.sdk.payments.PaymentActivity" /> 5 <activity android:name="com.paypal.android.sdk.payments.LoginActivity" /> 6 <activity android:name="com.paypal.android.sdk.payments.PaymentMethodActivity" /> 7 <activity android:name="com.paypal.android.sdk.payments.PaymentConfirmActivity" /> 8 <activity android:name="com.paypal.android.sdk.payments.PaymentCompletedActivity" /> 9 10 <activity android:name="io.card.payment.CardIOActivity" 11 android:configChanges="keyboardHidden|orientation" /> 12 <activity android:name="io.card.payment.DataEntryActivity" />
好了以上便是我在项目中用到的整个付款流程....