网站开发工具 枫子科技,校园网站建设计划,北京网站建设课程培训,淄博学校网站建设定制最近负责的项目事关支付宝APP支付 也踩了一些坑 这边记录下 以下代码基于laravel框架下: 生成APP支付参数: $gateway $this-getGateway();$request $gateway-purchase();$request-setBizContent([subject ,//产品描述out_trade_no ,//本地订单号… 最近负责的项目事关支付宝APP支付 也踩了一些坑 这边记录下 以下代码基于laravel框架下: 生成APP支付参数: $gateway $this-getGateway();$request $gateway-purchase();$request-setBizContent([subject ,//产品描述out_trade_no ,//本地订单号total_amount ,//支付金额 这里无需处理分位问题product_code QUICK_MSECURITY_PAY,//销售产品码商家和支付宝签约的产品码为固定值]);//发送请求$response $request-send();//获取支付路径$orderString $response-getOrderString();/**这里获取的参数 传给app前端由它去调用支付*/ 回调处理: 官方文档是这样写的: $request $gateway-completePurchase();
$request-setParams($request);/*** var LegacyCompletePurchaseResponse $response*/
try {$response $request-send();if($response-isPaid()){/*** Payment is successful*/die(success); //The response should be success only}else{/*** Payment is not successful*/die(fail);}
} catch (Exception $e) {/*** Payment is not successful*/die(fail);
} 然而我这样写后 一直导致回调过来无法执行相应代码 看了下日志 一直报函数错误 说setParams参数有问题 无奈到处百度 最后是在composer包里查看测试示例 查看到这样写法: $response $gateway-completePurchase([params $request])-send(); 这样改正以后 再不会报语法问题了 回调也成功同步了 顺带说一下,这里的isPaid方法里面的代码是这样的: if (array_get($this-data, trade_status)) {if (array_get($this-data, trade_status) TRADE_SUCCESS) {return true;} elseif (array_get($this-data, trade_status) TRADE_FINISHED) {return true;} else {return false;}} elseif (array_get($this-data, code) 10000) {return true;} else {return false;} 说明它已经验证了支付状态 所以可以以此判断是否支付成功. 查询: $options [out_trade_no $data[order_no]];//用本地订单号查询$options [trade_no $data[trade_no]];//支付宝订单号查询//查询订单
$request $gateway-query();$request-setBizContent($options);$response $request-send();//查询成功获取返回信息数据if($response-isSuccessful()) {return $response-getAlipayResponse();} else {return FALSE;} 这一段在github说明里是不存在的,是在tests\AopF2FGatewayTest类下testQuery方法才看到是这样用的 醉了... 每次调用都是要创建相应的gateway(网关) 的这里封装成公用方法 创建网关的时候会指定支付方式。目前只做了App支付这一种 后续做其他的支付方式再记录吧转载于:https://www.cnblogs.com/tudou1223/p/9758762.html