支付宝支付集成

支付宝支付应该是大多数app中所需的功能,之前做的app 没有集成过,现在的app 中需要支付功能,所以研究了下支付宝支付,很简单,没有想象中的那么难,不说废话,说说集成过程

1下载支付宝支付sdk 下在下来,放到libs目录下

2在build.gradle 中添加依赖

compile files('libs/alipaySdk-20170922.jar')
3将支付宝文档中的权限和所需的activity复制到清单文件中
4将后台所需要的数据传给后台,这样后天会返给你商户privatekey和订单的加签数据等,然后我们用后天返回的这些数据去掉支付宝,代码如下
 private void goPay(final String orderInfo) {
//        final String orderInfo = "alipay_sdk=alipay-sdk-php-20161101&app_id=2017080308017822&biz_content=%7B%22body%22%3A%22%5Cu901b%5Cu8857%5Cu7f51%5Cu652f%5Cu4ed8%22%2C%22subject%22%3A%22%5Cu901b%5Cu8857%5Cu7f51%5Cu652f%5Cu4ed8%22%2C%22out_trade_no%22%3A%22GJW20171012000032%22%2C%22total_amount%22%3A0.01%2C%22product_code%22%3A%22QUICK_MSECURITY_PAY%22%7D&charset=UTF-8&format=json&method=alipay.trade.app.pay&notify_url=http%3A%2F%2Fwww.app.guangjiew.com%2Fchi-pay%2Fpay-order-notifiy%2F&sign_type=RSA2&timestamp=2017-10-12+16%3A39%3A08&version=1.0&sign=iadkEGYXzzNh9SiaVXXC8Ou0PrtiwslvftNWviUlXrEOIsQKcs1WW5%2Ba5in0WLB0RXDltIzKJijpqxm9VVB6H0D7ARDNIQOVGV0dXYLrdjBKEG%2BtVVbzrBP8PbBN45Nvg0LyhZvbTAH6a5EP4xjN8ucIHhWsdmkNlh%2FyLi7Twal6EkAP2pVHbqkNHmsldoyiCs902BKiImZ9pQt6m42ia1aTSPtoiswP2bv4zRBMWREZJei8nTrLxjVpWUsplqKtBBfZU3EyBilgbNAgKyiBkRuiCm42sLIpEGkEbBxRPmEKpsyGW9y4yCxZfe0VMjCmXl95bosH6GvCfuCO1oXbPw%3D%3D";   // 订单信息

        Runnable payRunnable = new Runnable() {

            @Override
            public void run() {
                PayTask alipay = new PayTask(SureOrderActivity.this);
                Map<String, String> stringStringMap = alipay.payV2(orderInfo, true);

                Message msg = new Message();
                msg.what = SDK_PAY_FLAG;
                msg.obj = stringStringMap;
                mHandler.sendMessage(msg);

            }
        };
        // 必须异步调用
        Thread payThread = new Thread(payRunnable);
        payThread.start();
    }
5 支付结果的获取和处理
@SuppressLint("HandlerLeak")
private Handler mHandler = new Handler() {
    @SuppressWarnings("unused")
    public void handleMessage(Message msg) {
        switch (msg.what) {
            case SDK_PAY_FLAG: {
                @SuppressWarnings("unchecked")
                PayResult payResult = new PayResult((Map<String, String>) msg.obj);
                /**
                 对于支付结果,请商户依赖服务端的异步通知结果。同步通知结果,仅作为支付结束的通知。
                 */
                String resultInfo = payResult.getResult();// 同步返回需要验证的信息
                String resultStatus = payResult.getResultStatus();
                // 判断resultStatus 为9000则代表支付成功
                if (TextUtils.equals(resultStatus, "9000")) {
                    // 该笔订单是否真实支付成功,需要依赖服务端的异步通知。
                    Toast.makeText(SureOrderActivity.this, "支付成功", Toast.LENGTH_SHORT).show();
                } else if (TextUtils.equals(resultStatus,"6001")){
                    Toast.makeText(SureOrderActivity.this, "用户中途取消", Toast.LENGTH_SHORT).show();
                    
                }else if (TextUtils.equals(resultStatus,"8000")){
                    Toast.makeText(SureOrderActivity.this, "正在处理中,支付结果未知(有可能已经支付成功),请查询商户订单列表中订单的支付状态", Toast.LENGTH_SHORT).show();
                }else if (TextUtils.equals(resultStatus,"4000")){
                    Toast.makeText(SureOrderActivity.this, "订单支付失败", Toast.LENGTH_SHORT).show();
                    Bundle bundle = new Bundle();
                    bundle.putString("username","daifukuan");
                    JumperUtils.JumpTo(SureOrderActivity.this, AllOrder.class,bundle);
                }else if (TextUtils.equals(resultStatus,"5000")){
                    Toast.makeText(SureOrderActivity.this, "重复请求", Toast.LENGTH_SHORT).show();
                }else if (TextUtils.equals(resultStatus,"6002")){
                    Toast.makeText(SureOrderActivity.this, "网络连接出错", Toast.LENGTH_SHORT).show();
                }else if (TextUtils.equals(resultStatus,"6004")){
                    Toast.makeText(SureOrderActivity.this, "支付结果未知(有可能已经支付成功),请查询商户订单列表中订单的支付状态", Toast.LENGTH_SHORT).show();
                }
                else {
                    // 该笔订单真实的支付结果,需要依赖服务端的异步通知。
                    Toast.makeText(SureOrderActivity.this, "其它支付错误", Toast.LENGTH_SHORT).show();
                }
                break;
            }
            default:
                break;
        }
    };
};
还有就是PayResult这个类sdk中并未有,需要到demo中找,先在我把这个类直接粘在这
import java.util.Map;

public class PayResult {
   private String resultStatus;
   private String result;
   private String memo;

   public PayResult(Map<String, String> rawResult) {
      if (rawResult == null) {
         return;
      }

      for (String key : rawResult.keySet()) {
         if (TextUtils.equals(key, "resultStatus")) {
            resultStatus = rawResult.get(key);
         } else if (TextUtils.equals(key, "result")) {
            result = rawResult.get(key);
         } else if (TextUtils.equals(key, "memo")) {
            memo = rawResult.get(key);
         }
      }
   }

   @Override
   public String toString() {
      return "resultStatus={" + resultStatus + "};memo={" + memo
            + "};result={" + result + "}";
   }

   /**
    * @return the resultStatus
    */
   public String getResultStatus() {
      return resultStatus;
   }

   /**
    * @return the memo
    */
   public String getMemo() {
      return memo;
   }

   /**
    * @return the result
    */
   public String getResult() {
      return result;
   }
}
这样基本支付宝就集成了,如果还有什么问题可以去官网查看文档,希望这篇文章能帮到需要的人

 
 



  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android集成支付宝支付可以通过以下步骤完成。 首先,注册支付宝开发者账号并创建应用,获得必要的应用ID和密钥。 其次,将支付宝SDK导入到项目中。可以通过Gradle或手动导入方式进行。 接下来,在需要使用支付宝支付的Activity中,添加支付宝支付的逻辑。 首先,创建支付宝支付的请求参数,包括订单号、订单金额、商品名称等必要信息。然后使用支付宝提供的接口将请求参数进行签名,生成最终的支付参数。 接着,调用支付宝提供的支付接口,将支付参数传入,并设置支付结果的回调监听。用户触发支付时,将会跳转到支付宝的支付页面。 最后,在回调监听中处理支付结果。支付宝支付完成后,会通过回调返回支付结果。根据返回的支付结果,可以进行相应的操作,如更新订单状态、跳转到支付成功页面等。 需要注意的是,为了保障支付安全,建议在服务器端进行订单的签名和验签操作,避免将密钥等敏感信息暴露在客户端。 以上就是Android集成支付宝支付的基本流程,开发者可以根据具体需求进行相应的参数设置和结果处理。 ### 回答2: 在Android平台上集成支付宝支付是较为常见的一种支付方式,下面我会用300字回答这个问题。 首先,为了集成支付宝支付,我们需要在支付宝开放平台上注册一个开发者账号,并创建一个应用。然后,我们需要下载支付宝提供的SDK,并将其引入到我们的Android工程中。在引入SDK后,我们可以根据支付宝提供的文档和示例代码进行具体的集成操作。 集成支付宝支付的过程主要包括以下几个步骤: 1. 在AndroidManifest.xml文件中配置支付宝支付所需的权限、服务以及activity。 2. 在应用的代码中,我们需要创建一个支付宝客户端实例,并配置相应的支付参数,如商户ID、订单号、金额等。 3. 调用支付宝客户端实例的支付接口,将支付参数传递给支付宝服务器。 4. 支付宝服务器会返回一个支付结果,我们可以在回调方法中处理这个支付结果,并根据支付结果的状态进行相应的操作,如更新订单状态、跳转到支付成功页面等。 除了以上基本的支付流程外,我们还可以根据需求添加一些附加功能,如查询订单状态、退款等。 在集成支付宝支付时,我们还需要注意一些细节问题。例如,支付宝要求我们的应用必须使用HTTPS协议与其服务器进行通信,因此我们需要确保我们的应用开启了相应的网络权限,并在网络请求时使用HTTPS协议。 另外,为了保证支付安全,我们还需要在支付宝开放平台上生成一个RSA密钥,并将其配置到我们的应用中。 总的来说,集成支付宝支付相对来说并不复杂,只需要按照支付宝的文档和示例代码进行操作,就可以使我们的应用支持支付宝支付功能了。而支付宝支付作为一种简单、安全、方便的支付方式,可以为我们的应用提供更好的用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值