支付开发填坑记之支付宝( 三 )

  1. 携带token进行订单支付 。
  2. 成功请求token回来后 , 就可以向支付宝发出一次支付请求 。
  3. 同样构造请求数据:
//业务详细只需要携带步骤2的token即可 。$req_data = https://www.isolves.com/it/cxkf/bk/2019-09-19/'' . $request_token . '';//必填//构造要请求的参数数组 , 无需改动$parameter = array( "service" => "alipay.wap.auth.authAndExecute", // 合作者身份(partner ID) "partner" => trim($this->alipay_config['partner']), // 签名类型 "sec_id" => trim($this->alipay_config['sign_type']), // 和步骤2一致 "format" => $this->format, "v" => $this->v, "req_id" => $this->req_id, // 业务详细参数 "req_data" => $req_data, // 字符集 , 一般为utf8. "_input_charset" => trim(strtolower($this->alipay_config['input_charset'])));
  1. 将这些参数 , 在页面中传送给支付宝即可发起一次支付请求 。
  2. 在PHP 中的实现就是将这些参数 , 渲染至HTML中 , 再将HTML中的表单提交即可 。
  3. 到此 , 网页版的支付宝支付完成整个流程 。
支付结果异步通知在上面 , 我们看到有两个参数传给了支付宝:
  • call_back_url: 交易成功后 , 支付宝页面上“返回到商家页面”的地址(同步回调)
  • notify_url: 交易状态变更后 , 支付宝通知网站的回调地址(异步通知)
对于手机网站支付产生的交易 , 支付宝会根据原始支付API中传入的异步通知地址notify_url , 通过POST请求的形式将支付结果作为参数通知到商户系统 。
对于App支付产生的交易 , 支付宝会根据原始支付API中传入的异步通知地址notify_url , 通过POST请求的形式将支付结果作为参数通知到商户系统 。
支付宝异步通知官方文档中写的比较清楚 , 什么时候出发通知 , 返回什么参数 , 注意事项都有 , 开发者可以根据自己的情况查看具体信息 。
验签步骤可以移步至这里
这里就简单的用手上的项目举例说明 , 支付宝通知后 , 后台是如何进行验签和处理订单 。
public function app_notifyOp(){ $payment_api = $this->_get_payment_api(); $payment_config = $this->_get_payment_config(); // 支付宝是用POST方式发送通知信息 $callback_info = $payment_api->getNotifyInfoApp($_POST); if($callback_info) { //验证成功 if ($callback_info['order_state']) { // 如果是支付成功则改变订单状态 $result = $this->_update_order($callback_info['out_trade_no'], $callback_info['trade_no']); }else{ // 如果是退款成功则修改退订的相关状态 $result = $this->_app_refund($callback_info['out_trade_no'], $callback_info['trade_no'], $callback_info['refund_fee']); } if($result['state']) { echo 'success';die; } } //验证失败 echo "fail";die;}
  1. 获取支付宝通知数据
  2. 支付宝异步通知是


    推荐阅读