码迷,mamicode.com
首页 > 移动开发 > 详细

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

时间:2016-07-03 15:58:57      阅读:310      评论:0      收藏:0      [点我收藏+]

标签:android   第三方支付   rsa私钥   openssl   

一. 第三方支付开放接口

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=‘xxx@alipay.com‘&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   第三方支付   rsa私钥   openssl   

原文地址:http://xiezhengping.blog.51cto.com/8272111/1795255

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!