ping++调微信支付页面调不起来,怎么入手-

xiaoxiao2021-02-28  176

项目中遇到一个这样的问题,用的是ping++支付,集成了支付宝和微信,支付宝支付是没有问题的,微信界面就是死活调不起,直接就是显示支付失败。

我是这样排查的:

1.微信支付调不起来,微信分享呢?微信分享测试,是没有问题的,说明在微信开发者平台上注册的应用AppID以及签名是没有问题,因为这两项是要配置在shareSdk中的。

2.看到微信开发者平台上的签名以及id,去ping++的开发者平台上验证,配置的微信支付的签名是否有问题,还是没有问题------奇了怪了。

3.配置没有问题,那看具体的代码呢,参照ping++的开发文档,从清单文件到调支付界面的代码,对照着看,有没有配置错?

/** * 调用第三方支付 * * @param chargesUrl */ private void pay(String chargesUrl) { Intent intent = new Intent(); String packageName = getPackageName(); ComponentName componentName_WX = new ComponentName(packageName, packageName + ".wxapi.WXPayEntryActivity"); intent.setComponent(componentName_WX); intent.putExtra(PaymentActivity.EXTRA_CHARGE, chargesUrl); startActivityForResult(intent, REQUEST_CODE_PAYMENT); } @Override 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"); Intent intent = new Intent(PayServiceOrderOptionActivity.this, PayResultActivity.class); intent.putExtra("result", result); startActivity(intent); finish(); } } }也是没有问题的。

4.还是得熟悉ping++的支付流程,前端点击支付按钮的时候,选择的有微信还是支付宝,然后往自己服务器发送请求,传递的参数有pay_style(选择的支付方式,支付宝是0 ,微信是2)和trade_no(订单号),然后服务器返回支付信息,然后拿着支付信息再跳转支付。

具体代码如下:

/** * 结算中心获取订单信息跳转支付 */ @OnClick(R.id.order_submit) void submitPay() { ApiService.getInstance().getPayInfo(selectedPayOption.value, tradeNo).enqueue(new ApiServiceCallback<JsonObject>() { @Override public void onSuccessful(JsonObject result) { if (result != null) { pay(result.toString()); } hideProgress(); } }); }pay()就是调取的三方支付,一步步调试的时发现,选择支付宝还是微信支付后台返回的result中的信息中有一个字段是channel,调选付宝返回的是“alipay”,选微信返回的竟然是是“alipay_wap”,这是银联的,应该返回“wechat”才对。

5.现在问题明确了,肯定和这相关的,(1)后台返回有误 (2)前端提交的时候传的支付渠道有问题。   最后发现就是前端选择支付方式的时候,支付渠道错了。 改正好,后台返回的数据没问题,微信支付也就能调起了。

选择支付页面是这样的:

   

转载请注明原文地址: https://www.6miu.com/read-23019.html

最新回复(0)