Skip to content
thenbsp edited this page Jan 26, 2018 · 6 revisions

支付通知

统一下单时有一个必填参数:notify_url,即支付成功时的通知地址用,以处理后期业务,比如修改订单状态,通知请求中将会携带以下参数:

  • appid 商户所对应的公众号 APPID
  • bank_type 用户支付所使用的银行类型
  • cash_fee 用户最终实付款
  • fee_type 用户支付的货币类型 CNY 为人民币
  • is_subscribe 用户是否关注了公众号
  • mch_id 商户 ID
  • nonce_str 随机字符
  • openid 用户相对于公众号的唯一ID (同一个用户在不同公众号中 Openid 不同)
  • out_trade_no 为订单 ID,和统一下单时的 out_trade_no 对应。
  • result_code 交易是否成功 SUCCESS/FAIL
  • return_code 通信状态标识 SUCCESS/FAIL
  • sign 数据签名
  • time_end 交易结束时间
  • total_fee 订单的总金额(和 cash_fee 不一样)
  • trade_type 支付方式类别(JSAPI:公众号支付,NATIVE:原生扫码支付, APP:APP 支付, WAP:手机浏览器支付, MICROPAY:刷卡支付)
  • transaction_id 微信交易 ID
use Thenbsp\Wechat\Payment\Notify;

$notify = new Notify();

if( !$notify->containsKey('out_trade_no') ) {
    // 失败时必需返回,否则微信服务器将重复提交通知
    $notify->fail('Invalid Request');
}

// 在这里处理你的业务逻辑,比如修改订单状态
// $notify['out_trade_no'] 为订单号

// 返回成功标识
$notify->success('OK');

调试 Request

use Thenbsp\Wechat\Payment\Notify;
use Symfony\Component\HttpFoundation\Request;

// 创建 Request 对象
$request = Request::createFromGlobals();

// 输出到日志
$logger->debug($request->getContent());

// 指定 Request
$notify = new Notify($request);

// ...