开发者社区> 问答> 正文

接入支付宝,提示ALI38173错误

订单参数: alipay_sdk=alipay-sdk-java-dynamicVersionNo&app_id=2021001136690108&biz_content=%7B%22out_trade_no%22%3A%221%22%2C%22product_code%22%3A%22QUICK_MSECURITY_PAY%22%2C%22timeout_express%22%3A%2230m%22%2C%22total_amount%22%3A%220.01%22%7D&charset=UTF-8&format=json&method=alipay.trade.app.pay&notify_url=http%3A%2F%2Fzuimeizjz.com%2Fpay%2Fasync&sign=cNTinlSb0qlwTaLi4fMhMR6VtIopl7olJk94XqQemXs3GxgKCy1SF%2BqGy99U%2Fjrx%2F%2FSgRQYWakY3sNv2aqZjTgmC84qBYIyQ5JKBPc%2FoF1FPkS2RweIsrhrkyCS1lZ%2FC2dSrEdhxsWONWB74mq3gskllVvEoN9xdpsfw%2BcDiD1Q%2B2S8pMAHhBBK062k6u%2B4s22zHmp8PO%2FCmdYN%2BkHLUAP0Xh7G0XGVxMte4IXu%2Bpl2Zc57YAm7J0OJWvZFtFIz4Z3UxMJWXmsTQw3NkzI8PjJLr%2Botvmo9%2Frm%2BmrsxFnK1RLaYSasUgi8Om5%2FenJuTNC9yVvaUu0rEeXmUuRTGixw%3D%3D&sign_type=RSA2&timestamp=2020-03-15+15%3A54%3A36&version=1.0

展开
收起
1606536378133267 2020-03-15 19:08:25 3566 0
1 条回答
写回答
取消 提交回答
  • 使用支付宝SDK实现移动端APP支付功能,SDK中提供的有一个调用方法,如果订单信息参数有问题就会报错交易订单处理失败:

    /** * 支付宝支付业务 * * @param v */ public void payV2(View v) { if (TextUtils.isEmpty(APPID) || (TextUtils.isEmpty(RSA2_PRIVATE) && TextUtils.isEmpty(RSA_PRIVATE))) { new AlertDialog.Builder(this).setTitle("警告").setMessage("需要配置APPID | RSA_PRIVATE") .setPositiveButton("确定", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialoginterface, int i) { // finish(); } }).show(); return; }

    /** * 这里只是为了方便直接向商户展示支付宝的整个支付流程;所以Demo中加签过程直接放在客户端完成; * 真实App里,privateKey等数据严禁放在客户端,加签过程务必要放在服务端完成; * 防止商户私密数据泄露,造成不必要的资金损失,及面临各种安全风险; * * orderInfo的获取必须来自服务端; */ boolean rsa2 = (RSA2_PRIVATE.length() > 0); Map<String, String> params = OrderInfoUtil2_0.buildOrderParamMap(APPID, rsa2); String orderParam = OrderInfoUtil2_0.buildOrderParam(params);

    String privateKey = rsa2 ? RSA2_PRIVATE : RSA_PRIVATE; String sign = OrderInfoUtil2_0.getSign(params, privateKey, rsa2); final String orderInfo = orderParam + "&" + sign;

    Runnable payRunnable = new Runnable() {

      @Override
      public void run() {
         PayTask alipay = new PayTask(PayDemoActivity.this);
         Map<String, String> result = alipay.payV2(orderInfo, true);
         Log.i("msp", result.toString());
    
         Message msg = new Message();
         msg.what = SDK_PAY_FLAG;
         msg.obj = result;
         mHandler.sendMessage(msg);
      }
    

    };

    Thread payThread = new Thread(payRunnable); payThread.start(); }

    里面的orderInfo是一长串的支付信息,可以APP端生成,也能从后台获取,为了安全期间还是要从后台获取,我这边从后台获取的这一字符串为:

    alipay_sdk=alipay-sdk-java-dynamicVersionNo& app_id=20171226xxxxxxxx& biz_content=业务请求参数的集合,最大长度不限,除公共参数外所有请求参数都必须放在这个参数中传递,具体参照各产品快速接入文档& charset=UTF-8& format=json& method=alipay.trade.app.pay& sign=商户请求参数的签名串,详见签名& timestamp=2018-06-25+16%3A40%3A50& version=1.0

    直接添加到方法中使用就能调起支付了!如果感觉自己的参数有问题可以以此对照一下(注意字符串的格式)。

    2020-04-15 23:22:36
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
手机京东Crash自动分析处理系统 立即下载
《云市场-友盟+智能认证U-Verify》 立即下载
友盟+智能认证U-Verify 立即下载