关于集成第三方微信支付,支付宝,高德地图等排坑

本文总结了在集成微信支付、支付宝和高德地图过程中遇到的问题,包括高德地图定位时key的正确使用,支付宝开发的注意事项,以及微信支付的各种坑。

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

高德地图定位:

大家仔细检查key 千万不要搞错了

@OnPermissionDenied(Manifest.permission.ACCESS_FINE_LOCATION)
void showDeniedForLocation() {
    ToastUtils.showToast(mContext, getString(R.string.permission_location_denied));
    initLocation();
}

@OnNeverAskAgain(Manifest.permission.ACCESS_FINE_LOCATION)
void onCameraNeverAskAgain() {
    ToastUtils.showToast(mContext, getString(R.string.permission_location_never_askagain));
}
还有就是定位功能如果是公司内网的话,会获取不到定位,原因不知,切换成数据就可以了。

支付宝开发,值得注意的问题。

签名逻辑需要放在服务端,切勿将私钥泄露在代码中!
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);
                /**
                 * 同步返回的结果必须放置到服务端进行验证(验证的规则请看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(OrderDetaileActivity.this, "支付成功",
                            Toast.LENGTH_SHORT).show();
                    orderstatus="1";

                } else {
                    // 判断resultStatus 为非"9000"则代表可能支付失败
                    // "8000"代表支付结果因为支付渠道原因或者系统原因还在等待支付结果确认,最终交易是否成功以服务端异步通知为准(小概率状态)
                    if (TextUtils.equals(resultStatus, "8000")) {
                        Toast.makeText(OrderDetaileActivity.this, "支付结果确认中",
                                Toast.LENGTH_SHORT).show();
                    } else {
                        // 其他值就可以判断为支付失败,包括用户主动取消支付,或者系统返回的错误
                        Toast.makeText(OrderDetaileActivity.this,
                                "支付失败" + resultStatus, Toast.LENGTH_SHORT)
                                .show();
                        orderstatus="2";
                    }
                }
                getalipaystatus(orderstatus);
                break;
            }
        }
    };
};
/**
 * 支付宝支付异步任务
 *
 * @author Simon
 */
private class AliPayThread extends Thread {
    @Override
    public void run() {
        String result = AlipayAPI.pay(OrderDetaileActivity.this,paykey);
        Message msg = new Message();
        msg.what = SDK_PAY_FLAG;
        msg.obj = result;
        mHandler.sendMessage(msg);
    }
}

一般微信开发,都是有很多坑,讲讲我遇到的. 

1,WXPayEntryActivity里你可以打log查看是否被吊起,没吊起的话看看你的路径,必须是–包名.wxapi.WXPayEntryActivity, 看看manifest里的属性配置,住activity的intentfilter配置有没有问题 
2,在微信没登录时能弹出威信的登录界面,登录后返回-1, 说明你能拉起微信了,但是参数有错误,看看prepay_id 基本格式是这个样子的 WX1217752501201407033233368018 你的应该也差不多,中间掺杂这英文. 
3.微信开放平台的签名应该是小写.之前有文章说是大写,不行. 
4.签名有问题了.一定是打包的时候不对,不能使用debug模式来调试支付功能.
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值