pay:
function
(){
var
that=this
wx.getStorage({
key: 'openid',
success:
function
(res) {
wx.request({
url: url + 'Wx_Pay',
data: {
openid:res.data,
fee: that.data.totalPrice,
details: that.data.goodsList[0].goods_name,
},
success:
function
(result){
if
(result.data){
wx.requestPayment({
timeStamp: result.data['timeStamp'],
nonceStr: result.data['nonceStr'],
package: result.data['package'],
signType: 'MD5',
paySign: result.data['paySign'],
'success':
function
(successret){
console.log('支付成功');
wx.getStorage({
key: 'userInfo',
success:
function
(getuser) {
wx.request({
url: url + 'Wx_AddOrder',
data: {
uname: getuser.data.nickName,
goods: that.data.goodsList[0].goods_name,
price: that.data.totalPrice,
openid:res.data,
},
success:
function
(lastreturn) {
console.log(
"存取成功"
);
}
})
},
})
},'fail':
function
(res){
}
})
}
}
})
},
})
},
public
function
Wx_Pay(){
$request
=Request::instance();
$fee
=
$request
->param('fee');
$details
=
$request
->param('details');
$appid
= 'appid';
$body
=
$details
;
$mch_id
= '1486742092';
$nonce_str
=
$this
->nonce_str();
$notify_url
= 'https:
$openid
=
$request
->param('openid');
$out_trade_no
=
$this
->order_number(
$openid
);
$spbill_create_ip
= '123.206.45.131';
$total_fee
=
$fee
*100;
$trade_type
= 'JSAPI';
$post
['appid'] =
$appid
;
$post
['body'] =
$body
;
$post
['mch_id'] =
$mch_id
;
$post
['nonce_str'] =
$nonce_str
;
$post
['notify_url'] =
$notify_url
;
$post
['openid'] =
$openid
;
$post
['out_trade_no'] =
$out_trade_no
;
$post
['spbill_create_ip'] =
$spbill_create_ip
;
$post
['total_fee'] =
$total_fee
;
$post
['trade_type'] =
$trade_type
;
$sign
=
$this
->sign(
$post
);
$post_xml
= '<xml>
<appid>'.
$appid
.'</appid>
<body>'.
$body
.'</body>
<mch_id>'.
$mch_id
.'</mch_id>
<nonce_str>'.
$nonce_str
.'</nonce_str>
<notify_url>'.
$notify_url
.'</notify_url>
<openid>'.
$openid
.'</openid>
<out_trade_no>'.
$out_trade_no
.'</out_trade_no>
<spbill_create_ip>'.
$spbill_create_ip
.'</spbill_create_ip>
<total_fee>'.
$total_fee
.'</total_fee>
<trade_type>'.
$trade_type
.'</trade_type>
<sign>'.
$sign
.'</sign>
</xml> ';
$url
= 'https:
$xml
=
$this
->http_request(
$url
,
$post_xml
);
$array
=
$this
->xml(
$xml
);
if
(
$array
['RETURN_CODE'] == 'SUCCESS' &&
$array
['RESULT_CODE'] == 'SUCCESS'){
$time
= time();
$tmp
='';
$tmp
['appId'] =
$appid
;
$tmp
['nonceStr'] =
$nonce_str
;
$tmp
['package'] = 'prepay_id='.
$array
['PREPAY_ID'];
$tmp
['signType'] = 'MD5';
$tmp
['timeStamp'] =
"$time"
;
$data
['state'] = 1;
$data
['timeStamp'] =
"$time"
;
$data
['nonceStr'] =
$nonce_str
;
$data
['signType'] = 'MD5';
$data
['package'] = 'prepay_id='.
$array
['PREPAY_ID'];
$data
['paySign'] =
$this
->sign(
$tmp
);
$data
['out_trade_no'] =
$out_trade_no
;
}
else
{
$data
['state'] = 0;
$data
['text'] =
"错误"
;
$data
['RETURN_CODE'] =
$array
['RETURN_CODE'];
$data
['RETURN_MSG'] =
$array
['RETURN_MSG'];
}
echo
json_encode(
$data
);
}
private
function
nonce_str(){
$result
= '';
$str
= 'QWERTYUIOPASDFGHJKLZXVBNMqwertyuioplkjhgfdsamnbvcxz';
for
(
$i
=0;
$i
<32;
$i
++){
$result
.=
$str
[rand(0,48)];
}
return
$result
;
}
private
function
order_number(
$openid
){
return
md5(
$openid
.time().rand(10,99));
}
public
function
sign(
$data
)
{
$stringA
= '';
foreach
(
$data
as
$key
=>
$value
) {
if
(!
$value
)
continue
;
if
(
$stringA
)
$stringA
.= '&' .
$key
.
"="
.
$value
;
else
$stringA
=
$key
.
"="
.
$value
;
}
$wx_key
= 'Zhangyusheng19810318015729366660';
$stringSignTemp
=
$stringA
. '&key=' .
$wx_key
;
return
strtoupper
(md5(
$stringSignTemp
));
}
function
http_request(
$url
,
$data
= null,
$headers
=
array
())
{
$curl
= curl_init();
if
(
count
(
$headers
) >= 1) {
curl_setopt(
$curl
, CURLOPT_HTTPHEADER,
$headers
);
}
curl_setopt(
$curl
, CURLOPT_URL,
$url
);
curl_setopt(
$curl
, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt(
$curl
, CURLOPT_SSL_VERIFYHOST, FALSE);
if
(!
empty
(
$data
)) {
curl_setopt(
$curl
, CURLOPT_POST, 1);
curl_setopt(
$curl
, CURLOPT_POSTFIELDS,
$data
);
}
curl_setopt(
$curl
, CURLOPT_RETURNTRANSFER, 1);
$output
= curl_exec(
$curl
);
curl_close(
$curl
);
return
$output
;
}
private
function
xml(
$xml
){
$p
= xml_parser_create();
xml_parse_into_struct(
$p
,
$xml
,
$vals
,
$index
);
xml_parser_free(
$p
);
$data
=
""
;
foreach
(
$index
as
$key
=>
$value
) {
if
(
$key
== 'xml' ||
$key
== 'XML')
continue
;
$tag
=
$vals
[
$value
[0]]['tag'];
$value
=
$vals
[
$value
[0]]['value'];
$data
[
$tag
] =
$value
;
}
return
$data
;
}
暂时没有评论,来抢沙发吧~