TradeReverseScan.php 4.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <?php
  2. //交易被扫(B扫C)
  3. header("Content-type: text/html; charset=utf-8");
  4. require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'AopClient.php';
  5. $privateKey = "MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAI6aysW0U9OcTN+kn+EOXlE4MHHDiL0THc2aYb83sDX5vLTfbNlmAsul02HzLmi2MVjQTfs3KvgUYoVFJK4OJOTy9/Hem/oiZLVHGOODip1Uch+qEJ4HRnZk+4EPcZuPyEcUS1dmrz6awAW7/llCOJWGCzlZYGOHngthZK6b5337AgMBAAECgYAEqku37A5R/esF5fzVAANV5OCw2BTBGr7+2u4Xs1qwaVsjD6wf8JZm0yX3Ll12T3+NyELE1SkytHgEpB5vE0dhqW0BEft+Z0RWERxyszAbW2y/lk23rN0TMefmxbGUYR2CJF1x5cGv0Cl+s8RtJ/3OcpNmiZoystRvWhMbySClAQJBAN3ewdzK5i/T/kXXEmNkptQO0AI0eNdj9v0s2NWIDj7q7yE8OK7U4cPv+E7qvzq3IrJATwRFJUzZ4xsqAvLjTOUCQQCkio+mhoY+p/VmNeYvGMNz9RnMevQplhKhtMj9sPI/cfg0EEhdoktsoG1Gfnn6u+dRqVl/DGa0LuHEBmODO9FfAkAIIAA5dbS4S6skI5wox6bUXTaA3isOuDpzSxElwLXE2BWpwerRfDpIUqFlQnN+UvaSUIiUP3P+PHx0ojU5b9mBAkBZ8m0IyW1FfyeFUl2czVq7XvdVcrlaqnFQ+LUPCdXDnRfjzirhFMFKhoB2Etm3mVSgrYUBENRsF1zPffaUXPTdAkBsy1U3YULc1lbgIZoa5N+nn60IbEuLkcW22DM+GGS+BejCR4cGF/4NPw6yVLEikGGxvaX6jg+/jAoF0GDlYmVH";
  6. $sxfPublic =
  7. "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCOmsrFtFPTnEzfpJ/hDl5RODBxw4i9Ex3NmmG/N7A1+by032zZZgLLpdNh8y5otjFY0E37Nyr4FGKFRSSuDiTk8vfx3pv6ImS1Rxjjg4qdVHIfqhCeB0Z2ZPuBD3Gbj8hHFEtXZq8+msAFu/5ZQjiVhgs5WWBjh54LYWSum+d9+wIDAQAB";
  8. $aopClient = new AopClient();
  9. $array = [
  10. //业务参数
  11. "mno"=> "399190910000387", //商户编号
  12. "ordNo"=> time(), //商户订单号
  13. //"subMechId"=> "", //子商户号
  14. //"subAppid"=> "", //微信 subAppId
  15. "amt"=> "0.02", //订单总金额
  16. "authCode"=> "28763400000664394", //授权码
  17. //"discountAmt"=> "", //参与优惠金额
  18. //"unDiscountAmt"=> "", //不参与优惠金额
  19. "payType"=> "WECHAT", //支付渠道
  20. "scene"=> "3", ////支付场景,1: 刷卡 2:声波 3:刷脸 不上传默认为 1
  21. "subject"=> "B扫C测试",
  22. "tradeSource"=> "01", //交易来源 01服务商,02收银台,03硬件
  23. "trmIp"=> "127.0.0.1",
  24. //"hbFqNum"=> "6", //花呗分期数,仅可上送 6 或 12
  25. //"hbFqPercent"=> "0", //卖家承担分期 服务费比例,仅支持上送 0 或 100
  26. //"limitPay"=> "00", //限制卡类型: 00-全部 01-限定不能使 用信用卡支付 默认值 00
  27. //"timeExpire"=> "10", //订单失效时间
  28. //"goodsTag"=> "00", //订单优惠标识 00:是,01: 否
  29. //"couponDetail"=> "", //优惠详情信息,见下面三个字段
  30. //"costPrice"=> "200", //订单原价保留两 位小数;微信 独有
  31. //"receiptId"=> "123456789", //商品小票
  32. //"goodsDetail"=> "123456789", //单品优惠信息使用 json 数组格式提交
  33. //"goodsId"=> "200", //商品编码
  34. //"thirdGoodsId"=> "12345678", //微信/支付宝侧商品码
  35. //"goodsName"=> "苹果电脑", //商品名称
  36. //"quantity"=> "1", //商品数量
  37. //"price"=> "1.01", //商品单价
  38. //"goodsCategory"=> "", //商品类目;支 付宝独有
  39. //"categoriesTree"=> "124868003|126232002|126252004", //商品类目树
  40. //"goodsDesc"=> "", //商品描述;支 付宝独有
  41. //"showUrl"=> "", //商品展示地址 url;支付宝独有
  42. //"needReceipt"=> "00", //电子发票功能 微信开具电子 发票使用
  43. //"ledgerAccountFlag"=> "00", //是否做分账 分账交易使 用;00:做; 01:不做;不传默认为不做分账
  44. //"ledgerAccountEffectTime"=> "00", //分账有效时间 单位为天;是 否做分账选择 00 时该字段必传
  45. //"notifyUrl"=> "", //回调地址
  46. //"ylTrmNo"=> "", //银联终端号
  47. //"terminalId"=> "", //TQ机具编号
  48. //"deviceNo"=> "", //设备号
  49. //"identityFlag"=> "", //是否是实名支付
  50. //"buyerIdType"=> "IDCARD", //证件类型
  51. //"buyerIdNo"=> "410523198701054018", //证件号
  52. //"buyerName"=> "张三", //买家姓名
  53. //"mobileNum"=> "", //手机号
  54. //"extend"=> "" //备用
  55. ];
  56. $reqBean = [
  57. "orgId" =>"26680846",
  58. "reqData"=>$array,
  59. "reqId" => time(),
  60. "signType" => "RSA",
  61. "timestamp" => date("Y-m-d h:i:s"),
  62. "version" => "1.0",
  63. ];
  64. $signContent = $aopClient->generateSign($reqBean,$privateKey);
  65. $sign =["sign" => $signContent];
  66. $reqStr = array_merge($reqBean, $sign);
  67. $reqStr = json_encode($reqStr,320);
  68. $requestUrl = 'https://openapi-test.tianquetech.com/order/reverseScan';
  69. $resp = $aopClient->curl($requestUrl, $reqStr);
  70. $result = json_decode($resp,320);
  71. print_r($result);
  72. $signResult = $result["sign"];
  73. // result.remove("sign");
  74. unset($result["sign"]);
  75. // String resultStr = RSASignature.getOrderContent(result);
  76. //sign
  77. /// String resultSign = RSASignature.encryptBASE64(RSASignature.sign(signContent, privateKey));
  78. $signContent = $aopClient->getSignContent($result);
  79. $verify = $aopClient->verify($signContent, $signResult,$sxfPublic);
  80. //组装加密串
  81. if ($verify) {
  82. echo("验签成功");
  83. }else{
  84. echo("验签失败");
  85. }
  86. ?>