CppayapplyDirectpaymentV2Test.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. <?php
  2. // 直接支付 工行e企付支付申请-同步支付
  3. include_once '../DefaultIcbcClient.php';
  4. include_once '../IcbcConstants.php';
  5. $request = array(
  6. "serviceUrl" => 'https://apipcs3.dccnet.com.cn/api/mybank/pay/cpay/cppayapply/V2',
  7. "method" => 'POST',
  8. "isNeedEncrypt" => false,
  9. "biz_content" => array(
  10. "agreeCode" => "0160200238060410006041000000001490", // 合作方协议编号
  11. "partnerSeq" => "20121557354523885519", // 交易流水号
  12. "payChannel" => "1", // 渠道类型;1-PC端 2-移动端
  13. "internationalFlag" => "1", // 境内外标志 1-境内 2-境外
  14. "payMode" => "1", // 直接支付
  15. // "reservDirect" => "1", // 保留支付时上送(纯票据保留时无需上送),1-付方保留,2-收方保留(收方保留时,收款账号仅支持工行往来户),境内外币只支持付方保留
  16. // "operType" => "", // 操作类型
  17. "payEntitys" => "1001", // 1000第一位1代表现金第二位1代表票据
  18. "asynFlag" => "0", // 0代表同步支付 1:代表异步支付
  19. // "logonId"=>"001",//企网登录ID 当异步支付需要指定提交人时才上送(预留字段,本期暂不支持)
  20. // "payerAccno" => "1202027209100017281", // 付款人账号 异步支付、安心账户退款时必须送账号;保证支付, 如果是采用平台方验证,必须上送付方保证金主账号;其他场景如果送,则为指定账号支付。
  21. // "payerAccname" => "埋赏冒了神饥祺铜搭洪坏检苹职悟", // 付款人户名 付款人账号输入,付款人户名必须同时输入。付款人户名可单独输入,单独输入时,开启户名校验。
  22. // "payerFeeAccno"=>"",//付方付费账号 境外支付时上送。上送时,则取该账号付手续费;若不上送,则取付方账号付手续费。付方付费账号、付方付费账号户名、付方付费账号币种同时上送或者都不上送.
  23. // "payerFeeAccName"=>"",//付方付费账号户名
  24. // "payerFeeCurr"=>"",//付方付费账号币种
  25. "payMemno" => "160290000612012", // 客户编号
  26. // "orgcode" =>"",//付款人组织机构代码 境内外币、境外必须上送。统一社会信用证的第九-十七位。
  27. "orderCode" => "207802999501", // 订单号
  28. "orderAmount" => "20", // 订单金额 单位分 仅用于展现,本次应支持金额以sumPayamt为准
  29. "orderCurr" => "001", // 币种 001人民币
  30. "sumPayamt" => "20", // 订单汇总金额 单位分
  31. // "orderRemark" => "测试", // 订单备注 当需要打印在回单信息中时上送
  32. // "rceiptRemark" => "测试", // 回单补充信息备注 当需要打印在回单信息中时上送
  33. // "purpose" => "", // 用途 当需要打印在回单信息中时上送
  34. // "summary" => "", // 摘要 当需要打印在回单信息中时上送
  35. "submitTime" => "20220321084307", // 提交时间
  36. "returnUrl" => "", // 支付成功后跳转连接
  37. "callbackUrl" => "https://gyj1.dccnet.com.cn/epay/NotifyUrlServlet.php", // 回调通知地址
  38. // "agreementId"=>"",//合同号 境内外币必须上送,境外支付时上送,三单号不能都上送为空, Ascii字符集,不能有中文和全角字符
  39. // "invoiceId"=>"",//发票号 境外支付时上送,境内外币必须上送,Ascii字符集,不能有中文和全角字符
  40. // "manifestId"=>"",//报关单号 境外支付时上送
  41. // "agreementImageId"=>"",//影像批次号 境内外币必须上送,境外支付时上送
  42. // "enterpriseName"=>"",//付款方企业名称 境内外币支付时上送,保证支付、担保支付时上送付款人会员名称
  43. // "payRemark"=>"",//支付信息备注
  44. // "bakReserve1"=>"",//境外交易特殊标志 网金部e链通专用,境外交易特殊标志。
  45. // "bakReserve2"=>"",//备用字段2
  46. // "bakReserve3"=>"",//备用字段3
  47. // "partnerSeqOrigin"=>"201212221215202104",//原合作方支付流水号(待启用,退款时使用)
  48. // "sumPayamtOrigin"=>"",//原汇总支付金额(备用字段) 待启用
  49. // "reporterName"=>"",//填报人
  50. // "reporterContact"=>"",//填报人电话
  51. // "identityMode"=>"",//认证模式 1-免认证,0或空-其他;仅退款时使用,安心账户退款时必须上送1。使用免认证退款前需与工行签订相关协议,具体咨询客户经理。
  52. // "payerPhone" => "", // 付款人手机号 11位手机号,线下异步支付时上送、线下异步支付:将收方信息推送给付款人手机号,付款人通过网银、柜面等渠道支付后自动关联订单为成功。使用线下异步支付前需与工行签订相关协议,具体咨询客户经理。
  53. // "payerWalletId"=>"",//付款人钱包ID 待启用 数字人名币专用
  54. // "payerWalletName"=>"",//付款人钱包名称 待启用 数字人名币专用
  55. // "batchNo"=>"",//批次号 批量支付必送。
  56. // "repetCard"=>"",//财智卡重用标志 财智卡重用模式下使用,重用模式1,其他模式0
  57. "goodsList" => array(
  58. array(
  59. "goodsSubId" => "0968", // 商品信息子序号
  60. "goodsName" => "测试商品", // 商品名称
  61. "payeeCompanyName" => "饮豆另增古技号午娇缝乓忘嘴易", // 收款人户名
  62. "goodsNumber" => "1", // 商品数量
  63. "goodsUnit" => "个", // 商品单位
  64. "goodsAmt" => "10" // 商品金额 单位分
  65. ),
  66. array(
  67. "goodsSubId" => "0967", // 商品信息子序号
  68. "goodsName" => "测试商品2", // 商品名称
  69. "payeeCompanyName" => "饮豆另增古技号午娇缝乓忘嘴易", // 收款人户名
  70. "goodsNumber" => "1", // 商品数量
  71. "goodsUnit" => "个", // 商品单位
  72. "goodsAmt" => "10" // 商品金额 单位分
  73. )
  74. ),
  75. "payeeList" => array(
  76. array(
  77. "mallCode" => "1602001009005410261", // 收方商户号 支付时必输,退款时非必输
  78. // "mccCode" => "", // 商户类别(MCC码)
  79. // "mccName" => "", // MCC码名称
  80. // "businessLicense" => "", // 商户证件编号
  81. // "businessLicenseType" => "", // 商户证件类型
  82. "mallName" => "test", // 担保支付、保证支付上送收方会员名称
  83. "payeeCompanyName" => "氮油货(饮豆)车巫褪辛乓忘嘴易", // 收款人户名
  84. "payeeSysflag" => "1", // 境内外标志 1:境内工行,2:境内他行,3:境外
  85. // "payeeBankCode" => "", // 收方行联行号 当收方为境内他行(payeeSysflag = 2)时上送,退款时不用上送。联行行号请合作方自行查询或联系客户经理。
  86. // "payeeHeadBankCode" => "", // 收方行总行行号 暂未启用
  87. "payeeAccno" => "1202020409900065243", // 收款人账号 担保支付、保证支付时上送会员号绑定的结算账号
  88. "payAmount" => "20" // 收款金额(单位:分)
  89. // "rbankname" => "", // 收款行全称 当收方为境外时必须上送
  90. // "payeeBankCountry" => "", // 收款行所在国家地区代码 当收方为境外时必须上送
  91. // "payeeBankSign" => "", // 收款行标识 当收方为境外时必须上送
  92. // "payeeCountry" => "", // 收款人常驻国家/地区 当收方为境外时必须上送
  93. // "payeeAddress" => "", // 收款人地址 境外非加拿大时必须上送
  94. // "racaddress1" => "", // 收款人地址(国家) 境外加拿大时必须上送
  95. // "racaddress2" => "", // 收款人地址(省/州) 加拿大地区必输
  96. // "racaddress3" => "", // 收款人地址(城市/城镇) 加拿大地区必输
  97. // "racaddress4" => "", // 收款人地址(街/路) 加拿大地区必输
  98. // "racpostcode" => "", // 收款人地址(邮编) 加拿大地区必输
  99. // "agentbic" => "", // 收款行之代理行BIC码(境外支付才上送)
  100. // "payeePhone" => "", // 收款人手机号
  101. // "payeeOrgcode" => "", // 收款人组织机构代码 境内外币必须上送
  102. // "receivableAmount" => "", // 应收金额(单位:分) 担保支付专用,指本订单orderCode收方应收金额。
  103. // "payeeWalletId" => "", // 收款人钱包ID 支持数字人民币支付时上送
  104. // "payeeWalletName" => "" // 收款人钱包名称 支持数字人民币支付时上送
  105. )
  106. )
  107. )
  108. );
  109. $appId = "10000000000000225069";
  110. $privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDPUsAxVOs46x7u
  111. mfJDcw98UfPhD+/ZoFcJs4WqhoqWeLbSNHDOTFc+7r5qsWoTPiuaJdcxQbIF0bOT
  112. lvIXXFNivTZy35aAQUpzILsPIVd0+Z+pCR2mosZkl8qhRk+5mGtc3OlzGvkGGnxx
  113. O2fKxtwIRdEUaAnqg/k+8kSN3k8p9sXbJD9+r3imIvkswuGTEoEk0ARg3YSmlSTT
  114. P0UqksT5/MQN3rZYDlE0baPCB2pKcTDncsNhvgwjGmI7fMyBB1tV0jGfaGq1IcGy
  115. fY5WUcIaiveYUq5Gta6+9J/B333hztCCWdtbM+YoI4UpMcV5B1056P3X1hPRbCri
  116. Id5uI4sXAgMBAAECggEAdluBiSg3mSjxYbnVSphXUNvgZK4aeZ1F0y3/sxhX6gtE
  117. I8D4XW3LqQvW/UYHjrDBZ6EOtvoQTa4n3KwhzSBSIl5uxSnL27BqdktLPxoDua4A
  118. bhncKZNnu2nErklbnlLbiAo95A6T994LCQGnAWaBmt9wuzuh3ZY2Jq9cX7l4bDWD
  119. 3OaKLER56n8KgMM0hyUffm2+ediCVy0CfL/50gscWLQKrDx52uohtgORw4OiAzx/
  120. YwgnnvSAgXQK21ChDcN5GQA5hZOeFMRY0vshSiA6/Zz8GvHfa4u/fEWVpZhsJrow
  121. 97Fk3he8NHc9M6mLIxKeGFLknpkNHgDZXqCD5vvVwQKBgQDauoRR8EAjU+jjZDUi
  122. 5qyPXSUELthqMbn4oHT33pgjSvQgoLfMtn95FHgFZJjEZfAnKgNSjFddPqB6vy0d
  123. PLXRSyqG0b+ap+f2e2kuNnbngijCO9WWDdpU1k7e/Lvo5Ohgz0ODAxRqrst+QqmW
  124. 5C6nt+g0Il4ctdoUQ3oBeWTc8QKBgQDyprRvGqThXSsJ64wpiPUKieZ+562FFwZE
  125. pBU1Sy3PS9EfroQa2/NlL5eiLPOOpmY5tUhIyNZzL7YE4n+iI/pZFpC23+gz4Qjt
  126. sQnBGXQn+D7H181B119jUt/mYZwM3zAy9DJal4+q52LvmluT95/eTyhYD46vEGr3
  127. 0axSGcOIhwKBgDRx+Hw1IQvXeMXdJyiBKusNKG0CVn3QAols3973Dn+X30Vbg/af
  128. 45zCnaydXEvrLVQWrMlEQUZoV85WvJiAEBBo939wF4Mbs3DUUnn0MTp9aQx5kFL0
  129. a19gK3UoIF5NVLKxv7xQJrsVwlE55rP5bn5kiFbHzs0PhYTKURy9YMPhAoGAVkeO
  130. at8Xd4bQUeOuX+px7wBftAoe+e7Y7LlHTT7hGA+GWXSNRpuk7PrCOQkwxS1HtgdO
  131. n4rCLgzt9Miwx29xihHq/Quani/LI/FKXZ32Xmv3rsl+E4ZIRaHnORzGBxGpKsUH
  132. zoyLqiJCXJ4PKArpjnupBb7qZjc5QcsNMdg1XasCgYEAv6SkwgcRCVliGtphJVxg
  133. xODkI+YOufnDGpD5OGECY0/O5FQ8u4PzvQ5FuOBElJzpbKmDqKqMX2UsgpvPzyT2
  134. 2JtW0Xpo/UiApIyuUuF5CxIvxfsD3VSjC7MrmqBCEU/iRdQv11alFRg4KOXZXst6
  135. oclGtrgSiI3n3kJ2Xy3oO38=";
  136. $icbcPublicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB";
  137. // 以下构造函数第1个参数为appid,第2个参数为RSA密钥对中私钥,第6个参数为API平台网关公钥
  138. $client = new DefaultIcbcClient($appId, $privateKey, IcbcConstants::$SIGN_TYPE_RSA2, '', '', $icbcPublicKey, '', '', '', '');
  139. $resp = $client->execute($request, '2022020715103429955', ''); // 执行调用;msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
  140. echo $resp;
  141. $respObj = json_decode($resp, true);
  142. if ($respObj["return_code"] == 0) { // sucess
  143. $url = 'location:' . $respObj["redirectParam"];
  144. header($url); // 跳转支付页面
  145. } else { // fail
  146. echo $respObj["return_msg"];
  147. }
  148. // 正常返回示例:{"transOk":0,"orderCurr":"001","payMode":1,"return_msg":"","sumPayamt":"20","agreeName":"测试1121","serialNo":"","agreeCode":"0160200010060410006041000000000881","orderAmount":"20","redirectParam":"https://cpay3.dccnet.com.cn/corporpay/servlet/ICBCCPayBusinessServlet?unique_serialno=2022022508485493300000000001723002&signstr=8792F12FE32CCB3312A40477854BD4DC25ED8C51D8405A7FF784B98A9ABA7B1FD5CEBBF7FCE625D2","partnerSeq":"201212221215202102","return_code":0,"status":1}
  149. ?>