支付--微信APP

xiaoxiao2021-02-28  75

微信APP支付同公众号支付调用的接口一样,部分参数不一样,需要特别注意。

相关签名算法实现、随机数生成、数组XML转换、curl发送post请求可参看上一篇博客《支付-微信公众号》。

统一下单接口:

    public function prePay($body,$userIp,$orderNo, $price){         $postData = [             "appid"     => self::OPEN_ID,             "mch_id"    => self::MCH_ID,             "nonce_str" => self::getNonceStr(),             "body"      => $body,             "out_trade_no"  => $orderNo,             "total_fee"    => (int)($price*100),//微信以分为单位             "spbill_create_ip"  => $userIp,             "notify_url"        => self::notify_url,             "trade_type"        => "APP"         ];         $postData["sign"] = self::getSign($postData, self::APP_KEY);         $postData = self::arrayToXml($postData);         $response = self::xmlToArray(self::curlPost(self::API_UNIFIED_ORDER, $postData));         if (isset($response["return_code"]) && $response["return_code"] == "SUCCESS"){             if ($response["result_code"] == "SUCCESS"){                 $res = [                     "prepayid"  => $response["prepay_id"],                     "partnerid" => self::MCH_ID,                     "appid"     => self::OPEN_ID,                     "package"   => "Sign=WXpay",                     "noncestr"  => self::getNonceStr(),                     "timestamp" => time()                 ];                 $res["sign"] = self::getSign($res, self::APP_KEY);                 return $res;//app端调起支付所需参数             }         }         return [];     }

调起微信APP支付所需的参数中,要特别注意package参数,APP支付固定写成“Sign=WXpay”,而不是公众号支付时的“prepay_id=***”,官方文档上示例是“Sign=WXPay”,但似乎在ios会出问题,反正写成“Sign=WXpay”能调起。

关单接口、查询接口、异步通知接口等等,同公众号支付基本无差别,传入对应参数就可以了,注意app支付和公众号支付用的参数appid、mchid之类的是不同的,要分别使用开放平台和公众平台给的值

转载请注明原文地址: https://www.6miu.com/read-97170.html

最新回复(0)