php对接app微信支付

时间:2022-10-25 11:35:04

1传递商户交易号和价格去微信进行生成预支付订单

利用微信统一下单方法生成预申请id

$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);  //统一下单


注释:$order_data 为微信返回的订单生成结果。如下所示

appid    mch_id    nonce_str    prepay_id   result_code   return_code    return_msg

 sign (签名,此时返回的签名不能给APP端调用,需要重新生成签名)      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));

echo json_encode($order_data);