Android支付宝、微信支付阐述

为了让各位程序猿们更高效接入、使用及快速解决支付问题。贴上自己对Android中使用第三方支付宝、微信支付一点见解~

1.微信支付

以下是微信支付交互时序图,统一下单API、支付结果通知API和查询订单API等都涉及签名过程,调用都必须在商户服务器端完成PS:看懂此图,即对微信支付的认知已达大成之境。


1.1.1 接入

第一步 》》 在微信开放平台创建应用。

首先打开并登录微信开放平台https://open.weixin.qq.com/,选中创建移动应用,根据要求填写,如图:

                                                                                                                                     (一)

此处注意应用签名必须是应用打包时秘钥文件的签名

最后点击提交审核。

创建的应用,可以在管理中心看到,点击可产看查看创建应用的当前状态。若审核通过可看到应用AppID等信息。:

审核通过后,此时尚没有获得微信支付接口,要获得微信接口需开发者认证,认证需要300RMB,认证审核成功后方才可以获取微信支付接口。

 

第二步 》》将微信支付sdk接入开发的应用中。

进入“资源中心”下载微信支付sdk及微信支付实例。将微信支付jarlibammsdk.jar放入项目lib文件中,然后右键单击工程,选择Build Path中的Configure Build Path...,选中Libraries这个tab,并通过Add Jars...导入工程libs目录下的libammsdk.jar文件

并且在androidmanifest.xml文件中配置微信支付参数,要保证回调类WXPayEntryActivity.java文件必须位于包名的wxapi目录下,否则会导致无法回调的情况。

至此微信支付接入完成

1.2 使用

第一步  》》注册微信API, ”AppID”为在微信开放平台创建应用审核成功后,微信分配的AppID.

第二步  》》在此粘贴处微信支付核心调用代码:

1.3 注意事项

1、 包名和开放平台一致,签名和开放平台一致。包名从androidmanifest.xml文件中复制即可。签名可通过微信官方获取生成工具来获取。

2、 若应用包名修改,那么微信开放平台签名必须要随之更改,否则将支付失败。此时微信因为缓存原因,可能会导致签名更正后,应用使用微信支付仍然失败。此时应该清除微信缓存或者卸载掉微信应用后重新安装,然后再尝试支付可成功付款。

3、 必须在包名目录下要有wxapi这个包名,同时必须有wxPayEntryactivity这个类名,否则无法调起微信支付。

2.支付宝支付

以下是支付宝支付交互流程,相比较微信而言,简直So easy!

2.1 接入

直接在支付宝开放平台下载支付宝SDK, 下载地址https://openhome.alipay.com/

将将支付宝支付jaralipaySDK.jar放入项目lib文件中,然后右键单击工程,选择Build Path中的Configure Build Path...,选中Libraries这个tab,并通过Add Jars...导入工程libs目录下的libammsdk.jar文件

 

 

 

 

 

 

2.2 使用

支付宝无需其他操作,直接使用,贴出核心代码: 

/**

*向支付宝发起支付请求

*/

Runnable payRunnable = new Runnable() {

          @Override

          public void run() {

                // 构造PayTask 对象

                PayTask alipay = new PayTask(this);

                // 调用支付接口,获取支付结果

                String result = alipay.pay(getZFbPayReq(“应用名”,“订单号”,“商店名”,“支付总价格”));

//此处需要Handler来处理支付回调

                Message message = mHandler.obtainMessage();

                message.obj = result;

                message.what = ZHIFUBAO_CALL_NOTIFY;

                mHandler.sendMessage(message);

         }

 };

// 必须异步调用

Thread payThread = new Thread(payRunnable);

payThread.start();

 

 

/**

  *支付宝所需支付参数

*/

public static String getZFbPayReq(String subject, String orderId, String body, String price) {

 

        // 签约合作者身份ID

        String orderInfo = "partner=" + "\"" + AppConfig.PARTNER + "\"";

 

        // 签约卖家支付宝账号

        orderInfo += "&seller_id=" + "\"" + AppConfig.SELLER + "\"";

 

        // 商户网站唯一订单号

        orderInfo += "&out_trade_no=" + "\"" + orderId + "\"";

 

        // 商品名称

        orderInfo += "&subject=" + "\"" + subject + "\"";

 

        // 商品详情

        orderInfo += "&body=" + "\"" + body + "\"";

 

        // 商品金额

        orderInfo += "&total_fee=" + "\"" + price + "\"";

 

        // 服务器异步通知页面路径

        // orderInfo += "¬ify_url=" + "\"" + "http://notify.msp.hk/notify.htm"+ "\"";

        orderInfo += "¬ify_url=" + "\"" + AppConfig.BASE_URL + "notify/alipay"

                + "\"";

        // 服务接口名称, 固定值

        orderInfo += "&service=\"mobile.securitypay.pay\"";

        // 支付类型, 固定值

        orderInfo += "&payment_type=\"1\"";

        // 参数编码, 固定值

        orderInfo += "&_input_charset=\"utf-8\"";

        // 设置未付款交易的超时时间

        // 默认30分钟,一旦超时,该笔交易就会自动被关闭。

        // 取值范围:1m15d

        // m-分钟,h-小时,d-天,1c-当天(无论交易何时创建,都在0点关闭)。

        // 该参数数值不接受小数点,如1.5h,可转换为90m

        orderInfo += "&it_b_pay=\"30m\"";

        // extern_token为经过快登授权获取到的alipay_open_id,带上此参数用户将使用授权的账户进行支付

        // orderInfo += "&extern_token=" + "\"" + extern_token + "\"";

        // 支付宝处理完请求后,当前页面跳转到商户指定页面的路径,可空

        orderInfo += "&return_url=\"m.alipay.com\"";

        // 调用银行卡支付,需配置此参数,参与签名, 固定值 (需要签约《无线银行卡快捷支付》才能使用)

        // orderInfo += "&paymethod=\"expressGateway\"";

        // 对订单做RSA 签名

        String sign = SignUtils.sign(orderInfo, AppConfig.RSA_PRIVATE);

        try {

            // 仅需对sign URL编码

            sign = URLEncoder.encode(sign, "utf-8");

            Log.i("-----sign-2", sign + "");

        } catch (Exception e) {

            e.printStackTrace();

        }

 

        String payInfo = orderInfo + "&sign=\"" + sign + "\"&" + getSignType();

        return payInfo;

}

 

 /**

     * 支付宝 get the sign type we use. 获取签名方式

 */

 private static String getSignType() {

        return "sign_type=\"RSA\"";

    }

 



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值