app微信支付的接入,-1坑解决和订单信息跳转到订单详情

微信支付app的接入,初次尝试的人会感觉比较麻烦

一般情况下,开发者使用新的工具都需要先看一看它的说明文档,但微信的App支付文档介绍的不够全面,还是需要有Demo提供参考。
下面是它的接入文档页面:
微信官方微信接入指南
Demo的下载路径

下载完成打开demo:
1.选择项目在这里插入图片描述
2.由于sdk的引入路径改变,但微信平台没有改变
在这里插入图片描述
需要sdk 改为opensdk
在这里插入图片描述
3.当你将所有的路径都修改过来后,还会有如下问题:
在这里插入图片描述
将上面的 imgObj.imageUrl = url 修改为:
imgObj.setImagePath(url);

这个错误出现的地方有两处吧,当你把这些错误都解决后,再次进行编译,就可以正常运行啦!

Demo运行后的界面是这样的:
在这里插入图片描述
由于微信demo的支付需要jks签名和keystore,但他们没有提供,一般情况下是使用不了的,但很奇怪微信第一次使用往往会支付成功,让你好像觉得成功一样,其实并没有。
那回事,第二次就会跑-1,什么清掉缓存什么的,删掉微信重新下载又可以了,可是下一次还是-1,这根本是解决不了的。

所以,我们应该把微信的项目加入到自己的项目中去吧。
一、添加gradle依赖:
在app module目录下的build.gralde中添加
dependencies {
//微信SDK接入
implementation ‘com.tencent.mm.opensdk:wechat-sdk-android-with-mta:5.6.+’
}

二、在AndroidManifest.xml中添加相关权限:



三、创建wxapi目录,并创建WXPayEntryActivity
在你的package目录下,创建wxapi目录,比如说我使用的demo项目,wxapi就在目录申请的应用的路径目录下
同时,在wxapi目录下创建WXPayEntryActivity
WXPayEntryActivity
public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler{
private static final String TAG = “MicroMsg.SDKSample.WXPayEntryActivity”;
private IWXAPI api;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.pay_result);
    api = WXAPIFactory.createWXAPI(this, "你的appid");
    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) {
    Log.d(TAG, "onPayFinish, errCode = " + resp.errCode);

    if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
    //检查时可以通过这个看看是否正常的支付现象
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("支付结果");
        builder.setMessage(getString(R.string.pay_result_callback_msg, String.valueOf(resp.errCode)));
        builder.show();
	//如果支付完成,确定接入,可以通过
	// PayReq req = new PayReq();
	 //req.extData  //获取你传过来的值,比如订单号,提交订单传来的数据都可以等;
    }
}

}
同时,别忘了在AndroidManifest.xml中声名WXPayEntryActivity

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

当这些准备工作都做好之后,就可以准备使用了。

四、使用
当你从服务端获取到订单的相关信息后,就可以调用支付接口了(一般从后台获取这些信息):
IWXAPI api = WXAPIFactory.createWXAPI(context, null);
api.registerApp(IntentKey.WX_APP_ID);
PayReq req = new PayReq();
req.appId = “wx8888888888888888”;//你的微信appid
req.partnerId = “1900000109”;//商户号
req.prepayId = “WX1217752501201407033233368018”;//预支付交易会话ID
req.nonceStr = “5K8264ILTKCH16CQ2502SI8ZNMTM67VS”;//随机字符串
req.timeStamp = “1412000000”;//时间戳
req.packageValue = “Sign=WXPay”;扩展字段,这里固定填写Sign=WXPay
req.sign = “C380BEC2BFD727A4B6845133519F3AD6”;//签名
// req.extData = “app data”; // 你的数据,比如订单号等;
api.registerApp( req.appId)
// 在支付之前,如果应用没有注册到微信,应该先调用IWXMsg.registerApp将应用注册到微信
api.sendReq(req);

注意事项
在微信开放平台上面设置app相关参数的时候,需要应用包名以及应用签名
https://blog.csdn.net/xiayiye5/article/details/99858594,此处提供可复制的签名
release、debug和自动编译下载到手机应用是不同的签名,需要在下图的应用签名修改
在这里插入图片描述
接下来就能正常的走起支付了,如果之前因为支付失败过,即使你成功了可能也会报一次-1错误,你应该每次改好试两次,防止你成功后还是不行,浪费时间,本人就是遇到这个问题,想吐槽一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值