支付宝和微信支付封装

本文介绍了如何在项目中整合支付宝和微信支付,强调了在微信开放平台使用正式版签名的重要性,以及回调类的放置位置。同时,给出了支付宝回调处理的提示。提供了一个下载链接以获取相关资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注意:

使用正式版签名在微信开放平台填入



微信回调的类记得放在这个包下(自己包名下新建这个包名)

/**
 * Created by xiaozhuge on 2015/12/22.
 * 微信支付后回调的界面
 */
public class WXPayEntryActivity extends BasicActivity implements IWXAPIEventHandler {
    private static final String TAG = "MicroMsg.SDKSample.WXPayEntryActivity";

    private IWXAPI api;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        api = WXAPIFactory.createWXAPI(this, WXPay.APP_ID);

        api.handleIntent(getIntent(), this);

    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        setIntent(intent);
        api.handleIntent(intent, this);
    }

    @Override
    public void onReq(BaseReq req) {
    }

    @Override
    public void onResp(BaseResp resp) {

        switch (resp.errCode) {
            case 0:
               //处理支付成功的回调逻辑

                break;
            case -1:
                Toast.makeText(this, "支付出现错误", Toast.LENGTH_SHORT).show();
                break;
            case -2:
                Toast.makeText(this, "支付已取消", Toast.LENGTH_SHORT).show();
                break;
        }

        MyActivityManager.getMyActivityManager().finishActivity(PaySelectActivity.class);
        MyActivityManager.getMyActivityManager().finishActivity(ConfirmOrderActivity.class);
        MyActivityManager.getMyActivityManager().finishActivity();
    }

    /**
     * 处理微信发出的向第三方应用请求app message
     * <p/>
     * 在微信客户端中的聊天页面有“添加工具”,可以将本应用的图标添加到其中
     * 此后点击图标,下面的代码会被执行。Demo仅仅只是打开自己而已,但你可
     * 做点其他的事情,包括根本不打开任何页面
     */
    public void onGetMessageFromWXReq(WXMediaMessage msg) {
        Intent iLaunchMyself = getPackageManager().getLaunchIntentForPackage(getPackageName());
        startActivity(iLaunchMyself);
    }

    /**
     * 处理微信向第三方应用发起的消息
     * <p/>
     * 此处用来接收从微信发送过来的消息,比方说本demo在wechatpage里面分享
     * 应用时可以不分享应用文件,而分享一段应用的自定义信息。接受方的微信
     * 客户端会通过这个方法,将这个信息发送回接收方手机上的本demo中,当作
     * 回调。
     * <p/>
     * 本Demo只是将信息展示出来,但你可做点其他的事情,而不仅仅只是Toast
     */
    public void onShowMessageFromWXReq(WXMediaMessage msg) {
        if (msg != null && msg.mediaObject != null
                && (msg.mediaObject instanceof WXAppExtendObject)) {
            WXAppExtendObject obj = (WXAppExtendObject) msg.mediaObject;
            Toast.makeText(this, obj.extInfo, Toast.LENGTH_SHORT).show();
        }
    }
}

支付宝的回调在自己activity处理

private Handler mHandler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        switch (msg.what) {
            case SDK_PAY_FLAG:
                PayResult payResult = new PayResult((String) msg.obj);
                // 支付宝返回此次支付结果及加签,建议对支付宝签名信息拿签约时支付宝提供的公钥做验签
                String resultInfo = payResult.getResult();
                String orderNo = payResult.getOrderNo();
                String totalMoney = payResult.getTotalMoney();
                String resultStatus = payResult.getResultStatus();
                String result = payResult.getResult();
                // 判断resultStatus 为“9000”则代表支付成功,具体状态码代表含义可参考接口文档
                if (resultStatus.equals("9000")) {
                    // 在客户端处理支付成功的逻辑
                 
                } else {
                  
                    // 判断resultStatus 为非“9000”则代表可能支付失败
                    // “8000”代表支付结果因为支付渠道原因或者系统原因还在等待支付结果确认,最终交易是否成功以服务端异步通知为准(小概率状态)
                    if (TextUtils.equals(resultStatus, "8000")) {
                        Toast.makeText(PaySelectActivity.this, "支付结果确认中", Toast.LENGTH_SHORT).show();
                    } else {
                        // 其他值就可以判断为支付失败,包括用户主动取消支付,或者系统返回的错误
                        Toast.makeText(PaySelectActivity.this, "支付已取消...", Toast.LENGTH_SHORT).show();
                    }
                }
                break;
            default:
                break;
        }
    }
};

使用方式:

if (payment_pay_app_id.equals("alipay")) {
    IPayFactory factory = new AliFactory();
    AliPay alipay = (AliPay) factory.createPayEntry();
    alipay.setAliPay("蛋白粉", "国民健康云", order_id, bd.toString());
    alipay.pay(PaySelectActivity.this, mHandler, SDK_PAY_FLAG);
} else if (payment_pay_app_id.equals("wxpayjsapi")) {
    IPayFactory factory = new WXFactory();
    WXPay wxPay = (WXPay) factory.createPayEntry();
    wxPay.setWXPay("保健产品", order_id, Integer.toString(bd.multiply(new BigDecimal(100)).intValue()));
    wxPay.pay(mContext);
}

下载地址:http://download.youkuaiyun.com/detail/zhudewei007/9452839


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值