PHP实现app唤起支付宝支付代码

本文主要和大家分享PHP实现app唤起支付宝支付代码,希望能帮助到大家。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

// 获取 支付宝app 支付字符串

publicfunctionalipay_params_data(){

$data=$this->ApiData();//获取数据

if(!$data['out_trade_no']){

systemmess('0','参数错误');

}

$out_trade_no=$data['out_trade_no'];

$_biz_data=array();

$_biz_data['body'] =$oid_body;

$_biz_data['subject'] =$subject;

$_biz_data['out_trade_no'] =$out_trade_no;

$_biz_data['timeout_express'] ="30m";

$_biz_data['total_amount'] =$price;

//$_biz_data['total_amount'] = '0.01';

$_biz_data['product_code'] ='QUICK_MSECURITY_PAY';

$_biz_data['passback_params'] =$_type;

/*

$bizcontent = "{\"body\":\"".$order_info['data']['oid_body']."\","

. "\"subject\": \"".$order_info['data']['oid_title']."\","

. "\"out_trade_no\": \"".$order_info['data']['oid']."\","

. "\"timeout_express\": \"30m\","

. "\"total_amount\": \"".$order_info['data']['oid_price']."\","

. "\"product_code\":\"QUICK_MSECURITY_PAY\","

. "\"passback_params\":\"".$_type."\""

. "}";

*/

$bizcontent= json_encode($_biz_data);

$alipay_config= C('ALIPAY_CONFIG');

//异步通知地址

$return_url='http://'.$_SERVER['HTTP_HOST'].''.U('Appreturn/notify_alipay');

//配置信息

Vendor('alipay-appsdk.aop.AopClient');

Vendor('alipay-appsdk.aop.request.AlipayTradeAppPayRequest');

$aop=new\AopClient();

$aop->gatewayUrl ="https://openapi.alipay.com/gateway.do";

$aop->appId =$alipay_config['app_id'];

$aop->rsaPrivateKey =$alipay_config['merchant_private_key'];

$aop->format ="json";

$aop->charset ="UTF-8";

$aop->signType ="RSA";

$aop->alipayrsaPublicKey =$alipay_config['alipay_public_key'];

//实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay

$request=new\AlipayTradeAppPayRequest();

//SDK已经封装掉了公共参数,这里只需要传入业务参数

$request->setNotifyUrl($return_url);

$request->setBizContent($bizcontent);

//这里和普通的接口调用不同,使用的是sdkExecute

$response=$aop->sdkExecute($request);

//htmlspecialchars是为了输出到页面时防止被浏览器将关键参数html转义,实际打印到日志以及http传输不会有这个问题

// echo ;//就是orderString 可以直接给客户端请求,无需再做处理。

// json_echo(1,"ok",array('text'=>htmlspecialchars($response)));exit;

$json['msg'] ='1';

$json['state'] ='1';

$json['text'] =$response;

$json['return_url'] =$return_url;

// $json['alipay_config'] =$alipay_config;

// $json['aop'] =$request;

echojson_encode($json);exit;

//json_echo(1,"ok",array('text'=>$response,'return_url'=>$return_url));exit;

}

//异步通知地址

publicfunctionnotify_alipay(){

$alipay_config= C('ALIPAY_CONFIG');

$_post_data=$_POST;

$_sign_type=$_post_data['sign_type'];

$_sign=$_post_data['sign'];

S('zfbpost'.time(),$_POST);

M('log')->add(array('title'=>'支付宝','content'=>json_encode($_POST)));

// unset($_get_data['sign']);

// unset($_get_data['sign_type']);

Vendor('alipay-appsdk.aop.AopClient');

$aop=new\AopClient();

$aop->alipayrsaPublicKey =$alipay_config['alipay_public_key'];

//$result = $aop->rsaCheckV1($_post_data, NULL, "RSA2");

//$result = $aop->rsaCheckV1($_post_data, NULL, "RSA");

$result=$aop->rsaCheckV1($_post_data, NULL,"RSA");

// $result = true;

if($result){

//print_r($_post_data);

$_type=$_post_data['passback_params'];

//商户订单号

$out_trade_no=$_post_data['out_trade_no'];

//支付宝交易号

$trade_no=$_post_data['trade_no'];

//交易状态

$trade_status=$_post_data['trade_status'];

//已下修改订单信息

/* if($_post_data['trade_status'] == 'TRADE_FINISHED'){

$this->edit_order_info($_type,$out_trade_no,$_post_data['trade_no'],$_post_data['gmt_payment'],$_post_data['total_amount'],'alipay',$_post_data);

//注意:

//退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态通知

}elseif($_post_data['trade_status'] == 'TRADE_SUCCESS'){

$this->edit_order_info($_type,$out_trade_no,$_post_data['trade_no'],$_post_data['gmt_payment'],$_post_data['total_amount'],'alipay',$_post_data);

//注意:

//付款完成后,支付宝系统发送该交易状态通知

} */

//——请根据您的业务逻辑来编写程序(以上代码仅作参考)——

echo"success";//请不要修改或删除

}else{

// 验证失败

echo"fail".json_encode($result);//请不要修改或删除

}

// F('APP_ALIPAY_POST_'.$_POST['passback_params'].'_'.time(),array($_post_data,$result));

}