Android微信支付只能调起一次的问题

今天开发中遇到一个微信支付的问题:购买商品的时候第一次购买调用微信支付可以成功调起微信,也可以正常支付,但是第二次买商品调用微信支付的时候不能正常调起微信支付,在系统中把微信的数据清理之后还是第一次可以之后不行,在网上查了资料,自己又摸索了整整一下午,发现有几个原因。

首先是我自己的原因:

  • 因为公司有多个App,所以这个包我接手的时候项目工程的文件夹路径和ApplicationId是不一样的,而我们与微信后台对比的包名指的是ApplicationId,但是微信回调的方法应该是按照包名的路径来寻找xx.xx.xxx.wxapi.WXPayEntryActivity 这个类的,所以找不到这个类的时候是不会执行接收方法的。不过目前我不确定这是不是微信只能调用成功一次的原因
  • 后来我发现微信后台中运营人员把MD5值写成了SHA1的值,所以可以检查下微信后台填写的各项数据是否都符合要求。

其次在网上查询资料的时候网友遇到的其他问题

就是有可能你在微信后台填写的AppKey是正式打包的key,而平时测试的时候是直接dubug出的包。所以可以可以打一个上线的包来测试这个问题(待验证)
AndroidStudio 获取MD5 SHA1的方法:http://blog.csdn.net/hongcha36/article/details/53516131
具体问题请移步:http://blog.csdn.net/xinluqishi123/article/details/52234002

Android 微信支付一次可以调起微信支付是一种方便快捷、安全可靠的移动支付方式。在Android设备上,首次调起微信支付需要进行相应的配置和设置。 首先,需要在项目的AndroidManifest.xml文件中添加微信支付的权限和配置信息。添加以下内容: ``` <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <meta-data android:name="WCHAT_APPID" android:value="微信开放平台申请的AppID"/> ``` 然后,在应用的Activity文件中,需要注册微信支付相关的广播接收器。可以通过以下代码示例进行注册: ``` public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler { private IWXAPI api; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_wxpay_entry); 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) { if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) { // 处理微信支付结果 // 可以根据resp的errCode判断支付是否成功、失败或取消 } } } ``` 在调起微信支付的时候,需要确保微信应用已安装和版本兼容,并通过以下代码示例进行支付请求: ``` PayReq request = new PayReq(); request.appId = "微信开放平台申请的AppID"; request.partnerId = "商户号"; request.prepayId = "预支付交易会话ID"; request.nonceStr = "随机字符串"; request.timeStamp = "时间戳"; request.packageValue = "扩展字段"; request.sign = "签名"; api.sendReq(request); ``` 以上是首次调起Android微信支付的相关步骤和代码示例。根据以上配置和设置,就可以成功调起微信支付功能。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值