Closed kamikat closed 7 years ago
测试其他机型吗? 都不可以回调?
测试设备:LG G4 操作系统:Android 6.0 SDK版本:2.1.3
同样的问题,支付成功,客户端无法回调。
更新一下Ping++SDK 试试, 你调起支付的方式是怎样的
我得先说一下,以前一直没问题,我们也没更新过 Ping++SDK,大概最近一阵才发现这个问题。能不能是微信版本更新的问题? 服务端生成 charge,然后客户端 SDK 用该 charge 走的支付流程。
能调起微信支付的界面不?
能调起支付界面,并且支付也成功了。微信那边收到了扣费提示,但是 收不到支付成功的回调。
截一下你调起支付的代码吧
调起支付 payment.charge
存储服务器返回的 charge 对象
Intent intent = new Intent(this, com.pingplusplus.android.PaymentActivity.class);
intent.putExtra(com.pingplusplus.android.PaymentActivity.EXTRA_CHARGE, payment.charge);
startActivityForResult(intent, REQUEST_CODE_PAYMENT);
支付回调
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE_PAYMENT) {
if (resultCode == Activity.RESULT_OK) {
String result = data.getExtras().getString("pay_result");
assert result != null;
switch (result) {
case "success":
// ...
break;
case "fail":
Toast.makeText(this, R.string.error_payment_failure, Toast.LENGTH_SHORT).show();
break;
case "cancel":
break;
case "invalid":
Toast.makeText(this, R.string.error_payment_invalid, Toast.LENGTH_SHORT).show();
break;
}
}
}
}
AndroidManifest.xml 声明
<!-- Ping++ SDK -->
<activity
android:name="com.pingplusplus.android.PaymentActivity"
android:configChanges="orientation|keyboardHidden|navigation|screenSize"
android:launchMode="singleTop"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<!-- 微信支付 -->
<activity-alias
android:name=".wxapi.WXPayEntryActivity"
android:exported="true"
android:targetActivity="com.pingplusplus.android.PaymentActivity" />
<!-- 支付宝 -->
<activity
android:name="com.alipay.sdk.app.H5PayActivity"
android:configChanges="orientation|keyboardHidden|navigation|screenSize"
android:exported="false"
android:screenOrientation="behind" >
</activity>
<activity
android:name="com.alipay.sdk.auth.AuthActivity"
android:configChanges="orientation|keyboardHidden|navigation|screenSize"
android:exported="false"
android:screenOrientation="behind" >
</activity>
你调起的方式不对
String packageName = activity.getPackageName(); Intent intent = new Intent(); ComponentName componentName = new ComponentName(packageName, packageName + ".wxapi.WXPayEntryActivity"); intent.setComponent(componentName); intent.putExtra(PaymentActivity.EXTRA_CHARGE, charge); activity.startActivityForResult(intent, REQUEST_CODE_PAYMENT);
新的SDK可以使用Pingpp.createPayment(ClientSDKActivity.this, charge)
来调起支付
使用 Pingpp.createPayment
调起支付时发生了 ActivityNotFoundException: Unable to find explicit activity class {$packageName/$packageName.wxapi.WXPayEntryActivity};
检查 AndroidManifest.xml 有
<!-- 微信支付 -->
<activity-alias
android:name=".wxapi.WXPayEntryActivity"
android:exported="true"
android:targetActivity="com.pingplusplus.android.PaymentActivity" />
需要什么额外的 AndroidManifest.xml 配置么?
你的AndroidManifest.xml和build.gradle中的包名不一致吧
packageName.wxapi.WXPayEntryActivity 可以将路径 补充完整
啊,好像是这个问题,用 ${applicationId}.wxapi.WXPayEntryActivity
换掉了。多谢多谢。
使用测试环境支付,服务器收到支付信息,客户端正确回调。 使用支付宝支付,服务器收到支付信息,客户端正确回调。 使用微信支付,服务器收到支付信息,客户端无法回调。