美文网首页
Android 接入微信支付和支付宝支付

Android 接入微信支付和支付宝支付

作者: StoneWay3 | 来源:发表于2023-09-21 15:01 被阅读0次

最近项目接入了微信支付和支付宝支付,目前国内普遍也就这两种了。现在两个的接入已经很简单了,几年前的支付还需要自己写参数,现在参数都在后台了,尤其是支付宝,只需要一个订单信息就行了。
总体来说,接入的步骤也就是三四步:

1接入sdk,2获取订单信息,3调起支付,4接受支付回调信息,5处理回调结果

好了,下面说说具体步骤:

先说支付宝:

第一步:接入sdk

dependencies {
  api 'com.alipay.sdk:alipaysdk-android:+@aar'
}

第二步,获取到订单信息,这个需要你自己调用自己的后台

String aliPayOrderStr="......"

第三步:调起支付宝支付

   final Runnable payRunnable = () -> {
            PayTask alipay = new PayTask(mActivity);
            Map<String, String> result = alipay.payV2(aliPayOrderStr, true);
            Log.i("result==", result.toString());
            Message msg = new Message();
            msg.what = PayCodes.SDK_PAY_FLAG_ZHIFUBAO;
            msg.obj = result;
            mHandler.sendMessage(msg);
        };// 必须异步调用
        Thread payThread = new Thread(payRunnable);
        payThread.start();

第四步:这一步跟第三步写在同一个文件就行

  @SuppressLint("HandlerLeak")
    private Handler mHandler = new Handler() {
        @SuppressWarnings("unused")
        public void handleMessage(Message msg) {
            switch (msg.what) {
                case PayCodes.SDK_PAY_FLAG_ZHIFUBAO: {
                    //这里接收支付宝的回调信息。强烈建议  支付结果一定要调用自己的服务端来确定,不能通过支付宝的回调结果来判断
                    LogUtils.getInstance().e("");
                    break;
                }
                default:
                    break;
            }
        }
    };

第五步:根据自己的业务需求处理结果。

微信支付过程:

第一步:集成sdk

dependencies {
   //微信
    api 'com.tencent.mm.opensdk:wechat-sdk-android:+'
}

第二步:获取订单信息,同样需要你后台处理,后台给的数据格式是这样的

public class WxOrderBean {

    /**
     * package : Sign=WXPay
     * appid :appidstr
     * sign : signstr
     * partnerid : partnerid 
     * prepayid : prepayid 
     * noncestr : noncestr 
     * timestamp : 1695351878
     */

    @SerializedName("package")
    private String packageX;
    private String appid;
    private String sign;
    private String partnerid;
    private String prepayid;
    private String noncestr;
    private String timestamp;

    public String getPackageX() {
        return packageX;
    }

    public void setPackageX(String packageX) {
        this.packageX = packageX;
    }

    public String getAppid() {
        return appid;
    }

    public void setAppid(String appid) {
        this.appid = appid;
    }

    public String getSign() {
        return sign;
    }

    public void setSign(String sign) {
        this.sign = sign;
    }

    public String getPartnerid() {
        return partnerid;
    }

    public void setPartnerid(String partnerid) {
        this.partnerid = partnerid;
    }

    public String getPrepayid() {
        return prepayid;
    }

    public void setPrepayid(String prepayid) {
        this.prepayid = prepayid;
    }

    public String getNoncestr() {
        return noncestr;
    }

    public void setNoncestr(String noncestr) {
        this.noncestr = noncestr;
    }

    public String getTimestamp() {
        return timestamp;
    }

    public void setTimestamp(String timestamp) {
        this.timestamp = timestamp;
    }
}

第三步,调起微信支付:

//先将你拿到的数据处理成这个WxOrderBean 对象
WxOrderBean datas;
// 需要一个注册微信支付的APPID
        IWXAPI api = WXAPIFactory.createWXAPI(mContext,你自己的微信appid);
        PayReq req = new PayReq();
        req.appId = datas.getAppid();
        req.partnerId = datas.getPartnerid();
        req.prepayId = datas.getPrepayid();
        req.nonceStr = datas.getNoncestr();
        req.timeStamp = datas.getTimestamp();
        req.packageValue = datas.getPackageX();
        req.sign = datas.getSign();
        api.sendReq(req); //这里就发起调用微信支付了

第四步:接受微信支付的回调信息。

(1)首先在项目的包路径下面新建一个文件夹wxapi(必须是wxapi这个名字)

(2)然后在wxapi里面新建一个叫WXPayEntryActivity的class文件

(3)在AndroidManifest 文件中注册WXPayEntryActivity,

<activity  android:name=".wxapi.WXPayEntryActivity"  android:exported="true"  android:launchMode="singleTop"/>

特别需要注意的是上面的 exported 属性和 launchMode 属性一定要加上,否则是接收不到回调的

(4)WXPayEntryActivity要实现IWXAPIEventHandler 的接口

public class WXEntryActivity extends AppCompatActivity implements IWXAPIEventHandler {
    @Override
    public void onResp(BaseResp baseResp) {
        //zhifu
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setTitle("支付结果");
            builder.setMessage(String.valueOf(baseResp.errCode));
            builder.show();
        }
    }
}

第五步:根据自己的业务需求处理结果,注意WXPayEntryActivity一般不要有布局,而且拿到结果之后要finish掉,当然你也可以在这里做一些ui。

好啦,微信和支付宝的支付集成到这里就已经弄好了,希望对大家有所帮助。

相关文章

网友评论

      本文标题:Android 接入微信支付和支付宝支付

      本文链接:https://www.haomeiwen.com/subject/axhzvdtx.html