php版银联支付接口开发简明教程

2025-05-29 0 99

本文实例讲述了php银联支付接口开发的方法。分享给大家供大家参考,具体如下:

支付接口现在有第三方的支付接口也有银行的支付接口。这里就来介绍php版本银联支付接口开发的方法。

银联支付,首先要注意二重要的部分:

PHP运行环境是5.4.18以上

开了扩展openssl

开发手册上面的列子只做参考,因为基本都是错的。你可以试着去官网下一个demo。。。注意现在银联开发,没有测试密钥提供,只能在正式环境开发

下面是我用ThinkPHP编写的一个支付类

?

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
/**

* 银联支付 v0.1

* @auther:Summer<dengwz7788@gmail.com>;

* @date:20151202

* **/

class NetPayAction extends BaseAction{

//在类初始化方法中,引入相关类库

public function _initialize() {

header("Content-type:text/html;charset=utf-8");

vendor('Netpay.util.common',"",".php"); //导入加密核心文件夹

vendor('Netpay.util.SecssUtil',"",".class.php"); //导入加密核心文件夹

vendor('Netpay.util.Settings_INI',"",".php"); //导入加密核心文件夹

vendor('Netpay.util.Settings',"",".php"); //导入加密核心文件夹

$this-&gt;securityPropFile= $_SERVER['DOCUMENT_ROOT'] . "/ThinkPHP/Extend/Vendor/Netpay/config/security.properties"; //谁知道这是啥,反正他们要我加的

$this->b2cPaySend = __APP__."/Index/NetPay/b2cPaySend";

$this-&gt;b2cRefundSend = __APP__."/Index/NetPay/b2cRefundSend";

$this->b2cQuerySend = __APP__."/Index/NetPay/b2cQuerySend";

$this->;MerBgUrl = __APP__."/Index/NetPay/MerBgUrl";

$this->MerPageUrl = __APP__."/Index/NetPay/MerPageUrl";

}

public function index()

{

$paramArray=array (

'MerId' => '商户号',

'MerOrderNo' => '0000001944663232',

'OrderAmt' => '1',

'TranDate' => '20151219',

'TranTime' =>'171248',

'TranType' => '0001',

'BusiType' =>'0001',

'Version' => '20140728',

'CurryNo' => 'CNY',

'AccessType' =>; '0',

'CommodityMsg' => '测试商品1号',

'MerPageUrl' => $this-&gt;MerBgUrl,

'MerBgUrl' =>$this-&gt;MerPageUrl,

'MerResv' => 'MerResv',

);

if (count($paramArray) >0) {

$dispatchUrl = $this->b2cPaySend;

$transResvedJson = array();

$cardInfoJson = array();

$sendMap = array();

foreach ($paramArray as $key => $value) {

if (isEmpty($value)) {

continue;

}

if (startWith($key, "trans_")) {

$key = substr($key, strlen("trans_"));

$transResvedJson[$key] = $value;

} else

if (startWith($key, "card_")) {

$key = substr($key, strlen("card_"));

$cardInfoJson[$key] = $value;

} else {

$sendMap[$key] = $value;

}

}

$transResvedStr = null;

$cardResvedStr = null;

if (count($transResvedJson) >0) {

$transResvedStr = json_encode($transResvedJson);

}

if (count($cardInfoJson) &gt; 0) {

$cardResvedStr = json_encode($cardInfoJson);

}

$secssUtil = new SecssUtil();

if (! isEmpty($transResvedStr)) {

$transResvedStr = $secssUtil->decryptData($transResvedStr);

$sendMap["TranReserved"] = $transResvedStr;

}

if (! isEmpty($cardResvedStr)) {

$cardResvedStr = $secssUtil->decryptData($cardResvedStr);

$sendMap["card_"] = $cardResvedStr;

}

$securityPropFile = $this>securityPropFile;

$secssUtil->init($securityPropFile);

$secssUtil->sign($sendMap);

$sendMap["Signature"] = $secssUtil->getSign();

$_SESSION = $sendMap;

header("Location:" . $dispatchUrl);

}

}

public function b2cPaySend(){

layout(false);

$settings = new Settings_INI();

$settings->oad($this->securityPropFile);

$pay_url = "https://payment.chinapay.com/CTITS/service/rest/page/nref/000000000017/0/0/0/0/0";

$html = "<form name='payment' action='{$pay_url}' method='POST' target='_blank'>;";

$params = "TranReserved;MerId;MerOrderNo;OrderAmt;CurryNo;TranDate;SplitMethod;BusiType;MerPageUrl;MerBgUrl;SplitType;MerSplitMsg;PayTimeOut;MerResv;Version;BankInstNo;CommodityMsg;Signature;AccessType;AcqCode;OrderExpiryTime;TranType;RemoteAddr;Referred;TranTime;TimeStamp;CardTranData";

foreach ($_SESSION as $k =>$v) {

if (strstr($params, $k)) {

$html .= "<input type='hidden' name = '" . $k . "' value ='" . $v . "'/>";

}

}

$html .= "<nput type='button' type='hidden' value='提交订单' >";

$html .= "<;/from>";

$this->html = $html;

$this->display();

}

public function pgReturn(){

if ($_POST) {

if (count($_POST) > 0) {

$secssUtil = new SecssUtil();

$securityPropFile = $this>securityPropFile;

$secssUtil->init($securityPropFile);

$text = array();

foreach($_POST as $key=>$value){

$text[$key] = urldecode($value);

}

if ($secssUtil->verify($text)) {

//支付成功

$_SESSION["VERIFY_KEY"] = "success";

} else {

//支付失败

$_SESSION["VERIFY_KEY"] = "fail";

}

}

}

}

}

银联支付应该是算比较简单的!!

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

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 php版银联支付接口开发简明教程 https://www.kuaiidc.com/96875.html

相关文章

发表评论
暂无评论