這篇文章主要介紹了關於基於php開發app微信支付接口,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
定義好商家支付資訊
define(APPID, $payment ['appId']); // appid
define(APPSECRET, $payment ['appSecret']); // appSecret
define(MCHID , $payment ['partnerId']);//商家號碼
define(KEY, $payment ['partnerKey']); // 通加密字串
define(NOTIFY_URL, $return_url ); // 成功回呼url
1 2 3 4 5 6 7 8 9 10 11 12 | $signArray = array (
'appid' => $payment ['appId'],
'mch_id' => $payment ['partnerId'],
'nonce_str' => self::createNoncestr(),
'out_trade_no' => $order ['order_sn'],
'body' => $order ['body'],
"total_fee" => $order ['order_amount'],
"notify_url" => $return_url ,
"spbill_create_ip" => $_SERVER [ "REMOTE_ADDR" ],
"trade_type" => "APP" ,
);
|
登入後複製
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | $sign =self::getSign( $signArray );
$goPay = array (
'appid' => $payment ['appId'],
'mch_id' => $payment ['partnerId'],
'nonce_str' => $signArray ['nonce_str'],
'sign' => $sign ,
'out_trade_no' => $order ['order_sn'],
"total_fee" => $order ['order_amount'],
'body' => $order ['body'],
"notify_url" => $return_url ,
"spbill_create_ip" => $_SERVER [ "REMOTE_ADDR" ],
"trade_type" => "APP" ,
);
$goPayXml =self::arrayToXml( $goPay );
$result =self::sendPrePayCurl( $goPayXml );
return $result ;
|
登入後複製
產生隨機字串函數
1 2 3 4 5 6 7 8 9 | public function createNoncestr( $length = 32) {
$chars = "abcdefghijklmnopqrstuvwxyz0123456789" ;
$str = "" ;
for ( $i = 0; $i < $length ; $i ++) {
$str .= substr ( $chars , mt_rand(0, strlen ( $chars ) - 1), 1);
}
return $str ;
}
|
登入後複製
簽名函數
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
public function getSign( $Obj ) {
foreach ( $Obj as $k => $v ) {
$Parameters [ $k ] = $v ;
}
ksort( $Parameters );
$String = self::formatBizQueryParaMap( $Parameters , false);
$String = $String . "&key=" . KEY;
$String = md5( $String );
$result_ = strtoupper ( $String );
return $result_ ;
}
|
登入後複製
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | public function formatBizQueryParaMap( $paraMap , $urlencode ) {
$buff = "" ;
ksort( $paraMap );
foreach ( $paraMap as $k => $v ) {
if ( $urlencode ) {
$v = urlencode( $v );
}
$buff .= $k . "=" . $v . "&" ;
}
$reqPar ;
if ( strlen ( $buff ) > 0) {
$reqPar = substr ( $buff , 0, strlen ( $buff ) - 1);
}
return $reqPar ;
}
|
登入後複製
把所要請求參數組裝xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
function arrayToXml( $arr )
{
$xml = "<xml>" ;
foreach ( $arr as $key => $val )
{
if ( is_numeric ( $val ))
{
$xml .= "<" . $key . ">" . $val . "</" . $key . ">" ;
}
else
$xml .= "<" . $key . "><![CDATA[" . $val . "]]></" . $key . ">" ;
}
$xml .= "</xml>" ;
return $xml ;
}
|
登入後複製
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | public function sendPrePayCurl( $xmlData ) {
$url = "https://api.mch.weixin.qq.com/pay/unifiedorder" ;
$header [] = "Content-type: text/xml" ;
$curl = curl_init();
curl_setopt( $curl , CURLOPT_HTTPHEADER, $header );
curl_setopt( $curl , CURLOPT_URL, $url );
curl_setopt( $curl , CURLOPT_RETURNTRANSFER, true);
curl_setopt( $curl , CURLOPT_POST, 1);
curl_setopt( $curl , CURLOPT_POSTFIELDS, $xmlData );
$data = curl_exec( $curl );
if (curl_errno( $curl )) {
print curl_error( $curl );
}
curl_close( $curl );
return self::XMLDataParse( $data );
}
public static function XMLDataParse( $data ) {
$msg = array ();
$msg = ( array ) simplexml_load_string( $data , 'SimpleXMLElement', LIBXML_NOCDATA);
return $msg ;
}
|
登入後複製
相關推薦:
php開發電影網站影片教學課程介紹(仿愛奇藝)
#
以上是基於php開發app微信支付接口的詳細內容。更多資訊請關注PHP中文網其他相關文章!