使用支付宝支付出现问题:交易订单处理失败 请稍后再试 ALI38173


 

使用支付宝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

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

UniApp 中在 iOS 端实现微信和支付宝支付功能,你需要借助 UniPay 插件,它提供了一套统一的接口处理多种支付平台。以下是基本步骤: 1. **安装 UniPay 插件**: - 在uni-app项目的`plugin`目录下创建文件夹,如`uni-pay` - 打开终端,切换到该文件夹并运行`uni plugin add https://gitee.com/unapay/plugin-unipay.git`来安装插件 2. **配置支付权限**: - 在 `config.json` 文件中添加对 UniPay 的配置,例如: ``` "plugins": { "uni-pay": {} } ``` 3. **引入依赖**: - 在需要调用支付功能的地方,导入 UniPay 组件: ```javascript import { uniPay } from '@uni-app/plugin-unipay'; ``` 4. **初始化支付环境**: - 初始化微信支付环境: ```javascript uniPay.init({ platform: 'wx', // 'wx' for WeChat, 'alipay' for Alipay appid: '<your_wechat_appid>', // 微信支付AppID alipay: { appid: '<your_alipay_appid>', // 支付宝AppID // 其他支付宝配置... }, // 更多配置项... }); ``` 5. **发起支付求**: - 调用相应的支付接口,比如发起微信支付: ```javascript const result = await uniPay.requestPayment({ type: 'wx', // 支付类型 data: { // 需要传递给支付平台的数据,比如商品信息、金额等 total_fee: <total_fee>, nonce_str: '<nonce_str>', package: '<package_string>', sign_type: 'MD5', paySign: '<pay_sign>' }); }); ``` 6. **处理回调结果**: - 支付完成后,用户会返回到应用,这时你需要处理回调数据,并更新订单状态。 注意:实际操作中,上述字段(如AppID、包名等)需要替换为你从微信公众平台或支付宝开放平台获取的真实信息。同时,具体的支付流程会涉及到微信 SDK 或支付宝 SDK 的集成,以及遵守各自的 API 接口规则。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值