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

来源:互联网 发布:为什么一淘比淘宝便宜 编辑:程序博客网 时间:2024/05/09 22:58

项目中遇到一个这样的问题,用的是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)前端提交的时候传的支付渠道有问题。   最后发现就是前端选择支付方式的时候,支付渠道错了。 改正好,后台返回的数据没问题,微信支付也就能调起了。


选择支付页面是这样的:

   

3 0