赞
踩
1.调试微信支付宝整合插件支付宝APP支付,支付宝支付一直报错 ALIN10146调了6个小时
我使用的是 微信支付宝整合插件,以下为我调用支付的代码
- $params = [
- 'amount'=> 0.01,
- 'orderid'=> $model['order_sn'],
- 'type'=> 'alipay',
- 'title'=> "字帖",
- 'notifyurl'=> $this->request->root(true) . '/addons/epay/index/notifyorder/paytype/alipay',
- 'returnurl' => $this->request->root(true) . '/addons/epay/index/notifyorder/paytype/alipay', //
- 'method'=>"app",
- ];
- $pay_params = \addons\epay\library\Service::submitOrder($params);
原因是支付宝APP支付,没配置returnurl参数,插件默认把returnurl参数加进去,值为空,并且参与了签名,生成的结果给支付宝调用的时候,这个returnurl参数为空,会报错ALIN10146,我的解决方式加returnurl参数,问题成功解决,
如果报错 ALIN10146 建议仔细检查,签名是否有 return_url为空的参数参与签名 sign_type=RSA2&return_url=&version=1.0,
return_url=这样的参数参与签名会报错ALIN10146
下面给出支付宝APP支付最快捷的调试方式
1.下载App支付服务端 DEMO 下载地址https://docs.open.alipay.com/54/106370/
2. 复制对应demo的语言的调用方法,不要用下载下来的SDK里的方法,参数太多不利于调试
3.把下面的代码复制进去,配置appid 生成的私钥 支付宝公钥(商户后台配置后生成的支付宝公钥,下面附有截图)
- $aop = new AopClient;
- $aop->gatewayUrl = "https://openapi.alipay.com/gateway.do";
- $aop->appId = "app_id";
- $aop->rsaPrivateKey = '请填写开发者私钥去头去尾去回车,一行字符串';
- $aop->format = "json";
- $aop->charset = "UTF-8";
- $aop->signType = "RSA2";
- $aop->alipayrsaPublicKey = '请填写支付宝公钥,一行字符串';
- //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
- $request = new AlipayTradeAppPayRequest();
- //SDK已经封装掉了公共参数,这里只需要传入业务参数
- $bizcontent = "{\"body\":\"我是测试数据\","
- . "\"subject\": \"App支付测试\","
- . "\"out_trade_no\": \"20170125test01\","
- . "\"timeout_express\": \"30m\","
- . "\"total_amount\": \"0.01\","
- . "\"product_code\":\"QUICK_MSECURITY_PAY\""
- . "}";
- $request->setNotifyUrl("商户外网可以访问的异步地址");
- $request->setBizContent($bizcontent);
- //这里和普通的接口调用不同,使用的是sdkExecute
- $response = $aop->sdkExecute($request);
- //htmlspecialchars是为了输出到页面时防止被浏览器将关键参数html转义,实际打印到日志以及http传输不会有这个问题
- echo htmlspecialchars($response);//就是orderString 可以直接给客户端请求,无需再做处理。
3.把echo的结果复制给客户端,是可以直接发起调用的,如果不能使用,说明配置的公钥或私钥APPID是错的,仔细检查,可以加裙 721200119问我,我是裙住
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。