欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PHP微信支付功能示例

程序员文章站 2023-09-04 21:09:48
本文实例讲述了php微信支付功能。分享给大家供大家参考,具体如下: 微信开发sdk:文中用的是php_sdk_v3.0.9 : import("wxpay.li...

本文实例讲述了php微信支付功能。分享给大家供大家参考,具体如下:

微信开发sdk:文中用的是php_sdk_v3.0.9 :

import("wxpay.lib.apppay#config", extend_path, ".php");
import("wxpay.lib.wxpay#api", extend_path, ".php");
//$this->weixinpay();
$config = new \apppayconfig();
//订单号
$appid = $config->getappid();
$key = $config->getkey();
$money = 0.01 * 100;
$ordersn = 'm201810241754107557';//订单号;
$curtime = time();
$input = new \wxpayunifiedorder();
$input->setbody("用户红包");
$input->setout_trade_no($ordersn);
$input->settotal_fee($money);
$input->settrade_type("app");
$unifiedorder = \wxpayapi::unifiedorder($config, $input);
if ($unifiedorder['result_code'] == 'success' && $unifiedorder['return_code'] == 'success') {
  /*$unifiedorder 组成:
   * ["appid"] => string(18) "wx2xxxx49"
  ["mch_id"] => string(10) "1xxxxxx01"
  ["nonce_str"] => string(16) "1gneuxtutcftjvtb"
  ["prepay_id"] => string(36) "wx241933xxx68fa24ece70611692955"
  ["result_code"] => string(7) "success"
  ["return_code"] => string(7) "success"
  ["return_msg"] => string(2) "ok"
  ["sign"] => string(32) "7903xxxxx4710e460cb156"
  ["trade_type"] => string(3) "app"*/
  $curtime = time();
  // 第一部分
  $wxpayresult = new \wxpayresults();
  $wxpayresult->setdata('appid', $unifiedorder['appid']);
  $wxpayresult->setdata('partnerid', $unifiedorder['mch_id']);
  $wxpayresult->setdata('prepayid', $unifiedorder['prepay_id']);
  $wxpayresult->setdata('noncestr', $unifiedorder['nonce_str']);
  $wxpayresult->setdata('timestamp',$curtime);
  $wxpayresult->setdata('package',"sign=wxpay");
  $wxpayresult->setdata('sign',"");
  $wxpayresult->setsign($config);
  $data = $wxpayresult->getvalues();
  // 第二部分
  $data['appid'] = $unifiedorder['appid'];
  $data['partnerid'] = $unifiedorder['mch_id'];
  $data['prepayid'] = $unifiedorder['prepay_id'];
  $data['noncestr'] = $unifiedorder['nonce_str'];;
  $data['timestamp'] = $curtime;
  $data['package'] = "sign=wxpay";
  $data['sign'] = $this->wxapppaysign($key, $data);//$unifiedorder['sign'];//签名,具体签名方案参见微信公众号支付帮助文档;
  $this->returnsuccess($data);
} else {
  log::write(var_export($unifiedorder, true));
  $this->returnerror(300, '微信支付失败');
}
private function wxapppaysign($key,$parameters)
{
  $sign = md5(sprintf("appid=%s&noncestr=%s&package=%s&partnerid=%s&prepayid=%s&timestamp=%s&key=%s",
    $parameters['appid'],
    $parameters['noncestr'],
    $parameters['package'],
    $parameters['partnerid'],
    $parameters['prepayid'],
    $parameters['timestamp'],
    $key));
  return strtoupper($sign);
}

第一部分和第二部分功能是相同的。

更多关于php相关内容感兴趣的读者可查看本站专题:《php微信开发技巧汇总》、《php curl用法总结》、《php网络编程技巧总结》、《php字符串(string)用法总结》、《php中json格式数据操作技巧汇总》及《php针对xml文件操作技巧总结

希望本文所述对大家php程序设计有所帮助。