PayService.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <?php
  2. /**
  3. *支付service
  4. */
  5. $path = Yii::getPathOfAlias('application');
  6. require_once($path.'/vendors/pingpp/init.php');
  7. $api_key = Yii::app()->params['pingxx_api_key'];
  8. \Pingpp\Pingpp::setApiKey($api_key);
  9. class PayService extends Service{
  10. public $app_id = 'app_DWzTOGyjD4eLGqfT';
  11. /**
  12. * @param $channel 第三方支付渠道,取值范围:
  13. * alipay:支付宝手机支付
  14. * alipay_wap:支付宝手机网页支付
  15. * alipay_qr:支付宝扫码支付
  16. * apple_pay:Apple Pay
  17. * bfb:百度钱包移动快捷支付
  18. * bfb_wap:百度钱包手机网页支付
  19. * upacp:银联全渠道支付(2015年1月1日后的银联新商户使用。若有疑问,请与 ping++ 或者相关的收单行联系)
  20. * upacp_wap:银联全渠道手机网页支付(2015年1月1日后的银联新商户使用。若有疑问,请与 ping++ 或者相关的收单行联系)
  21. * upmp:银联手机支付(限个人工作室和2014年之前的银联老客户使用。若有疑问,请与 ping++ 或者相关的收单行联系)
  22. * upmp_wap:银联手机网页支付(限个人工作室和2014年之前的银联老客户使用。若有疑问,请与 ping++ 或者相关的收单行联系)
  23. * wx:微信支付
  24. * wx_pub:微信公众账号支付
  25. * wx_pub_qr:微信公众账号扫码支付
  26. * @param $amount 订单金额
  27. */
  28. public function pay($channel,$amount,$order_no,$subject,$body,$openid = ''){
  29. if (empty($channel) || empty($amount)) {
  30. return false;
  31. }
  32. $channel = strtolower($channel);
  33. $orderNo = $order_no;
  34. //$extra 在使用某些渠道的时候,需要填入相应的参数,其它渠道则是 array() .具体见以下代码或者官网中的文档。其他渠道时可以传空值也可以不传。
  35. $extra = array();
  36. switch ($channel) {
  37. case 'alipay_wap':
  38. $extra = array(
  39. 'success_url' => 'http://common.yiguanjia.me/success',
  40. 'cancel_url' => 'http://common.yiguanjia.me/cancel'
  41. );
  42. break;
  43. case 'upmp_wap':
  44. $extra = array(
  45. 'result_url' => 'http://www.yourdomain.com/result?code='
  46. );
  47. break;
  48. case 'bfb_wap':
  49. $extra = array(
  50. 'result_url' => 'http://www.yourdomain.com/result?code=',
  51. 'bfb_login' => true
  52. );
  53. break;
  54. case 'upacp_wap':
  55. $extra = array(
  56. 'result_url' => 'http://www.yourdomain.com/result?code='
  57. );
  58. break;
  59. case 'wx_pub':
  60. $extra = array(
  61. 'open_id' => $openid
  62. );
  63. break;
  64. case 'wx_pub_qr':
  65. $extra = array(
  66. 'product_id' => 'Productid'
  67. );
  68. break;
  69. }
  70. try {
  71. $ch = \Pingpp\Charge::create(
  72. array(
  73. "subject" => $subject,//商品的标题,该参数最长为 32 个 Unicode 字符。
  74. "body" => $body,//商品的描述信息,该参数最长为 128 个 Unicode 字符
  75. "amount" => $amount,
  76. "order_no" => $orderNo,
  77. "currency" => "cny",
  78. "extra" => $extra,
  79. "channel" => $channel,
  80. "client_ip" => $_SERVER["REMOTE_ADDR"],
  81. "app" => array("id" => $this->app_id)
  82. )
  83. );
  84. return $ch;
  85. } catch (\Pingpp\Error\Base $e) {
  86. header('Status: ' . $e->getHttpStatus());
  87. echo $e->getHttpBody();
  88. die();
  89. // return false;
  90. }
  91. }
  92. public function retrieve($charge_id){
  93. $ch = \Pingpp\Charge::retrieve($charge_id);
  94. return $ch;
  95. }
  96. }
  97. ?>