Android客户端集成支付宝快捷支付

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android客户端集成支付宝快捷支付相关的知识,希望对你有一定的参考价值。

一. 第三方支付开放接口

1. 支付宝

面向用户:  支付宝、微信

面向企业:  连连支付、东方支付


2. 官网

https://doc.open.alipay.com/doc2/detail?treeId=59&articleId=103563&docType=1


3. 请求参数说明

https://doc.open.alipay.com/doc2/detail.htm?treeId=59&articleId=103663&docType=1


4. 支付宝集成

1) 安全

    哪些参数需要从服务端获取

    a) 订单号

    b) RSA私钥

    优化后:客户端向服务端传参数包括商品id + 价格

                  服务端构造完整的符合支付宝参数规范的订单信息

    

5. 使用OpenSSL生成公钥私钥

支付宝钱包支付接口开发包2.0标准版(20160516)\DEMO\openssl


6. 其他的支付接口

1) Bmob

客户端只要cp一下代码,就可以实现支付宝快捷支付了:


public class MainActivity extends Activity {
 private static final int SDK_PAY_FLAG = 1;

 public void btnpay(View v) {
  String url="可变地址";
  Map<String, String> params=new HashMap<String, String>();
  params.put("product_id", "10101");
  params.put("price", "101元");
  // TODO Auto-generated method stub
  HTTPUtils.get(this, url, params, new ResponseListener() {
   
   @Override
   public void onResponse(String arg0) {
    // TODO Auto-generated method stub
    if(TextUtils.isEmpty(arg0))
    {
     alipay(arg0);
    }
   }
   
   

   @Override
   public void onErrorResponse(VolleyError arg0) {
    // TODO Auto-generated method stub
    
   }
  });


 }
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
 }

private void alipay(String arg0) {
  final String payInfo ="partner=‘2088101568358171‘&seller_id=‘[email protected]‘&out_trade_no=‘0819145412-6177‘&subject=‘测试‘&body=‘测试测试‘&total_fee=‘0.01‘&notify_url=‘http://notify.msp.hk/notify.htm‘&service=‘mobile.securitypay.pay‘&payment_type=‘1‘&_input_charset=‘utf-8‘&it_b_pay=‘30m‘&sign=‘lBBK%2F0w5LOajrMrji7DUgEqNjIhQbidR13GovA5r3TgIbNqv231yC1NksLdw%2Ba3JnfHXoXuet6XNNHtn7VE%2BeCoRO1O%2BR1KugLrQEZMtG5jmJIe2pbjm%2F3kb%2FuGkpG%2BwYQYI51%2BhA3YBbvZHVQBYveBqK%2Bh8mUyb7GM1HxWs9k4%3D‘&sign_type=‘RSA‘";
  
  
  new Thread() {
   
   @Override
   public void run() {
    // 构造PayTask 对象
    PayTask alipay = new PayTask(MainActivity.this);
    // 调用支付接口,获取支付结果
    String result = alipay.pay(payInfo, true);
    
    Message msg = new Message();
    msg.what = SDK_PAY_FLAG;
    msg.obj = result;
    mHandler.sendMessage(msg);
   }
  }.start();;
  
 }
private Handler mHandler = new Handler() {
 @SuppressWarnings("unused")
 public void handleMessage(Message msg) {
  switch (msg.what) {
  case SDK_PAY_FLAG: {
   PayResult payResult = new PayResult((String) msg.obj);
   /**
    * 同步返回的结果必须放置到服务端进行验证(验证的规则请看https://doc.open.alipay.com/doc2/
    * detail.htm?spm=0.0.0.0.xdvAU6&treeId=59&articleId=103665&
    * docType=1) 建议商户依赖异步通知
    */
   String resultInfo = payResult.getResult();// 同步返回需要验证的信息

   String resultStatus = payResult.getResultStatus();
   // 判断resultStatus 为“9000”则代表支付成功,具体状态码代表含义可参考接口文档
   if (TextUtils.equals(resultStatus, "9000")) {
    Toast.makeText(MainActivity.this, "支付成功", Toast.LENGTH_SHORT).show();
   } else {
    // 判断resultStatus 为非"9000"则代表可能支付失败
    // "8000"代表支付结果因为支付渠道原因或者系统原因还在等待支付结果确认,最终交易是否成功以服务端异步通知为准(小概率状态)
    if (TextUtils.equals(resultStatus, "8000")) {
     Toast.makeText(MainActivity.this, "支付结果确认中", Toast.LENGTH_SHORT).show();

    } else {
     // 其他值就可以判断为支付失败,包括用户主动取消支付,或者系统返回的错误
     Toast.makeText(MainActivity.this, "支付失败", Toast.LENGTH_SHORT).show();

    }
   }
   break;
  }
  default:
   break;
  }
 };
};

}


本文出自 “怎样打好java基础” 博客,请务必保留此出处http://xiezhengping.blog.51cto.com/8272111/1795255

以上是关于Android客户端集成支付宝快捷支付的主要内容,如果未能解决你的问题,请参考以下文章

Android 支付宝快捷支付集成及ALI64错误的有效解决

Android 集成支付宝支付详解

Android 开发之Android 应用程序如何调用支付宝接口

使用OpenSSL做RSA签名验证 支付宝移动快捷支付 的server异步通知

支付宝

支付宝