vip_pay.action.php 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | Fanwe 方维p2p借贷系统
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2011 http://www.fanwe.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Author: 云淡风轻(1956838968@qq.com)
  8. // +----------------------------------------------------------------------
  9. class vip_payModule extends baseModule
  10. {
  11. /**
  12. * 用户会员购买页面
  13. */
  14. public function purchase(){
  15. $root = array();
  16. $root['status'] = 1;
  17. $root['error'] = '';
  18. //$GLOBALS['user_info']['id'] = 320;
  19. if(!$GLOBALS['user_info']){
  20. $root['error'] = "用户未登陆,请先登陆.";
  21. $root['status'] = 0;
  22. $root['user_login_status'] = 0;//有这个参数: user_login_status = 0 时,表示服务端未登陆、要求登陆,操作
  23. }else{
  24. $user_id = intval($GLOBALS['user_info']['id']);//用户ID
  25. $sql = "select id,is_vip,vip_expire_time from ".DB_PREFIX."user where id = ".$user_id;
  26. $user = $GLOBALS['db']->getRow($sql,true,true);
  27. $vip_expire_time = intval($user['vip_expire_time']);
  28. $root['is_vip'] = intval($user['is_vip']);
  29. $root['vip_expire_time'] = to_date(intval($user['vip_expire_time']),'Y-m-d H:i');
  30. if($vip_expire_time>0){
  31. if($vip_expire_time<NOW_TIME){
  32. $root['is_vip'] = 0;
  33. $root['error'] = '已过期';
  34. $root['vip_expire_time'] = '已过期';
  35. $sql = "update ".DB_PREFIX."user set is_vip = 0 where id = ".$user_id;
  36. $GLOBALS['db']->query($sql);
  37. user_deal_to_reids(array($user_id));
  38. }else{
  39. if(intval($user['is_vip'])==0){
  40. $root['vip_expire_time'] = '未开通';
  41. }
  42. }
  43. }else{
  44. $root['vip_expire_time'] = '未开通';
  45. if(intval($user['is_vip'])==1){
  46. $root['error'] = '永久会员';
  47. $root['vip_expire_time'] = '永久';
  48. }
  49. }
  50. $pay_list = load_auto_cache("pay_list");
  51. $m_config = load_auto_cache("m_config");
  52. $list = array();
  53. //客服端手机类型dev_type=android;dev_type=ios
  54. $dev_type = strim($_REQUEST['sdk_type']);
  55. if (isios() || $dev_type == 'ios'){
  56. //正在审核的版本,只显示:苹果支付
  57. //审核帐户,只显示苹果应用内支付
  58. if ($GLOBALS['user_info']['mobile'] == '13888888888' || $GLOBALS['user_info']['mobile'] == '13999999999' ){
  59. $sql = "select id,name,class_name,logo from ".DB_PREFIX."payment where class_name = 'Iappay' limit 0,1";
  60. $pay_list = $GLOBALS['db']->getAll($sql,true,true);
  61. $list = $pay_list;
  62. }else{
  63. $ios_open_pay = intval($m_config['ios_open_pay']);//IOS默认只支持支持应用内支付,需要开放其它支付选是;
  64. $sdk_version_name = strim($_REQUEST['sdk_version_name']);
  65. if ($m_config['ios_check_version'] != '' && $m_config['ios_check_version'] == $sdk_version_name || $ios_open_pay == 0){
  66. foreach ( $pay_list as $k => $v )
  67. {
  68. if ($v['class_name'] != 'Iappay'){
  69. unset($pay_list[$k]);
  70. //$pay_list[$k]['name'] = $v['class_name'].'aa';
  71. }else{
  72. //$pay_list[$k]['name'] = $v['class_name'];
  73. $list[] = $v;
  74. }
  75. }
  76. }else{
  77. $list = $pay_list;
  78. }
  79. }
  80. }else{
  81. //过滤苹果支付
  82. foreach ( $pay_list as $k => $v )
  83. {
  84. if ($v['class_name'] == 'Iappay'){
  85. unset($pay_list[$k]);
  86. }else{
  87. $list[] = $v;
  88. }
  89. }
  90. }
  91. if($list)$root['pay_list'] = $list;
  92. $rule_list = load_auto_cache("vip_rule_list");
  93. foreach ( $pay_list as $k => $v )
  94. {
  95. if ($v['class_name'] == 'Iappay'){
  96. if(intval($m_config['iap_recharge'])==0){
  97. foreach($rule_list as $k=>$v){
  98. $rule_list[$k]['money'] = $v['iap_money'];
  99. }
  100. }
  101. }
  102. }
  103. foreach ($rule_list as $k => $v)
  104. {
  105. $rule_list[$k]['money_name']=$this->get_money_name($v['money']);
  106. }
  107. $root['rule_list'] = $rule_list;
  108. }
  109. ajax_return($root);
  110. }
  111. /**
  112. * 用户充值支付
  113. */
  114. public function pay(){
  115. $root = array();
  116. $root['status'] = 1;
  117. //$GLOBALS['user_info']['id'] = 1;
  118. if(!$GLOBALS['user_info']){
  119. $root['error'] = "用户未登陆,请先登陆.";
  120. $root['status'] = 0;
  121. $root['user_login_status'] = 0;//有这个参数: user_login_status = 0 时,表示服务端未登陆、要求登陆,操作
  122. }else{
  123. $user_id = intval($GLOBALS['user_info']['id']);//用户ID
  124. $pay_id = intval($_REQUEST['pay_id']);//支付id
  125. $rule_id = intval($_REQUEST['rule_id']);//支付项目id
  126. if($pay_id == 0){
  127. $root['error'] = "支付id无效";
  128. $root['status'] = 0;
  129. }elseif($rule_id == 0){
  130. $root['error'] = "项目id无效或充值金额不能为0";
  131. $root['status'] = 0;
  132. }else{
  133. $sql = "select id,name,class_name,logo from ".DB_PREFIX."payment where is_effect = 1 and online_pay in (3,4) and id =".$pay_id;
  134. $pay = $GLOBALS['db']->getRow($sql,true,true);
  135. if ($rule_id > 0){
  136. $sql = "select money,name,iap_money,product_id,day_num from ".DB_PREFIX."vip_rule where is_effect = 1 and id =".$rule_id;
  137. $rule = $GLOBALS['db']->getRow($sql,true,true);
  138. if ($pay['class_name'] == 'Iappay'){
  139. $money = $rule['iap_money'];
  140. }else{
  141. $money = $rule['money'];
  142. }
  143. }else{
  144. $pay = null;
  145. $money = 0;
  146. }
  147. if(!$pay || $money == 0){
  148. $root['error'] = "支付id或 项目id无效";
  149. $root['status'] = 0;
  150. }else{
  151. if ($pay['class_name'] != 'Iappay'){
  152. $payment_notice['create_time'] = NOW_TIME;
  153. $payment_notice['user_id'] = $user_id;
  154. $payment_notice['payment_id'] = $pay_id;
  155. $payment_notice['money'] = $money;
  156. $payment_notice['diamonds'] = $rule['day_num'];//获得的会员天数
  157. $payment_notice['recharge_id'] = $rule_id;
  158. $payment_notice['recharge_name'] = $rule['name'];
  159. $payment_notice['product_id'] = $rule['product_id'];
  160. $payment_notice['type'] = 1;
  161. do{
  162. $payment_notice['notice_sn'] = to_date(NOW_TIME,"YmdHis").rand(100,999);
  163. $GLOBALS['db']->autoExecute(DB_PREFIX."payment_notice",$payment_notice,"INSERT","","SILENT");
  164. $notice_id = $GLOBALS['db']->insert_id();
  165. }while($notice_id==0);
  166. }else{
  167. $notice_id = $rule['product_id'];
  168. }
  169. $class_name = $pay['class_name']."_payment";
  170. fanwe_require(APP_ROOT_PATH."system/payment/".$class_name.".php");
  171. $o = new $class_name;
  172. $pay= $o->get_payment_code($notice_id);
  173. $root['pay'] = $pay;
  174. }
  175. }
  176. }
  177. ajax_return($root);
  178. }
  179. /**
  180. * 苹果应用内支付成功后,回调
  181. */
  182. public function iappay(){
  183. $root = array();
  184. $root['status'] = 1;
  185. //$GLOBALS['user_info']['id'] = 320;
  186. if(!$GLOBALS['user_info']){
  187. $root['error'] = "用户未登陆,请先登陆.";
  188. $root['status'] = 0;
  189. $root['user_login_status'] = 0;//有这个参数: user_login_status = 0 时,表示服务端未登陆、要求登陆,操作
  190. }else{
  191. $user_id = intval($GLOBALS['user_info']['id']);//用户ID
  192. $receipt_data = strim($_REQUEST['receipt-data']);
  193. //$receipt_data = 'ewoJInNpZ25hdHVyZSIgPSAiQXhjNnZsQWYybnRXYWJTODZTTDFBaXZYUG93VStHNkVCak9Bd0pWT2pHVzNlK0RzRUN3V3NQZHVZZ28vUmx1b3c2Y0RPcUdKRlhGbzUxS0orZGFLdDZUREN1R2tTRG8vQUpJL1FTdGgrVldBQ3lGQlNDSElOUVNSQm9Oa3UxRi8yaHFOWjFCRFc2MjFrOTc3M05SWWdZLzN4MFc3Q2NmUFhiQjJzVjRuV051WkVqY0hONWV2RGVEL2t4UFpvby8xQThBT0g0WEpKZFR1Sy9iUmpDeTd2OGF0RkVkSFpLQ1ZoSDRlbXcwQjBrU1hKaEhtLzUwWUhQc1N2ZTV3UGxubitGbWl5NnIyMnFwY0x3UEl5NStuNzYyYjNvUGkxcXZrQllCTlRHbXozeXRzVTlPdFZMNGNxU0Y0WUZVb1U0UDQrRDdYQXFNSG1uZnFyL1JCN1dKVDZSY0FBQVdBTUlJRmZEQ0NCR1NnQXdJQkFnSUlEdXRYaCtlZUNZMHdEUVlKS29aSWh2Y05BUUVGQlFBd2daWXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFLREFwQmNIQnNaU0JKYm1NdU1Td3dLZ1lEVlFRTERDTkJjSEJzWlNCWGIzSnNaSGRwWkdVZ1JHVjJaV3h2Y0dWeUlGSmxiR0YwYVc5dWN6RkVNRUlHQTFVRUF3dzdRWEJ3YkdVZ1YyOXliR1IzYVdSbElFUmxkbVZzYjNCbGNpQlNaV3hoZEdsdmJuTWdRMlZ5ZEdsbWFXTmhkR2x2YmlCQmRYUm9iM0pwZEhrd0hoY05NVFV4TVRFek1ESXhOVEE1V2hjTk1qTXdNakEzTWpFME9EUTNXakNCaVRFM01EVUdBMVVFQXd3dVRXRmpJRUZ3Y0NCVGRHOXlaU0JoYm1RZ2FWUjFibVZ6SUZOMGIzSmxJRkpsWTJWcGNIUWdVMmxuYm1sdVp6RXNNQ29HQTFVRUN3d2pRWEJ3YkdVZ1YyOXliR1IzYVdSbElFUmxkbVZzYjNCbGNpQlNaV3hoZEdsdmJuTXhFekFSQmdOVkJBb01Da0Z3Y0d4bElFbHVZeTR4Q3pBSkJnTlZCQVlUQWxWVE1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBcGMrQi9TV2lnVnZXaCswajJqTWNqdUlqd0tYRUpzczl4cC9zU2cxVmh2K2tBdGVYeWpsVWJYMS9zbFFZbmNRc1VuR09aSHVDem9tNlNkWUk1YlNJY2M4L1cwWXV4c1FkdUFPcFdLSUVQaUY0MWR1MzBJNFNqWU5NV3lwb041UEM4cjBleE5LaERFcFlVcXNTNCszZEg1Z1ZrRFV0d3N3U3lvMUlnZmRZZUZScjZJd3hOaDlLQmd4SFZQTTNrTGl5a29sOVg2U0ZTdUhBbk9DNnBMdUNsMlAwSzVQQi9UNXZ5c0gxUEttUFVockFKUXAyRHQ3K21mNy93bXYxVzE2c2MxRkpDRmFKekVPUXpJNkJBdENnbDdaY3NhRnBhWWVRRUdnbUpqbTRIUkJ6c0FwZHhYUFEzM1k3MkMzWmlCN2o3QWZQNG83UTAvb21WWUh2NGdOSkl3SURBUUFCbzRJQjF6Q0NBZE13UHdZSUt3WUJCUVVIQVFFRU16QXhNQzhHQ0NzR0FRVUZCekFCaGlOb2RIUndPaTh2YjJOemNDNWhjSEJzWlM1amIyMHZiMk56Y0RBekxYZDNaSEl3TkRBZEJnTlZIUTRFRmdRVWthU2MvTVIydDUrZ2l2Uk45WTgyWGUwckJJVXdEQVlEVlIwVEFRSC9CQUl3QURBZkJnTlZIU01FR0RBV2dCU0lKeGNKcWJZWVlJdnM2N3IyUjFuRlVsU2p0ekNDQVI0R0ExVWRJQVNDQVJVd2dnRVJNSUlCRFFZS0tvWklodmRqWkFVR0FUQ0IvakNCd3dZSUt3WUJCUVVIQWdJd2diWU1nYk5TWld4cFlXNWpaU0J2YmlCMGFHbHpJR05sY25ScFptbGpZWFJsSUdKNUlHRnVlU0J3WVhKMGVTQmhjM04xYldWeklHRmpZMlZ3ZEdGdVkyVWdiMllnZEdobElIUm9aVzRnWVhCd2JHbGpZV0pzWlNCemRHRnVaR0Z5WkNCMFpYSnRjeUJoYm1RZ1kyOXVaR2wwYVc5dWN5QnZaaUIxYzJVc0lHTmxjblJwWm1sallYUmxJSEJ2YkdsamVTQmhibVFnWTJWeWRHbG1hV05oZEdsdmJpQndjbUZqZEdsalpTQnpkR0YwWlcxbGJuUnpMakEyQmdnckJnRUZCUWNDQVJZcWFIUjBjRG92TDNkM2R5NWhjSEJzWlM1amIyMHZZMlZ5ZEdsbWFXTmhkR1ZoZFhSb2IzSnBkSGt2TUE0R0ExVWREd0VCL3dRRUF3SUhnREFRQmdvcWhraUc5Mk5rQmdzQkJBSUZBREFOQmdrcWhraUc5dzBCQVFVRkFBT0NBUUVBRGFZYjB5NDk0MXNyQjI1Q2xtelQ2SXhETUlKZjRGelJqYjY5RDcwYS9DV1MyNHlGdzRCWjMrUGkxeTRGRkt3TjI3YTQvdncxTG56THJSZHJqbjhmNUhlNXNXZVZ0Qk5lcGhtR2R2aGFJSlhuWTR3UGMvem83Y1lmcnBuNFpVaGNvT0FvT3NBUU55MjVvQVE1SDNPNXlBWDk4dDUvR2lvcWJpc0IvS0FnWE5ucmZTZW1NL2oxbU9DK1JOdXhUR2Y4YmdwUHllSUdxTktYODZlT2ExR2lXb1IxWmRFV0JHTGp3Vi8xQ0tuUGFObVNBTW5CakxQNGpRQmt1bGhnd0h5dmozWEthYmxiS3RZZGFHNllRdlZNcHpjWm04dzdISG9aUS9PamJiOUlZQVlNTnBJcjdONFl0UkhhTFNQUWp2eWdhWndYRzU2QWV6bEhSVEJoTDhjVHFBPT0iOwoJInB1cmNoYXNlLWluZm8iID0gImV3b0pJbTl5YVdkcGJtRnNMWEIxY21Ob1lYTmxMV1JoZEdVdGNITjBJaUE5SUNJeU1ERTJMVEEzTFRNd0lEQXlPalV6T2pFMElFRnRaWEpwWTJFdlRHOXpYMEZ1WjJWc1pYTWlPd29KSW5WdWFYRjFaUzFwWkdWdWRHbG1hV1Z5SWlBOUlDSXdOakprWTJKaU1qUTVNV0V5TWpZNVptVm1NalUxWkdNMFpXUmpPVFl5T0dVMU16YzVObUU1SWpzS0NTSnZjbWxuYVc1aGJDMTBjbUZ1YzJGamRHbHZiaTFwWkNJZ1BTQWlNVEF3TURBd01ESXlOalk0TURFMU1DSTdDZ2tpWW5aeWN5SWdQU0FpTkM0eElqc0tDU0owY21GdWMyRmpkR2x2YmkxcFpDSWdQU0FpTVRBd01EQXdNREl5TmpZNE1ERTFNQ0k3Q2draWNYVmhiblJwZEhraUlEMGdJakVpT3dvSkltOXlhV2RwYm1Gc0xYQjFjbU5vWVhObExXUmhkR1V0YlhNaUlEMGdJakUwTmprNE56SXpPVFEzTVRZaU93b0pJblZ1YVhGMVpTMTJaVzVrYjNJdGFXUmxiblJwWm1sbGNpSWdQU0FpUVVGR1FUTXdNalV0T1VVM05TMDBOalk1TFVJNE1FVXRRMFZCT1VSRU56RkZOek5HSWpzS0NTSndjbTlrZFdOMExXbGtJaUE5SUNJeE1EQXdNREVpT3dvSkltbDBaVzB0YVdRaUlEMGdJakV4TXpreE16ZzNNeklpT3dvSkltSnBaQ0lnUFNBaVkyOXRMbVpoYm5kbExteHBkbVVpT3dvSkluQjFjbU5vWVhObExXUmhkR1V0YlhNaUlEMGdJakUwTmprNE56SXpPVFEzTVRZaU93b0pJbkIxY21Ob1lYTmxMV1JoZEdVaUlEMGdJakl3TVRZdE1EY3RNekFnTURrNk5UTTZNVFFnUlhSakwwZE5WQ0k3Q2draWNIVnlZMmhoYzJVdFpHRjBaUzF3YzNRaUlEMGdJakl3TVRZdE1EY3RNekFnTURJNk5UTTZNVFFnUVcxbGNtbGpZUzlNYjNOZlFXNW5aV3hsY3lJN0Nna2liM0pwWjJsdVlXd3RjSFZ5WTJoaGMyVXRaR0YwWlNJZ1BTQWlNakF4Tmkwd055MHpNQ0F3T1RvMU16b3hOQ0JGZEdNdlIwMVVJanNLZlE9PSI7CgkiZW52aXJvbm1lbnQiID0gIlNhbmRib3giOwoJInBvZCIgPSAiMTAwIjsKCSJzaWduaW5nLXN0YXR1cyIgPSAiMCI7Cn0=';
  194. $m_config = load_auto_cache("m_config");
  195. $sdk_version_name = strim($_REQUEST['sdk_version_name']);
  196. if ($m_config['ios_check_version'] != ''){
  197. //请求验证
  198. $data = $this->acurl($receipt_data,0);
  199. //如果是沙盒数据 则验证沙盒模式
  200. if($data['status']=='21007'){
  201. //请求验证
  202. $data = $this->acurl($receipt_data, 1);
  203. }
  204. }else{
  205. //请求验证
  206. $data = $this->acurl($receipt_data, 0);
  207. }
  208. if ($data['status'] == 0)
  209. {
  210. $notice_sn = $data['receipt']['transaction_id'];
  211. $payment_notice = $GLOBALS['db']->getRow("select id from ".DB_PREFIX."payment_notice where notice_sn = '".$notice_sn."'");
  212. if($payment_notice)
  213. {
  214. $root['status'] = 1;
  215. $root['error'] = '支付成功';
  216. }else{
  217. $pay_id = $GLOBALS['db']->getOne("select id from ".DB_PREFIX."payment where class_name='Iappay'",true,true);
  218. $product_id = $data['receipt']['product_id'];
  219. $sql = "select id,money,name,iap_money,product_id,day_num from ".DB_PREFIX."vip_rule where product_id ='".$product_id."'";
  220. $rule = $GLOBALS['db']->getRow($sql,true,true);
  221. $payment_notice = array();
  222. $payment_notice['create_time'] = NOW_TIME;
  223. $payment_notice['user_id'] = $user_id;
  224. $payment_notice['payment_id'] = $pay_id;
  225. $payment_notice['money'] = $rule['iap_money'];
  226. $payment_notice['recharge_id'] = $rule['id'];
  227. $payment_notice['recharge_name'] = $rule['name'];
  228. $payment_notice['product_id'] = $rule['product_id'];
  229. $payment_notice['notice_sn'] = $notice_sn;
  230. $payment_notice['iap_receipt'] = print_r($data['receipt'],1);
  231. $payment_notice['diamonds'] = $rule['day_num'];
  232. $payment_notice['type'] = 1;
  233. $GLOBALS['db']->autoExecute(DB_PREFIX."payment_notice",$payment_notice,"INSERT","","SILENT");
  234. $notice_id = $GLOBALS['db']->insert_id();
  235. //if ($notice_id > 0){
  236. require_once APP_ROOT_PATH."system/libs/cart.php";
  237. $root = payment_paid($payment_notice['notice_sn'],$data['receipt']['original_transaction_id']);
  238. //}
  239. }
  240. }else
  241. {
  242. $root['status'] = 0;
  243. $root['error'] = print_r($data,1);
  244. }
  245. }
  246. ajax_return($root);
  247. }
  248. /**
  249. * 21000 App Store不能读取你提供的JSON对象
  250. * 21002 receipt-data域的数据有问题
  251. * 21003 receipt无法通过验证
  252. * 21004 提供的shared secret不匹配你账号中的shared secret
  253. * 21005 receipt服务器当前不可用
  254. * 21006 receipt合法,但是订阅已过期。服务器接收到这个状态码时,receipt数据仍然会解码并一起发送
  255. * 21007 receipt是Sandbox receipt,但却发送至生产系统的验证服务
  256. * 21008 receipt是生产receipt,但却发送至Sandbox环境的验证服务
  257. *
  258. Array
  259. (
  260. [receipt] => Array
  261. (
  262. [original_purchase_date_pst] => 2016-07-30 02:53:14 America/Los_Angeles
  263. [purchase_date_ms] => 1469872394716
  264. [unique_identifier] => 062dcbb2491a2269fef255dc4edc9628e53796a9
  265. [original_transaction_id] => 1000000226680150
  266. [bvrs] => 4.1
  267. [transaction_id] => 1000000226680150
  268. [quantity] => 1
  269. [unique_vendor_identifier] => AAFA3025-9E75-4669-B80E-CEA9DD71E73F
  270. [item_id] => 1139138732
  271. [product_id] => 100001
  272. [purchase_date] => 2016-07-30 09:53:14 Etc/GMT
  273. [original_purchase_date] => 2016-07-30 09:53:14 Etc/GMT
  274. [purchase_date_pst] => 2016-07-30 02:53:14 America/Los_Angeles
  275. [bid] => com.fanwe.live
  276. [original_purchase_date_ms] => 1469872394716
  277. )
  278. [status] => 0
  279. )
  280. );
  281. */
  282. private function acurl($receipt_data,$sandbox) {
  283. //正式购买地址 沙盒购买地址
  284. $url_buy = "https://buy.itunes.apple.com/verifyReceipt";
  285. $url_sandbox = "https://sandbox.itunes.apple.com/verifyReceipt";
  286. $url = $sandbox ? $url_sandbox : $url_buy;
  287. $ch = curl_init($url);
  288. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
  289. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
  290. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  291. curl_setopt($ch, CURLOPT_POST, true);
  292. curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(array("receipt-data" => $receipt_data)));//$this->encodeRequest());
  293. $response = curl_exec($ch);
  294. $errno = curl_errno($ch);
  295. $errmsg = curl_error($ch);
  296. curl_close($ch);
  297. if ($errno != 0) {
  298. //throw new Exception($errmsg, $errno);
  299. $data = array();
  300. $data['status'] = $errno;
  301. $data['error'] = $errmsg;
  302. return $data;
  303. }else{
  304. return json_decode($response,1);
  305. }
  306. }
  307. //获取字符串类型的钱数值,如果有小数位≠0则省略小数位,否则保留
  308. public function get_money_name($money){
  309. if(ceil($money)>intval($money)){
  310. $money_name = (string)$money;
  311. }else{
  312. $money_name = (string)intval($money);
  313. }
  314. return $money_name;
  315. }
  316. }