美文网首页
微信支付-后端php对接APP

微信支付-后端php对接APP

作者: flycorn | 来源:发表于2016-07-14 00:13 被阅读2669次

以下用到的类库来自:微信支付

1、订单生成并成功入库后,后端去微信生成订单:

//微信下单
$input = new WxPayUnifiedOrder();
$input->SetBody($body);  //设置商品或支付单简要描述
$input->SetAttach('');    //设置附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据
$input->SetOut_trade_no($order_sn);  //设置商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号
$input->SetTotal_fee($price);  //设置订单总金额,只能为整数,详见支付金额
$input->SetTime_start(date("YmdHis"));  //设置订单生成时间,格式为yyyyMMddHHmmss
$input->SetTime_expire(date("YmdHis", time() + 60*10));    //设置订单失效时间,格式为yyyyMMddHHmmss
$input->SetGoods_tag("tag");  //设置商品标记,代金券或立减优惠功能的参数,说明详见代金券或立减优惠
$input->SetNotify_url($notify_url);  //设置接收微信支付异步通知回调地址
$input->SetTrade_type("APP");  //设置类型如下:JSAPI,NATIVE,APP
$order_data = WxPayApi::unifiedOrder($input);  //统一下单

PS:$order_data 为微信返回的订单生成结果。
    @param:  appid
    @param:  mch_id
    @param:  nonce_str
    @param:  prepay_id
    @param:  result_code
    @param:  return_code
    @param:  return_msg
    @param:  sign (签名,此时返回的签名不能给APP端调用,需要重新生成签名)
    @param:  trade_type
    结果数据中:prepay_id 数据最重要。

2、将微信返回的prepay_id数据再次签名,再返回给APP端

获取到 prepay_id 后,将参数 appid、noncestr、package(注意:此处应置为 Sign=WXPay)、partnerid、prepayid、timestamp 签名后返回给 APP。

$order_data['timestamp'] = time();
$str = 'appid='.$order_data['appid'].'&noncestr='.$order_data['nonce_str'].'&package=Sign=WXPay&partnerid='.WxPayConfig::MCHID.'&prepayid='.$order_data['prepay_id'].'&timestamp='.$order_data['timestamp'];
//重新生成签名
$order_data['sign'] = strtoupper(md5($str.'&key='.WxPayConfig::KEY));
//将$order_data数据返回给APP端调用
echo json_encode($order_data);

相关文章

网友评论

      本文标题:微信支付-后端php对接APP

      本文链接:https://www.haomeiwen.com/subject/ycrejttx.html