yorkie / react-native-wechat

🚀 WeChat login, share, favorite and payment for React-Native on iOS and Android platforms (QQ: 336021910)
https://npmjs.org/package/react-native-wechat
MIT License
2.91k stars 711 forks source link

支付成功后没有回调 #431

Open Darkhorse-Fraternity opened 5 years ago

Darkhorse-Fraternity commented 5 years ago

文档中的WXEntryActivity 需要改成 WXPayEntryActivity,否则会导致无法查收,可能是新版本的原因 https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5#

Y-JH commented 5 years ago

我已经找到了解决方法:在你的 wxapi 目录下创建 package com.ylj.wallet.youtu.wxapi; import android.app.Activity; import android.os.Bundle; import com.theweflex.react.WeChatModule;

public class WXPayEntryActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); WeChatModule.handleIntent(getIntent()); finish(); } }

具体可以在这个博客中找到 https://www.jianshu.com/p/6a792118fae4

我按照这个配置好了之后,支付成功回调崩溃。然后我尝试了好多次,找不到原因,最后删除了app目录下的build文件,重新编译,就好了,一切都回到我的需求上。

mtfCloud commented 5 years ago

package com.ylj.wallet.youtu.wxapi; 这后面的package,"com.ylj.wallet.youtu" 这一块,是与MainActivity.java里面的一样,还是应该填写成实际打包后的包名?

mtfCloud commented 5 years ago

我已经找到了解决方法:在你的 wxapi 目录下创建 package com.ylj.wallet.youtu.wxapi; import android.app.Activity; import android.os.Bundle; import com.theweflex.react.WeChatModule;

public class WXPayEntryActivity extends Activity { @override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); WeChatModule.handleIntent(getIntent()); finish(); } }

具体可以在这个博客中找到 https://www.jianshu.com/p/6a792118fae4

我按照这个配置好了之后,支付成功回调崩溃。然后我尝试了好多次,找不到原因,最后删除了app目录下的build文件,重新编译,就好了,一切都回到我的需求上。

"删除app目录下的build文件",是build文件夹吗?

mtfCloud commented 5 years ago

已解决,说起来就是RN目录的原因~

Liqiankun commented 3 years ago

@mtfCloud 就是删除build文件?

mtfCloud commented 3 years ago

@mtfCloud 就是删除build文件?

不是,是android/app/src/main/java/com/rnapp 就是最后面的包名,假如你的项目名为rnapp,那么默认的包名就是com.rnapp,那么最后的目录就是com/rnapp 但是你实际的应用可能包名为:com.domain.app,那么最后面的目录就得改为:com/domain/app,而且你其他的文件,关于包名的地方都要改,因为你微信的那两个文件也是在这个目录下的,如果不改的话,微信根据你包名的路径找不到,所以没有回调 具体涉及到了哪几个目录和文件,你搜索一下吧~

Liqiankun commented 3 years ago

@mtfCloud 你好这是我的文件结构,能麻烦具体告诉我修改哪个文件吗?非常感谢。 截屏2020-10-21 09 20 27

mtfCloud commented 3 years ago

@mtfCloud 你好这是我的文件结构,能麻烦具体告诉我修改哪个文件吗?非常感谢。 截屏2020-10-21 09 20 27

好久没弄了rn了,记性不太好了,给你个思路,你百度或谷歌搜索:rn改包名,就会出来很多地方,目录方面就是你截图的这里,把com开始向后,改成你的包名(假如包名为com.domain.app那么这个全目录应该是android/app/src/main/java/com/domain/app),然后还有几个文件里面也配置或引入了包名如:com.app,那几个文件也得改,这些应该是可以搜索到的 还有,我看你的包名像是两断式,这样你应该改成和你在微信支付中配置的包名是一样的才可以,

Liqiankun commented 3 years ago

@mtfCloud 可能是这个原因,因为我这个的目录包名和我在build.gradle中设置的applicationId是不一样的。可能和这个有关系。我试试怎么改。非常感谢。安卓新手,只能硬着头皮弄。

Liqiankun commented 3 years ago

@mtfCloud 修改好后,完全打不开微信支付页面了。之前是能打开取消没有回调。

Liqiankun commented 3 years ago

我已经在#582 中搞明白这个问题。